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.

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.

IAP attend les préfixes de cookie suivants :

  • GCP_IAAP_AUTH_TOKEN_<random_string>
  • GCP_IAP_UID

Il est normal que ces cookies apparaissent plusieurs fois dans un en-tête de requête.

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 pour TCP achemine les données via un tunnel sur le domaine tunnel.cloudproxy.app. Ce domaine appartient à Google. Vous devez vous assurer que vous ne bloquez aucun trafic vers ce domaine.

Si vous bloquez le trafic vers ce domaine, 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.

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 du chemin d'accès) Une redirection OAuth n'a pas abouti. Les règles de réécriture du chemin d'accès de l'équilibreur de charge Google Cloud interfèrent avec la capacité d'IAP à effectuer correctement 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 d'accès, assurez-vous que les backends utilisent les mêmes ID client OAuth pour 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 regroupement de connexions. Une version actuelle du navigateur peut gérer les erreurs liées au regroupement des connexions. Assurez-vous que les utilisateurs finaux utilisent un navigateur récent et à jour.
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.
Code d'erreur 429 Votre projet a dépassé 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.
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 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 Soit l'instance n'existe pas, soit elle 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, 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.