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 utilise les domaines suivants, qui appartiennent à Google:
tunnel.cloudproxy.app
mtls.tunnel.cloudproxy.app
si l'accès basé sur un certificat est activé.
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 interdit 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 de l'équilibreur de charge 130.211.0.0/22
et 35.191.0.0/16
ne peuvent pas atteindre votre backend, vos applications risquent de ne pas être 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 comprises dans la plage 35.235.240.0/20
.
Pourquoi est-ce que je reçois des erreurs de serveur interne intermittentes ?
La réception d'un message d'erreur au format An internal server error occurred while authorizing your request. Error code X
indique une défaillance interne. Les erreurs internes avec les codes d'erreur 1
ou 30
indiquent des échecs de backend. Un faible taux 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 des règles de réécriture de chemin) | Une redirection OAuth n'a pas abouti. | Les règles de réécriture du chemin de l'équilibreur de charge Google Cloud interfèrent avec la capacité d'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 qu'ils 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. | Un navigateur à jour peut gérer les erreurs de regroupement de connexions. Assurez-vous que les utilisateurs finaux utilisent un navigateur récent et à jour. Pour en savoir plus, consultez Restreindre l'accès aux ressources pour 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 pour 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 pour 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 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 qu'elle a bien démarré. |
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.