Questions fréquentes et dépannage

Cet article contient des questions fréquentes à propos d'Identity-Aware Proxy (IAP).

Quelles applications puis-je sécuriser avec IAP ?

IAP peut être utilisé avec :

  • les applications dans les environnements standard et flexible App Engine ;
  • Les instances Compute Engine avec des services de backend d'équilibrage de charge HTTP(S)
  • les conteneurs Google Kubernetes Engine.
  • Applications Cloud Run avec des services de backend d'équilibrage de charge HTTP(S)

IAP n'est pas compatible avec Cloud CDN pour le moment.

Pourquoi y a-t-il un symbole "#" à la fin de mon URL après la connexion à mon application ?

Dans certains navigateurs et dans certaines conditions, un symbole # peut s'ajouter à l'URL après l'authentification. Ceci est normal et ne pose aucun problème lors de la connexion.

Pourquoi mes requêtes échouent-elles et renvoient-elles un code d'état 405 Method Not Allowed (Méthode non autorisée) ?

Cela peut être dû au fait que les cookies ne sont pas joints à vos requêtes. Par défaut, les méthodes JavaScript ne joignent pas les cookies aux requêtes.

La manière d'inclure les cookies varie d'une méthode de requête à l'autre. Par exemple, pour les requêtes envoyées avec un objet XMLHttpRequest, la propriété withCredentials doit être définie sur true, alors que pour les requêtes envoyées avec l'API Fetch, l'option credentials doit être définie sur include ou same-origin.

Pour en savoir plus sur la gestion des erreurs qui ne se produisent qu'après un certain temps, consultez la page Gérer les sessions IAP.

Pourquoi ai-je reçu un code d'état HTTP 401 Unauthorized (Non autorisé) au lieu d'un code d'état HTTP 302 Redirect (Redirection) ?

IAP répond par un code d'état 302 Redirect lorsqu'un client est configuré pour gérer les redirections. Pour indiquer que votre client peut gérer les redirections, assurez-vous que HTTP Accept="text/html,*/*" figure dans l'en-tête des requêtes.

Pourquoi les requêtes POST ne déclenchent-elles pas de redirections ?

Pour que des redirections soient déclenchées, assurez-vous que les appels à IAP ne sont pas des requêtes POST. Les navigateurs n'effectuent pas de redirections en réponse aux requêtes POST. Pour cette raison, IAP répond par un code d'état 401 Unauthorized au lieu d'un code d'état 302 Redirect.

Si vous avez besoin d'IAP pour diffuser des requêtes POST, assurez-vous que le jeton d'ID ou les cookies valides sont transmis dans l'en-tête des requêtes.

Incluez le jeton d'ID dans un en-tête Authorization: Bearer pour envoyer une requête authentifiée à la ressource sécurisée par IAP. Pour obtenir des cookies valides, actualisez la session.

Puis-je utiliser IAP si j'ai désactivé l'API ?

Oui. L'accès aux ressources sécurisées avec IAP fonctionne même si l'API est désactivée, mais vous ne pouvez pas modifier les autorisations IAM.

Comment puis-je empêcher les utilisateurs disposant du rôle "Propriétaire" d'utiliser IAP pour TCP ?

Tout d'abord, évitez autant que possible d'utiliser le rôle "Propriétaire" (roles/owner). Ce rôle accorde de larges autorisations sur l'ensemble de Google Cloud. L'attribution de rôles et d'autorisations plus précis peut accroître la sécurité de votre projet. Pour en savoir plus, consultez les bonnes pratiques de IAM.

Si vous ne parvenez pas à réduire l'utilisation du rôle "Propriétaire", vous pouvez bloquer IAP pour TCP à l'aide de règles de pare-feu.

Quel domaine utilise IAP pour TCP ?

IAP utilise les domaines suivants, qui appartiennent à Google:

Si vous vous connectez via un serveur proxy ou un pare-feu, assurez-vous qu'ils autorisent le trafic vers ces domaines et qu'ils ne bloquent pas l'utilisation des connexions WebSocket.

Si vous bloquez le trafic vers ces domaines, vous ne pourrez pas utiliser IAP pour TCP. Vous pouvez recevoir plusieurs messages d'erreur différents.

Si vous utilisez gcloud, le message d'erreur peut être :

