Cette page explique comment partager un client OAuth avec une autre application au sein de votre organisation.
Aperçu
Le partage de clients OAuth entre des projets évite d'avoir à créer manuellement un client OAuth pour chaque application de votre organisation. Après avoir créé manuellement un client OAuth, vous pouvez l'attribuer de manière automatisée à plusieurs applications.
Le partage de clients OAuth permet également de partager un client OAuth avec des agents qui vous devez pouvoir activer Identity-Aware Proxy (IAP), mais pas ayant accès à la page Identifiants.
Le partage de clients OAuth est également utilisé lorsque l'application utilise un client OAuth géré par Google pour le flux du navigateur et que vous souhaitez activer l'accès programmatique à l'application.
Avant de commencer
Créez un client OAuth en suivant la procédure décrite dans la section Créer un client OAuth ou utilisez un client OAuth existant.
Accès à une interface de programmation
Cette section décrit la procédure à suivre pour activer un client OAuth pour l'accès programmatique à votre application.
Ajoutez à la liste d'autorisation les clients OAuth pour l'accès programmatique.
Vous pouvez ajouter à la liste d'autorisation une liste d'ID clients OAuth appartenant à votre organisation et pour lesquels vous souhaitez fournir un accès programmatique à l'application.
Vous pouvez ajouter les clients OAuth à la liste d'autorisation pour les ressources et les services au niveau de l'organisation, du projet et du dossier.
gcloud
Exécutez la commande suivante pour préparer un fichier
SETTING_FILE
. Mettez à jour les valeurs si nécessaire.cat << EOF > SETTING_FILE access_settings: oauth_settings: programmatic_clients: ["clientId1", "clientId2", ..] EOF
Utilisez la commande
gcloud iap settings set
pour ajouter à la liste d'autorisation des clients OAuth au niveau souhaité.gcloud iap settings set
SETTING_FILE
[--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSIONExemples de commandes:
Pour ajouter à la liste d'autorisation les ID client OAuth sur les ressources d'une organisation, exécutez la commande suivante.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONPour ajouter à la liste d'autorisation les ID client OAuth sur les ressources d'un dossier, exécutez la commande suivante.
gcloud iap settings set
SETTING_FILE
--folder=FOLDERPour ajouter à la liste d'autorisation les ID client OAuth sur toutes les ressources de type Web d'un projet, exécutez la commande suivante.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=iap_webPour ajouter des ID client OAuth à la liste d'autorisation sur un service App Engine au sein d'un projet, exécutez la commande suivante.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=app-engine --service=SERVICERemplacez les éléments suivants :
- FOLDER: ID du dossier.
- ORGANIZATION : ID de l'organisation.
- PROJECT : ID du projet
- RESOURCE_TYPE : type de ressource d'application intégrée. La valeur doit être
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE : le nom du service. Ce champ est facultatif lorsque
resource-type
estcompute
ouapp-engine
. - VERSION : nom de la version. Cela ne s'applique pas à
compute
et est facultatif lorsqueresource-type
est défini surapp-engine
.
API
Exécutez la commande suivante pour préparer un fichier
iap_settings.json
. Modifiez les valeurs si nécessaire.cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: ["clientId1", "clientId2", ..] } } } EOF
Obtenez le nom de la ressource en exécutant la commande
gcloud iap settings get
. Copiez le champ de nom indiqué dans le résultat.
Vous en aurez besoin à l'étape suivante.gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
Remplacez
RESOURCE_NAME
dans la commande suivante par le nom de l'étape précédente.IapSettings
sera mis à jour.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.oauthSettings.programmaticClients"
Se connecter à l'application à l'aide de l'un des ID client OAuth de la liste d'autorisation. Consultez la section Authentification programmatique.
Accès au navigateur
Pour autoriser IAP à utiliser votre ID client et votre code secret à l'aide de la console Google Cloud, procédez comme suit.
- Configurer le client OAuth pour Compute Engine (Compute Engine)
- Configurer le client OAuth pour Google Kubernetes Engine (GKE)
- Configurer le client OAuth pour App Engine
- Configurer le client OAuth pour Cloud Run
Risques
Même si le partage d'un client entre vos applications s'avère pratique, il présente des risques. Cette section décrit les risques potentiels liés au partage de clients et la manière de les limiter.
Point de défaillance unique
L'utilisation d'un client OAuth pour de nombreuses applications crée un point de défaillance unique. Toute suppression ou modification incorrecte d'un client a une incidence sur chaque application utilisant ce dernier.
Pour remédier à ce problème, vous ne devez partager des clients que pour des cas d'utilisation importants.
Fuites de codes secrets de clients
Le partage d'un client requiert également le partage de son code secret avec des personnes et des scripts. Cela augmente le risque de fuites du code secret du client. IAP ne peut pas différencier les jetons créés à partir de votre application de ceux générés à partir d'un code secret de client piraté.
L'accès à vos ressources IAP peut être surveillé avec Cloud Audit Logging. Si vous pensez que le code secret de votre client a pu être piraté, réinitialisez-le à partir de la page Identifiants.
Pour limiter ce risque, protégez les codes secrets des clients comme les mots de passe. Évitez de les partager et ne les stockez jamais sous forme de texte brut.
Usurpation des identités des utilisateurs autorisés
En cas de fuite du code secret de votre client, une application malveillante peut définir le cookie du navigateur d'authentification IAP sur son domaine pour usurper l'identité d'un utilisateur autorisé. Avec ce cookie, IAP authentifie l'utilisateur dont l'identité est usurpée pour toutes les applications partageant le code secret piraté.
Pour limiter ce risque, évitez de partager les clients entre des ressources qui partagent également des utilisateurs autorisés. Définissez des autorisations pour chaque ressource afin de vous assurer que même si un utilisateur victime d'une usurpation d'identité est authentifié, IAP n'autorisera pas l'accès.
Collection d'identités d'utilisateur
En cas de fuite du code secret de votre client, une application malveillante peut utiliser votre ID client pour collecter les identités des utilisateurs de votre application. Ce processus est déclenché lorsque vos utilisateurs accèdent à l'application malveillante.
Lorsqu'un utilisateur accède pour la première fois à une application protégée par IAP, il est invité à partager son identité avec l'application. Cela permet aux utilisateurs de contrôler leurs informations personnelles. Si un utilisateur accepte de partager son identité, le système de connexion de Google enregistre cette autorisation. IAP ne sollicitera pas de nouveau l'utilisateur lors de requêtes ultérieures provenant d'un ID client du même projet.
L'identité d'un utilisateur qui a accepté de la partager avec votre application et accède à l'application malveillante sera immédiatement partagée sans son autorisation.