Cet article explique comment personnaliser les paramètres Identity-Aware Proxy (IAP). Ces paramètres vous permettent de contrôler divers comportements, y compris :
- la compatibilité avec GKE Enterprise et Istio sur Google Kubernetes Engine ;
- le traitement des requêtes CORS préliminaires ;
- la façon dont les utilisateurs sont authentifiés.
- la page d'erreur affichée aux utilisateurs lorsque l'accès est refusé.
Gestion des paramètres
Vous pouvez afficher et mettre à jour les paramètres de l'IAP sur l'équilibreur de charge et les applications App Engine à l'aide de la console Google Cloud, de l'API IAP ou de la Google Cloud CLI.
Pour mettre à jour les paramètres de l'API IAP sur toutes les ressources, y compris les dossiers, les projets et les organisations, utilisez Google Cloud CLI ou l'API.
Pour gérer les paramètres dans IAP :
Console
Pour afficher et modifier les paramètres à l'aide de la console Google Cloud:
- Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy" - Recherchez votre ressource dans l'onglet APPLICATIONS.
- Ouvrez le menu Autres actions , puis cliquez sur Paramètres.
- Cliquez sur Enregistrer.
gcloud
Pour obtenir et modifier les paramètres à l'aide de la Google Cloud CLI, utilisez les commandes gcloud iap settings get
et gcloud iap settings set
comme indiqué ci-dessous:
- Pour obtenir les paramètres d'un projet, d'un dossier ou d'une organisation, utilisez les commandes suivantes. Pour configurer les paramètres de l'IAP à l'aide de la console Google Cloud ou de la gcloud CLI, consultez Personnaliser l'IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
- Pour obtenir les paramètres d'un type de ressource IAP spécifique dans un projet :
gcloud iap settings get --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
- Pour définir les paramètres d'un projet, d'un dossier ou d'une organisation, ou d'un type de ressource IAP sous un projet, créez un fichier JSON ou YAML contenant les nouveaux paramètres souhaités et spécifiez le chemin d'accès au fichier. Consultez la rubrique
gcloud iap settings set
pour en savoir plus :
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
API
Pour obtenir et modifier les paramètres à l'aide de l'API IAP, effectuez des requêtes à l'aide des verbes HTTP GET
ou PATCH
au point de terminaison de ressource souhaité dans Google Cloud. Combinez le suffixe de chemin :iapSettings
, un chemin d'accès à la ressource (comme détaillé dans la section Ressources et autorisations) et une méthode HTTP appropriée pour obtenir ou modifier un paramètre. Voir getIapSettings()
et updateIapSettings()
pour plus d'informations :
- Pour obtenir ou définir des paramètres pour un type de ressource IAP spécifique dans un projet :
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
- Pour obtenir ou définir les paramètres d'un projet :
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
- Pour obtenir ou définir les paramètres d'un dossier :
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
- Pour obtenir ou définir des paramètres pour une organisation :
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings
Comprendre le contrôle des accès aux paramètres
Des autorisations spécifiques sont requises pour afficher et modifier les paramètres IAP. Le tableau ci-dessous répertorie les autorisations requises pour lire et modifier les paramètres de chaque type de ressource. Pour obtenir une description des différents types de ressources, consultez la section Ressources et autorisations.
Ressource | Autorisation d'affichage des paramètres | Autorisation de modification des paramètres |
---|---|---|
Organisation | iap.organizations.getSettings |
iap.organizations.updateSettings |
Dossier | iap.folders.getSettings |
iap.folders.updateSettings |
Projet | iap.projects.getSettings |
iap.projects.updateSettings |
Tous les services Web | iap.web.getSettings |
iap.web.updateSettings |
Type de service Web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
Service Web | iap.webServices.getSettings |
iap.webServices.updateSettings |
Version de service Web | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
Le rôle Administrateur de paramètres IAP (roles/iap.settingsAdmin
) accorde toutes ces autorisations, tout comme Éditeur de projet (roles/editor
). Le rôle Lecteur de projet (roles/viewer
) accorde toutes les autorisations getSettings
.
Pour en savoir plus sur l'attribution de rôles IAM, consultez la page Accorder, modifier et révoquer les accès.
Personnaliser les paramètres IAP
IAP fournit les paramètres de personnalisation suivants :
Champ | Description |
---|---|
access_settings.cors_settings.allow_http_options |
Permet de contrôler la requête HTTP OPTIONS (requête CORS préliminaire). |
access_settings.oauth_settings.login_hint |
Simplifie la connexion aux utilisateurs d'un domaine G Suite. |
application_settings.access_denied_page_settings.access_denied_page_uri |
Affiche une page d'erreur personnalisée lorsque l'accès est refusé. |
application_settings.csm_settings.rctoken_aud |
Émettre des jetons RCToken GKE Enterprise et Istio |
access_settings.gcip_settings |
S'authentifie avec Identity Platform. |
access_settings.ReauthSettings |
Définissez une règle de réauthentification. Pour en savoir plus, consultez Configurer la réauthentification. |
Vous pouvez appliquer les paramètres au niveau du projet ou à n'importe quel niveau de ressource IAP inférieur.
Vous pouvez configurer les paramètres des ressources IAP Web, mais pas les ressources accessibles à l'aide du service IAP pour le transfert TCP.
En utilisant access_settings.cors_settings.allow_http_options
comme exemple, vous pouvez configurer les paramètres de personnalisation comme suit :
YAML
access_settings: cors_settings: allow_http_options: "false"
JSON
{ "access_settings": { "cors_settings": { "allow_http_options": "false" } } }
Les sections suivantes fournissent plus d'informations sur chaque paramètre.
Requêtes HTTP OPTIONS (requête CORS préliminaire)
Champ | Valeur par défaut |
---|---|
access_settings.cors_settings.allow_http_options |
false |
Les règles de même origine du Web empêche les navigateurs d'envoyer des requêtes AJAX entre des sites Web. Par défaut, le code JavaScript d'une page diffusée depuis une origine ne peut pas utiliser AJAX pour envoyer une requête à une application sécurisée avec IAP hébergée sur une origine différente.
Dans certains cas, les navigateurs essaient automatiquement d'exécuter une requête, mais ils suppriment le contenu de la réponse s'il n'inclut pas d'en-tête Access-Control-Allow-Origin
. Pour autoriser ce type de requête, incluez cet en-tête dans les réponses de votre application.
Dans d'autres cas, les navigateurs envoient une requête CORS préliminaire, un type de requête HTTP OPTIONS
, avant d'envoyer la requête d'origines multiples. Si votre application n'envoie pas une réponse de préliminaire appropriée (contenant les en-têtes de réponse Access-Control-*
obligatoires), les navigateurs bloquent la requête avec une erreur. En outre, étant donné que les requêtes préliminaires ne sont pas envoyées avec des identifiants d'authentification (par exemple, un cookie de session IAP), IAP répond également par une erreur.
Pour autoriser ces requêtes :
Ajoutez du code à l'application qui répond aux requêtes
OPTIONS
.Définissez le paramètre
access_settings.cors_settings.allow_http_options
surtrue
pour qu'IAP transmette les requêtesOPTIONS
à votre application.
S'authentifier à l'aide d'un domaine Google Workspace
Champ | Valeur par défaut |
---|---|
access_settings.oauth_settings.login_hint |
"" |
Si seuls les membres d'un domaine Google Workspace spécifique utilisent votre application, vous pouvez configurer IAP pour optimiser le flux d'authentification. Cela présente plusieurs avantages :
Si un utilisateur est connecté avec plusieurs comptes, tels qu'un compte professionnel et un compte personnel, le système sélectionne automatiquement son compte professionnel au lieu d'afficher l'UI de sélection du compte.
Si un utilisateur n'est pas connecté à son compte Google, l'UI de connexion remplit automatiquement la partie domaine de son adresse e-mail (par exemple, l'utilisateur ne doit saisir que
alice
au lieu dealice@example.com
).Si votre domaine Google Workspace est configuré pour utiliser un fournisseur d'authentification unique tiers, le système affiche cette page de connexion personnalisée au lieu de celle de Google.
Pour activer ce comportement, définissez la valeur de access_settings.oauth_settings.login_hint
sur le nom de votre domaine Google Workspace (par exemple, example.com
). La propriété du domaine doit avoir été validée : vous ne pouvez pas utiliser des domaines DNS Internet arbitraires que vous possédez. (Les domaines ajoutés en tant que domaine principal ou secondaire Google Workspace sont validés et peuvent donc être utilisés ici.)
Si vous devez authentifier des utilisateurs externes au domaine, vous pouvez utiliser l'authentification programmatique.
Pour plus d'informations, consultez la documentation OpenID Connect.
Définir une page d'erreur "Accès refusé" personnalisée
Champ | Valeur par défaut |
---|---|
application_settings.access_denied_page_settings.access_denied_page_uri |
"" |
Vous pouvez définir une URL dans ce champ qui redirige les utilisateurs vers une page personnalisée au lieu de la page d'erreur IAP par défaut lorsque l'accès est refusé par une stratégie.
Vous pouvez également intégrer l'URL de dépannage à l'aide de cette fonctionnalité. Pour en savoir plus, consultez Activer l'URL de dépannage pour votre page d'erreur "Accès refusé" personnalisée.
Émettre des ID de maillage de jeton RCToken GKE Enterprise et Istio
Champ | Valeur par défaut |
---|---|
application_settings.csm_settings.rctoken_aud |
"" |
Si vous utilisez Istio sur GKE, vous pouvez configurer IAP pour produire un jeton RCToken compatible avec Istio. Si ce champ est défini sur une chaîne non vide, IAP ajoute un en-tête HTTP Ingress-Authorization
contenant un jeton RCToken. La revendication aud
est définie sur la valeur du champ.
Procéder à l'authentification avec Identity Platform
Champ | Valeur par défaut |
---|---|
access_settings.gcip_settings |
null |
Par défaut, IAP utilise le système d'identité natif de Google. Si ce champ est défini, IAP utilise Identity Platform à la place pour authentifier les utilisateurs.
Comprendre l'héritage des paramètres dans la hiérarchie des ressources
IAP évalue toujours les requêtes pour une version de service Web spécifique. Ce type de ressource se trouve au niveau le plus bas de la hiérarchie des ressources, qui se présente comme suit :
- Organization - Folder - Project - All web services - Web service type - Web service - Web service version
Pour déterminer les paramètres à appliquer à une version de service Web, IAP commence par un ensemble de valeurs par défaut, puis parcourt la hiérarchie de haut en bas. Les paramètres sont appliqués à mesure qu'ils sont détectés. Par conséquent, les valeurs définies à un niveau inférieur remplacent celles définies à un niveau supérieur.
Par exemple, si access_settings.cors_settings.allow_http_options
est défini sur true
au niveau du projet, mais sur false
au niveau du service, la valeur effective est false
.
Pour en savoir plus sur la hiérarchie des ressources IAP, consultez la section Ressources et autorisations.