Ce document explique quand et comment personnaliser une configuration OAuth pour Identity-Aware Proxy (IAP).
IAP utilise un client OAuth géré par Google pour authentifier les utilisateurs.
Le client OAuth géré par Google limite l'accès aux utilisateurs de la même organisation lorsqu'ils accèdent à des applications compatibles avec les achats intégrés via un navigateur.
Quand utiliser une configuration OAuth personnalisée
Vous devez utiliser une configuration OAuth personnalisée pour effectuer les opérations suivantes:
- Autoriser l'accès aux applications compatibles avec l'IAP pour les utilisateurs externes à l'organisation.
- Pour afficher les informations sur votre propre marque lors de l'authentification.
- Pour activer l'accès programmatique à votre application.
Lorsque vous personnalisez votre configuration OAuth, vous devez configurer l'écran de consentement OAuth. Pour cela, les informations sur la marque de votre application doivent être soumises au processus de validation de Google. Pour en savoir plus sur le processus de validation, consultez la section Configurer votre écran de consentement OAuth.
Vous êtes responsable de la création et de la gestion des identifiants d'un client OAuth personnalisé. Cela inclut le stockage sécurisé du code secret du client et son partage avec les utilisateurs autorisés si nécessaire.
Comparaison entre le client OAuth géré par Google et le client OAuth personnalisé
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 peuvent toujours être consultées par programmation à l'aide d'un client OAuth distinct configuré via le paramètre programmatic_clients ou d'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 |
| Brand | Google Cloud marque | Marque appartenant au client |
| Configuration OAuth | Google configuré | Configuration client |
| Identifiants OAuth | Géré par Google | Géré par le client |
| Accès des applications | Parcours dans le navigateur uniquement | Flux du navigateur et accès programmatique |
Activer l'IAP à l'aide d'une configuration client OAuth personnalisée
Les sections suivantes expliquent comment activer IAP à l'aide d'une configuration de client OAuth personnalisée pour différentes ressources.
App Engine
Console
Si vous n'avez pas configuré l'écran de consentement OAuth de votre projet, vous êtes invité à le faire. Pour configurer l'écran de consentement OAuth, consultez Configurer l'écran de consentement OAuth.
Configurer l'accès à IAP
-
Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy" - Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
- Cochez la case à côté de la ressource à laquelle vous souhaitez accorder l'accès.
- Dans le panneau de droite, cliquez sur Ajouter un compte principal.
-
Dans la boîte de dialogue Ajouter des comptes principaux qui s'affiche, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP pour le projet.
Les types de comptes principaux suivants peuvent disposer de ce rôle :
- Compte Google : user@gmail.com
- Groupe Google : admins@googlegroups.com
- Compte de service : server@example.gserviceaccount.com
- Domaine Google Workspace : example.com
Veillez à ajouter un compte Google auquel vous avez accès.
- Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
- Cliquez sur Enregistrer.
Activer IAP
-
Sur la page Identity-Aware Proxy, sous Applications, recherchez l'application dont vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource,
-
Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. Une fois IAP activé, des identifiants de connexion sont requis pour toutes les connexions à votre équilibreur de charge.
Seuls les comptes disposant du rôle Utilisateur de l'application Web sécurisée par IAP (
roles/iap.httpsResourceAccessor) sur le projet y ont accès.
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
Suivez les instructions de la section Créer des clients OAuth pour les achats intégrés pour configurer l'écran de consentement OAuth et créer le client OAuth.
Enregistrez l'ID client et le secret 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 les achats intégrés.
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"
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 la Google Cloud CLI. Découvrez comment gérer les rôles et les autorisations.
Compute Engine
Console
Si vous n'avez pas configuré l'écran de consentement OAuth de votre projet, vous êtes invité à le faire. Pour configurer l'écran de consentement OAuth, consultez Configurer l'écran de consentement OAuth.
Si vous exécutez des clusters GKE version 1.24 ou ultérieure, vous pouvez configurer IAP et GKE à l'aide de l'API Kubernetes Gateway. Pour ce faire, suivez les étapes ci-dessous, puis les instructions de la section Configurer IAP.
Ne configurez pas BackendConfig.
Configurer l'accès à IAP
-
Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy" - Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
-
Cochez la case à côté de la ressource à laquelle vous souhaitez accorder l'accès.
Si vous ne voyez pas de ressource, assurez-vous qu'elle a été créée et que le contrôleur d'entrée BackendConfig Compute Engine est synchronisé.
Pour vérifier que le service de backend est disponible, exécutez la commande gcloud suivante :
gcloud compute backend-services list - Dans le panneau de droite, cliquez sur Ajouter un compte principal.
-
Dans la boîte de dialogue Ajouter des comptes principaux qui s'affiche, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP pour le projet.
Les types de comptes principaux suivants peuvent disposer de ce rôle :
- Compte Google : user@gmail.com
- Groupe Google : admins@googlegroups.com
- Compte de service : server@example.gserviceaccount.com
- Domaine Google Workspace : example.com
Veillez à ajouter un compte Google auquel vous avez accès.
- Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
- Cliquez sur Save.
Activer IAP
-
Sur la page Identity-Aware Proxy, sous APPLICATIONS, recherchez l'équilibreur de charge qui diffuse l'élément instance group dont vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource,
Pour activer IAP, procédez comme suit :- Au moins un protocole de la configuration de l'interface d'équilibrage de charge doit correspondre à HTTPS. En savoir plus sur la configuration d'un équilibreur de charge
-
Vous avez besoin des autorisations
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateetclientauthconfig.clients.getWithSecret. Ces autorisations sont accordées par des rôles (par exemple, Éditeur de projet). Pour en savoir plus, consultez Gérer l'accès aux ressources sécurisées par IAP.
- Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. Une fois IAP activé, des identifiants de connexion sont requis pour toutes les connexions à votre équilibreur de charge. Seuls les comptes disposant du rôle Utilisateur de l'application Web sécurisée par IAP sur le projet y ont accès.
gcloud
Avant de configurer votre projet et votre IAP, vous devez disposer d'une version à jour de la CLI gcloud. Pour savoir comment installer la CLI gcloud, consultez Installer la CLI gcloud.
-
Pour vous authentifier, utilisez la Google Cloud CLI et exécutez la commande suivante.
gcloud auth login - Pour vous connecter, suivez l'URL qui s'affiche.
- Une fois la connexion effectuée, copiez le code de validation qui s'affiche et collez-le dans la ligne de commande.
-
Exécutez la commande suivante pour spécifier le projet contenant la ressource que vous souhaitez protéger avec IAP.
gcloud config set project PROJECT_ID
- Suivez les instructions de la section Créer des clients OAuth pour les achats intégrés pour configurer l'écran de consentement OAuth et créer le client OAuth.
- Enregistrez l'ID client et le secret OAuth.
-
Pour activer l'IAP, exécutez la commande à portée globale ou régionale.
Champ d'application global Champ d'application régionalgcloud 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
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 la gcloud CLI. Découvrez comment gérer les rôles et les autorisations.
API
Suivez les instructions de la section Créer des clients OAuth pour les achats intégrés pour configurer l'écran de consentement OAuth et créer le client OAuth.
Enregistrez l'ID client et le secret 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 les achats intégrés.
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 la gcloud CLI. Découvrez comment gérer les rôles et les autorisations.
Cloud Run
Console
Si vous n'avez pas configuré l'écran de consentement OAuth de votre projet, vous êtes invité à le faire. Pour configurer votre écran de consentement OAuth, consultez Configurer l'écran de consentement OAuth.
Configurer l'accès à IAP
- Ouvrez la page Identity-Aware Proxy.
Accéder à Identity-Aware Proxy - Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
- Sous Applications, cochez la case à côté du service de backend de l'équilibreur de charge auquel vous souhaitez ajouter des membres.
- Dans le panneau d'informations situé à droite, cliquez sur Ajouter un membre.
Dans la boîte de dialogue Ajouter des membres, saisissez les comptes des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP pour le projet. Les types de comptes suivants peuvent être ajoutés en tant que membres :
- Compte Google: utilisateur@gmail.com. Il peut également s'agir d'un compte Google Workspace, tel que utilisateur@google.com ou un autre domaine Google Workspace.
- Groupe Google : admins@googlegroups.com
- Compte de service: server@example.gserviceaccount.com
- Domaine Google Workspace : example.com
Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste Rôles.
Cliquez sur Enregistrer.
Activer IAP
- Sur la page IAP, sous Applications, recherchez le service de backend de l'équilibreur de charge auquel vous souhaitez restreindre l'accès. Cliquez sur le bouton IAP pour activer IAP sur une ressource.
- Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. Une fois IAP activé, des identifiants de connexion sont requis pour toutes les connexions à votre équilibreur de charge. Seuls les comptes disposant du rôle Utilisateur de l'application Web sécurisée par IAP sur le projet y ont accès.
Pour autoriser l'IAP à envoyer du trafic au service Cloud Run backend, suivez les instructions de la section Ajouter des comptes principaux à un service pour ajouter le compte principal et le rôle suivants.
- Principal:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com - Rôle: Demandeur Cloud Run
- Principal:
gcloud
- 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.
- If you have not previously done so, create a service account by running the following command. If you previously created a service account, running the command does not create duplicate service accounts.
gcloud beta services identity create \ --service=iap.googleapis.com --project=PROJECT_ID - Grant the invoker permission to the service account, created in the previous step, by running the following command.
gcloud run services add-iam-policy-binding SERVICE-NAME \ --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker' Enable IAP by running either the globally or regionally scoped command, depending on whether your load balancer backend service is global or regional. Use the OAuth client ID and secret from the previous step.
Global scope
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETRegional scope
Replace the following:gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET- BACKEND_SERVICE_NAME: the name of the backend service.
- CLIENT_ID: the OAuth client ID, from the previous step.
- CLIENT_SECRET: the OAuth client secret, from the previous step.
- REGION_NAME: the region in which you want to enable IAP.
After you enable IAP, you can use the Google Cloud CLI to modify the IAP access policy using the Identity and Access Management role roles/iap.httpsResourceAccessor. See Managing roles and permissions for more information.
Google Kubernetes Engine
Console
Si vous n'avez pas configuré l'écran de consentement OAuth de votre projet, vous êtes invité à le faire. Pour configurer l'écran de consentement OAuth, consultez Configurer l'écran de consentement OAuth.
Si vous exécutez des clusters GKE version 1.24 ou ultérieure, vous pouvez configurer IAP et GKE à l'aide de l'API Kubernetes Gateway. Pour ce faire, suivez les étapes ci-dessous, puis les instructions de la section Configurer IAP.
Ne configurez pas BackendConfig.
Configurer l'accès à IAP
-
Accédez à la page Identity-Aware Proxy.
Accéder à la page "Identity-Aware Proxy" - Sélectionnez le projet que vous souhaitez sécuriser avec IAP.
-
Cochez la case à côté de la ressource à laquelle vous souhaitez accorder l'accès.
Si vous ne voyez pas de ressource, assurez-vous qu'elle a été créée et que le contrôleur d'entrée BackendConfig Compute Engine est synchronisé.
Pour vérifier que le service de backend est disponible, exécutez la commande gcloud suivante :
gcloud compute backend-services list - Dans le panneau de droite, cliquez sur Ajouter un compte principal.
-
Dans la boîte de dialogue Ajouter des comptes principaux qui s'affiche, ajoutez les adresses e-mail des groupes ou des personnes auxquels vous souhaitez accorder le rôle Utilisateur de l'application Web sécurisée par IAP pour le projet.
Les types de comptes principaux suivants peuvent disposer de ce rôle :
- Compte Google : user@gmail.com
- Groupe Google : admins@googlegroups.com
- Compte de service : server@example.gserviceaccount.com
- Domaine Google Workspace : example.com
Veillez à ajouter un compte Google auquel vous avez accès.
- Sélectionnez Cloud IAP > Utilisateur de l'application Web sécurisée par IAP dans la liste déroulante Rôles.
- Cliquez sur Save.
Activer IAP
-
Sur la page Identity-Aware Proxy, sous APPLICATIONS, recherchez l'équilibreur de charge qui diffuse l'élément instance group dont vous souhaitez restreindre l'accès. Pour activer IAP pour une ressource,
Pour activer IAP, procédez comme suit :- Au moins un protocole de la configuration de l'interface d'équilibrage de charge doit correspondre à HTTPS. En savoir plus sur la configuration d'un équilibreur de charge
-
Vous avez besoin des autorisations
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.updateetclientauthconfig.clients.getWithSecret. Ces autorisations sont accordées par des rôles (par exemple, Éditeur de projet). Pour en savoir plus, consultez Gérer l'accès aux ressources sécurisées par IAP.
- Dans la fenêtre Activer IAP qui s'affiche, cliquez sur Activer pour confirmer que vous souhaitez qu'IAP sécurise votre ressource. Une fois IAP activé, des identifiants de connexion sont requis pour toutes les connexions à votre équilibreur de charge. Seuls les comptes disposant du rôle Utilisateur de l'application Web sécurisée par IAP sur le projet y ont accès.
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.