Error while connecting [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Si vous utilisez SSH à partir du navigateur, le message d'erreur est :

Cloud Identity-Aware Proxy Failed

Aucun code n'est associé à cette erreur.

Pourquoi le message d'erreur Server Error s'affiche-t-il ?

Si vous recevez le message d'erreur suivant, il est possible que votre pare-feu interdise les adresses IP 130.211.0.0/22 et 35.191.0.0/16:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

Si les adresses IP 130.211.0.0/22 et 35.191.0.0/16 de l'équilibreur de charge ne peuvent pas atteindre votre backend, il est possible que vos applications ne soient pas accessibles. Pour en savoir plus, consultez la page Configurer un équilibreur de charge HTTPS externe.

Si vous utilisez IAP pour TCP pour vous connecter à une VM spécifique, celle-ci doit accepter les connexions provenant d'adresses de la plage 35.235.240.0/20.

Pourquoi est-ce que je reçois des erreurs de serveur internes intermittentes ?

La réception d'un message d'erreur au format An internal server error occurred while authorizing your request. Error code X indique un échec interne. Les erreurs internes associées aux codes d'erreur 1 ou 30 indiquent des échecs de backend. Un taux faible de ces erreurs de backend indique souvent un problème temporaire. Les clients doivent relancer la requête en utilisant un intervalle exponentiel entre les tentatives.

Codes d'erreur

Le tableau suivant répertorie les codes d'erreur et les messages courants qui s'affichent lors de la configuration et de l'utilisation d'IAP.

Code d'erreur ou message Description Dépannage
Code d'erreur 7 La valeur de votre code secret ou de votre ID client OAuth est vide. Vérifiez que vos code secret et ID client sont correctement configurés pour votre application en consultant la page Identifiants. S'ils semblent être configurés correctement, utilisez la méthode GET pour afficher l'état actuel et la méthode PATCH pour les réinitialiser :
• API Compute Engine : GET, PATCH
• API App Engine : GET, PATCH
Code d'erreur 9 Une redirection OAuth n'a pas abouti. Il s'agit d'une erreur interne qui a été enregistrée en vue d'être examinée.
Code d'erreur 9 (avec règles de réécriture de chemin) Une redirection OAuth n'a pas abouti. Les règles de réécriture de chemin de l'équilibreur de charge Google Cloud perturbent la capacité d'IAP à mener à bien un flux OAuth. Si vous hébergez plusieurs backends derrière un équilibreur de charge Google Cloud et que vous utilisez des règles de réécriture de chemin, assurez-vous que les deux backends utilisent les mêmes ID client OAuth pour IAP. Vous pouvez modifier l'ID client OAuth d'un service de backend à l'aide de la commande gcloud compute backend-services update.
Code d'erreur 11 Votre ID client OAuth n'est pas configuré correctement. Vérifiez que vos code secret et ID client sont correctement configurés pour votre application en consultant la page Identifiants. S'ils semblent être configurés correctement, utilisez la méthode GET pour afficher l'état actuel et la méthode PATCH pour les réinitialiser :
• API Compute Engine : GET, PATCH
• API App Engine : GET, PATCH
Code d'erreur 13 Votre jeton OpenID Connect (OIDC) n'est pas valide. Assurez-vous que l'ID client configuré pour IAP n'est pas supprimé en consultant la page Identifiants.
Code d'erreur 51 Votre navigateur n'est pas compatible avec le regroupement de connexions. Un navigateur à jour peut gérer les erreurs de regroupement de connexions. Assurez-vous que le navigateur des utilisateurs finaux est à jour et à jour. Pour en savoir plus, consultez Restreindre l'accès aux ressources à des domaines spécifiques.
Code d'erreur 52 Le nom d'hôte fourni ne correspond pas au certificat SSL sur le serveur. L'administrateur système devra peut-être mettre à jour le certificat SSL. Pour en savoir plus, consultez Restreindre l'accès aux ressources à des domaines spécifiques.
Code d'erreur 53 Le nom d'hôte ne correspond pas aux domaines autorisés par l'administrateur IAP. L'administrateur doit mettre à jour la liste des domaines autorisés pour inclure votre nom d'hôte. Pour en savoir plus, consultez Restreindre l'accès aux ressources à des domaines spécifiques.
Code d'erreur 429 Votre projet dépasse le seuil de requêtes par minute. Les projets IAP sont limités à 360 000 requêtes par minute. Si vous rencontrez cette erreur, réduisez le volume des requêtes de votre projet. Vous pouvez contacter l'Assistance Google Cloud si vous avez d'autres questions.
Code d'erreur 4003 Cela peut signifier que l'instance n'écoute pas le port auquel vous essayez de vous connecter ou que le pare-feu est fermé. Ces deux problèmes pourraient également entraîner l'échec du test de connectivité de démarrage à l'instance de VM. Assurez-vous que le processus d'écoute de la VM est en cours d'exécution et qu'il écoute le port approprié. Vérifiez également que votre pare-feu Google Cloud est correctement configuré et ouvrez-le sur le port auquel vous vous connectez.
Code d'erreur 4010 Une connexion a été établie, mais fermée par l'instance de destination. Cela indique généralement un problème sur l'instance ou sur le programme à l'écoute sur le port de destination. Réinitialisez l'instance. Si vous utilisez SSH pour vous connecter, recherchez des erreurs inattendues dans le journal auth.log. L'emplacement par défaut du fichier journal est /var/log/. Si vous ne pouvez pas accéder aux journaux via SSH, essayez d'utiliser la console série ou dissociez et réassociez le disque à une nouvelle VM pour afficher les journaux. Joignez les journaux lorsque vous contactez le service client.
Code d'erreur 4033 Soit vous ne disposez pas des autorisations nécessaires pour accéder à l'instance, soit l'instance n'existe pas, soit elle est arrêtée. Assurez-vous que le rôle IAM "Utilisateur de tunnels sécurisés par IAP" est appliqué sur la ressource à laquelle vous vous connectez en consultant la page Identity-Aware Proxy.
Code d'erreur 4047 L'instance n'existe pas ou est arrêtée. Assurez-vous que la VM est sous tension et que son démarrage est terminé.

Si vous ne parvenez pas à résoudre votre problème, veuillez contacter le service client. Décrivez-lui l'erreur rencontrée et la réponse obtenue lors d'un appel GET. Vous pouvez supprimer votre code secret client de la réponse.