Ce document explique quand et comment utiliser des clients OAuth personnalisés pour Identity-Aware Proxy (IAP).
Par défaut, IAP utilise des clients OAuth gérés par Google pour authentifier les utilisateurs. Les clients OAuth gérés par Google ne peuvent être utilisés que pour gérer l'accès des utilisateurs internes appartenant à une organisation.
Vous devez utiliser une configuration OAuth personnalisée pour effectuer les opérations suivantes :
- Gérer l'accès aux applications compatibles avec IAP pour les utilisateurs externes qui n'appartiennent pas à votre organisation.
- Gérer l'accès aux applications Web qui se trouvent dans des projets n'appartenant pas à une Google Cloud organisation.
- Afficher des informations de marque personnalisées sur les écrans de consentement lors de l'authentification.
Vous pouvez configurer des clients OAuth personnalisés sur IAP ou directement sur votre plate-forme.
Lorsque vous utilisez des clients OAuth personnalisés, vous devez configurer l'écran de consentement OAuth. Pour que votre branding personnalisé s'affiche sur l'écran de consentement, vous devez envoyer votre application pour validation par Google. Pour en savoir plus sur le processus de validation, consultez Configurer votre écran de consentement OAuth.
Lorsque vous configurez des clients OAuth personnalisés, vous êtes responsable de la création et de la gestion des identifiants, ce qui inclut le stockage sécurisé du code secret du client et son partage avec les clients autorisés si nécessaire.
Comparer les clients OAuth gérés par Google et les clients OAuth personnalisés
Les clients OAuth gérés par Google ne peuvent pas accéder par programmation aux applications protégées par IAP. Toutefois, les applications protégées par IAP
qui utilisent le client OAuth géré par Google restent accessibles
par programmation à l'aide d'un client OAuth distinct configuré via le
programmatic_clients
paramètre ou un JWT de compte de service.
Le tableau suivant compare le client OAuth géré par Google et un client OAuth personnalisé.
| Client OAuth géré par Google | Client OAuth personnalisé | |
|---|---|---|
| Utilisateurs | Interne uniquement | Partenaires internes et externes |
| Marque | Google Cloud marque | Marque appartenant au client |
| Configuration OAuth | Configurée par Google | Configurée par le client |
| Identifiants OAuth | Gérés par Google | Gérés par le client |
| Accès à l'application | Flux de navigateur uniquement | Flux de navigateur et accès programmatique |
Configurer la page de branding
Pour configurer la page de branding personnalisée à l'aide de la Google Cloud console, procédez comme suit :
Dans la Google Cloud console, accédez à la page Branding OAuth :
Cliquez sur Commencer.
Dans Nom de l'application, saisissez le nom de l'application pour l'écran de consentement.
Dans Adresse e-mail d'assistance utilisateur, saisissez l'adresse e-mail de l'administrateur pour l'assistance.
Pour Audience, sélectionnez Interne pour limiter l'accès aux utilisateurs de votre organisation ou Externe pour autoriser l'accès aux utilisateurs qui n'appartiennent pas à votre organisation.
Dans Coordonnées, saisissez l'adresse e-mail de l'administrateur à contacter pour les applications protégées par les clients OAuth. Vous configurerez les clients OAuth lors d'une étape ultérieure.
Pour créer la configuration OAuth, cliquez sur Créer.
Configurer des clients OAuth personnalisés dans IAP
Cette section explique comment configurer des clients OAuth personnalisés dans IAP.
Vous pouvez créer un client OAuth personnalisé pour IAP à l'aide de la Google Cloud console de l'une des manières suivantes :
- Créer un client OAuth manuellement : vous devez ajouter vous-même l'URI de redirection avant de configurer IAP.
- Créer automatiquement un client OAuth à l'aide des identifiants générés automatiquement par IAP : IAP crée et configure le client OAuth pour vous, et ajoute automatiquement l'URI de redirection requis.
Quelle que soit la méthode utilisée, assurez-vous d'avoir configuré la page de branding avant de créer votre client OAuth. Le format d'URI de redirection requis est indiqué dans les deux méthodes.
Créer le client OAuth personnalisé
Cette section explique comment créer des clients OAuth personnalisés à l'aide de la Google Cloud console. Vous pouvez configurer des clients OAuth IAP personnalisés à n'importe quel niveau de la hiérarchie des ressources.
Pour créer des clients OAuth personnalisés pour une ressource à l'aide de la Google Cloud console, utilisez l'une des méthodes suivantes :
Méthode 1 : Créer un client OAuth à l'aide de la Google Cloud console
Utilisez cette méthode lorsque vous souhaitez créer le client OAuth séparément, par exemple avant de configurer IAP pour vos ressources. Vous devez alors ajouter manuellement l'URI de redirection IAP.
Dans la Google Cloud console, accédez à API et services> Identifiants.
Cliquez sur Créer des identifiants, puis sélectionnez ID client OAuth.
Dans le champ Type d'application, sélectionnez Application Web.
Dans le champ Nom, saisissez un nom descriptif pour votre client OAuth.
Cliquez sur Créer. Notez l'ID client généré.
Une fois le client OAuth créé, accédez à la section URI de redirection autorisés de la page de détails du client OAuth pour le client OAuth que vous venez de créer.
Cliquez sur Ajouter un URI, puis saisissez l'URI de redirection autorisé spécifique à IAP suivant :
https://iap.googleapis.com/v1/oauth/clientIds/YOUR_CLIENT_ID:handleRedirect
Remplacez
YOUR_CLIENT_IDpar l'ID client que vous avez obtenu à l'étape précédente.Cliquez sur Enregistrer.
Méthode 2 : Créer un client OAuth à l'aide des identifiants générés automatiquement par IAP
Utilisez cette méthode pour que IAP crée et configure le client OAuth pour vous, et ajoute automatiquement l'URI de redirection requis.
Dans la Google Cloud console, accédez à la page IAP.
Dans l'onglet Applications, dans la liste des ressources, recherchez la ressource que vous souhaitez configurer.
Pour les ressources au niveau du projet, procédez comme suit :
Créez le client OAuth à l'aide de la Google Cloud console:
Dans la colonne Actions, cliquez sur Plus d'options > Paramètres.
Dans la boîte de dialogue Paramètres, sélectionnez OAuth personnalisé.
Si vous n'avez pas configuré d'écran de consentement, procédez comme suit :
Cliquez sur Configurer l'écran d'autorisation.
Suivez les instructions pour configurer la page de branding fournies plus haut dans ce document.
Dans la boîte de dialogue des paramètres IAP, cliquez sur Générer automatiquement les identifiants. IAP génère un nouveau client OAuth et un nouveau code secret à utiliser avec cette ressource. Dans Google Auth Platform, le champ URI de redirection autorisés contient une entrée au format suivant :
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
Pour accéder à l'ID client et au code secret, cliquez sur Télécharger les identifiants. Les identifiants sont enregistrés dans un fichier au format JSON. Étant donné que le fichier contient des identifiants sensibles permettant d'accéder aux ressources, assurez-vous qu'il est sécurisé ou supprimé.
Pour enregistrer la configuration OAuth IAP et appliquer le client OAuth à IAP, cliquez sur Enregistrer.
Appliquer des clients OAuth personnalisés à IAP
Cette section explique comment appliquer des clients OAuth à IAP. Vous pouvez utiliser cette méthode au lieu d'appliquer les clients directement sur votre plate-forme.
Pour créer le client OAuth personnalisé, suivez les Google Cloud instructions de la console fournies plus haut dans ce document.
Appliquez le client OAuth personnalisé.
gcloud
Pour appliquer le client OAuth personnalisé à l'aide de gcloud CLI, procédez comme suit :
Créez un fichier YAML de paramètres.
cat << EOF > iap-oauth.yaml accessSettings: oauthSettings: clientId: CLIENT_ID clientSecret: CLIENT_SECRET EOF
Remplacez les éléments suivants :
CLIENT_ID: ID client issu des identifiants OAuth que vous avez générés précédemment.CLIENT_SECRET: code secret du client issu des identifiants OAuth que vous avez générés précédemment.
Pour définir la configuration OAuth, effectuez l'une des opérations suivantes :
- Pour définir la configuration OAuth au niveau du projet, exécutez la commande suivante :
gcloud iap settings set iap-oauth.yaml
Pour définir la configuration à un autre niveau de la hiérarchie des ressources, utilisez l'un des flags suivants à la place du flag
--project. La définition de clients OAuth personnalisés à un niveau de la hiérarchie des ressources fournit le même branding personnalisé à tous les services qui s'exécutent à ce niveau.* <pre>--folder=<var>FOLDER_ID</var></pre> * <code>--organization=<var>ORGANIZATION_ID</var></code>- Pour définir la configuration sur un service spécifique, exécutez la commande suivante :
gcloud iap settings set iap-oauth.yaml \ --project=PROJECT_ID \ --resource-type= RESOURCE_TYPE \ --region=REGION \ --service=SERVICE_NAME
Remplacez les éléments suivants :
PROJECT_ID: ID de la ressource de projet. Pour définir la configuration à un autre niveau, utilisez l'un des flags suivants à la place du flag--project:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: remplacez par l'un des types de ressources suivants, en fonction de la ressource :app-enginebackend-servicescloud-runcomputefolderforwarding-ruleiap_weborganization
REGION: région dans laquelle vous exécutez votre service Cloud Run.SERVICE_NAME: nom de votre service.
Terraform
Pour appliquer le client OAuth personnalisé à l'aide de Terraform, procédez comme suit :
resource "google_iap_settings" "iap_settings" { name = IAP_RESOURCE_NAME access_settings { oauth_settings { oauth_client_id = CLIENT_ID oauth_client_secret = CLIENT_SECRET } } }Remplacez les éléments suivants :
IAP_RESOURCE_NAME: nom de ressource de la ressourceiap_settingspour le service, au format suivant :projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAMECLIENT_ID: ID client issu des identifiants OAuth que vous avez générés précédemmentCLIENT_SECRET: code secret du client issu des identifiants OAuth que vous avez générés précédemment
API REST
Créez un fichier JSON de paramètres.
cat << EOF > iap-oauth.json { "accessSettings": { "oauthSettings": { "clientId": "CLIENT_ID", "clientSecret": "CLIENT_SECRET" } } } EOF
Remplacez les éléments suivants :
CLIENT_ID: ID client issu des identifiants OAuth que vous avez générés précédemment.CLIENT_SECRET: code secret du client issu des identifiants OAuth que vous avez générés précédemment.
Appliquez le fichier de paramètres.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/yaml" \ "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \ -d @iap-oauth.json
Pour vérifier que vos applications Web sont protégées par IAP avec les clients OAuth, consultez Tester l'accès.
Ancienne configuration de clients OAuth personnalisés sur une ressource
Les sections suivantes décrivent les anciennes méthodes de configuration de clients OAuth personnalisés dans IAP pour certains types de ressources. Vous pouvez ignorer cette section si vous avez utilisé la méthode décrite plus haut dans ce document.
App Engine
Cette section explique comment activer des clients OAuth personnalisés sur App Engine.
gcloud
Before you set up your project and IAP, you need an up-to-date version of gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.
-
To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
-
Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set project PROJECT_ID - Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
- Save the OAuth client ID and secret.
-
To enable IAP, run the following command.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
API
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Save the OAuth client ID and secret.
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFRun the following command to enable IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
After you enable IAP, you can use the Google Cloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
GKE
Cette section explique comment activer des clients OAuth personnalisés sur GKE.
Configure the BackendConfig
If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. See Configure IAP for instructions.
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Create a Kubernetes Secret to wrap the OAuth client.
Replace the following:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: The name of the secret to createCLIENT_ID: The OAuth client IDCLIENT_SECRET: The OAuth client secret
You should receive confirmation, like the following output, that the Secret was successfully created:
secret "MY_SECRET" created
Add the OAuth credentials to the BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETEnable IAP by associating Service ports with your BackendConfig. See Associating BackendConfig with your Ingress. One way to make this association is to make all ports for the service default to your BackendConfig, which you can do by adding the following annotation to your Service resource:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
Troubleshooting
If the secretName you referenced doesn't exist or isn't structured
properly, one of the following error messages will display:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.To resolve this error, make sure that you've created the Kubernetes Secret correctly as described in step 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.To resolve this error, make sure that you've created the OAuth credentials correctly. Also, make sure that you referenced the correctclient_idandclient_secretkeys.
Service de backend d'équilibreur de charge
Pour les utilisateurs de Compute Engine et de Cloud Run, cette section explique comment configurer des clients OAuth dans IAP pour le service de backend d'équilibreur de charge.
gcloud
Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.
-
To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
-
Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set project PROJECT_ID
- Follow the instructions in Creating OAuth clients for IAP. to configure the OAuth consent screen and create the OAuth client.
- Save the OAuth client ID and secret.
-
To enable IAP, run either the globally or regionally scoped command.
Global scope Regional scopegcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETgcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
API
Suivez les instructions de la section Créer des clients OAuth pour IAP afin de configurer l'écran de consentement OAuth et de créer le client OAuth.
Enregistrez l'ID client et le code secret du client OAuth.
Exécutez la commande suivante pour préparer un fichier
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFExécutez la commande suivante pour activer IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
Une fois que vous avez activé IAP, vous pouvez modifier la stratégie d'accès IAP à l'aide du rôle IAM roles/iap.httpsResourceAccessor via gcloud CLI. Découvrez comment gérer les rôles et les autorisations.
Tester l'accès
Une fois que vous avez configuré votre client OAuth personnalisé, vous pouvez vérifier que IAP l'utilise pour protéger votre service en procédant comme suit :
Sur la page IAP, dans l'onglet Applications, affichez les applications gérées par IAP.
Accédez à l'URL de l'une des applications. Si vous accédez à l'application pour la première fois depuis que vous avez configuré l'écran de consentement, celui que vous avez configuré précédemment s'affiche.