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 ?

L'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 de 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 l'erreur Server Error s'affiche-t-elle ?

Si le message d'erreur suivant s'affiche, il est possible que votre pare-feu bloque 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, vos applications risquent de ne pas être accessibles. Pour en savoir plus, consultez Configurer un équilibreur de charge HTTPS externe.

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

Pourquoi des erreurs internes du serveur s'affichent-elles de manière intermittente ?

Un message d'erreur au format suivant indique une défaillance interne:

An internal server error occurred while authorizing your request. Error code X

Les erreurs internes avec les codes d'erreur 1, 30, 62, 63, 64 ou 703 indiquent des échecs du backend. Un faible taux de ces erreurs de backend indique souvent un problème temporaire. Les clients doivent relancer la requête à l'aide d'un intervalle exponentiel entre les tentatives.

Comment résoudre les erreurs liées au dépassement du quota (code d'erreur 429) ?

Le code d'erreur 429 indique que le trafic vers l'application est limité par l'IAP. L'IAP applique une limite de 360 000 requêtes par minute et par projet. Si plusieurs applications sont hébergées dans un même projet, les quotas s'appliquent au nombre total de requêtes reçues par toutes les applications protégées par l'IAP Play Store du projet.

Si vous rencontrez des erreurs de quota dépassé par IAP, voici quelques techniques que vous pouvez appliquer pour atténuer le problème. * Nous vous déconseillons d'effectuer des tests de charge dans des instances de production. Si l'augmentation de la charge est due à des tests de charge, nous vous recommandons de trouver d'autres chemins réseau vers votre application qui n'appellent pas l'API IAP.

  • Si votre application reçoit un trafic élevé de service à service, nous vous recommandons d'implémenter un intervalle exponentiel entre les tentatives côté client pour gérer correctement les erreurs 429.

  • Si plusieurs applications à fort trafic se trouvent dans le même projet, envisagez de déplacer certaines d'entre elles vers un autre projet.

  • Si l'application est conçue en tant qu'API au lieu d'une application Web, envisagez d'utiliser des solutions de passerelle API telles qu'Apigee.

  • Si la croissance organique est à l'origine du trafic élevé, contactez l'assistance Google Cloud pour demander une augmentation de la limite de quota.

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 des règles de réécriture de chemin d'accès) Une redirection OAuth n'a pas abouti. Les règles de réécriture de chemin d'accès de Google Cloud Load Balancing interfèrent avec la capacité de l'IAP à terminer un flux OAuth. Si vous hébergez plusieurs backends derrière l'é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 l'IAP. Vous pouvez modifier un ID client OAuth pour 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 pool de connexions. Un navigateur à jour peut gérer les erreurs de pool de connexions. Assurez-vous que les utilisateurs finaux utilisent un navigateur à 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 du 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 de l'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 par minute pour les requêtes. 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.
Codes d'erreur 700, 701 Votre pool d'employés configuré ne comporte aucun fournisseur (700) ou plusieurs fournisseurs (701). L'IAP nécessite exactement un fournisseur dans un pool de personnel pour utiliser la fédération d'identité de personnel. Consultez la section Limites concernant les pools d'employés.
Code d'erreur 705 Votre ID client OAuth pour utiliser l'IAP avec la fédération d'identité de personnel est vide. Vérifiez que vous avez suivi les étapes Créer un ID client et un secret OAuth et Mettre à jour les paramètres de l'IAP.
Code d'erreur 708 Votre pool d'employés n'existe pas ou son nom n'est pas au bon format. Assurez-vous que votre pool d'employés existe et que son nom est au format suivant: locations/global/workforcePools/WORKFORCE_POOL_ID.
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 elle a été fermée par l'instance de destination. Cela indique généralement un problème sur l'instance ou le programme qui écoute sur le port de destination. Réinitialisez l'instance. Si vous utilisez SSH pour vous connecter, vérifiez le journal auth.log pour détecter les erreurs inattendues. L'emplacement par défaut du fichier journal est /var/log/. Si vous ne parvenez pas à accéder aux journaux via SSH, essayez d'utiliser la console série ou de déconnecter et de reconnecter 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 allumée et que son démarrage est terminé.

Si vous ne parvenez pas à résoudre votre problème ou si votre erreur ne figure pas sur cette page, contactez le Cloud Customer Care. Indiquez la description de l'erreur et la réponse que vous obtenez à partir d'un appel GET à l'API. Assurez-vous de supprimer votre code secret du client de la réponse.