Ce document explique comment configurer la fédération d'identité de personnel avec PingOne Advanced Identity Cloud (AIC) en tant que fournisseur d'identité (IdP) et comment gérer l'accès àGoogle Cloud. Une fois que vous avez configuré le fournisseur d'identité PingOne AIC, les utilisateurs fédérés peuvent accéder aux services Google Cloud qui sont compatibles avec la fédération d'identité des employés à l'aide du protocole SAML 2.0.
Avant de commencer
- Assurez-vous de configurer une organisation Google Cloud .
-
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
- Dans Consoles natives > Gestion des accès, accédez à Domaines > REALM_NAME > Tableau de bord, puis cliquez sur Applications SAML.
- Cliquez sur Ajouter un fournisseur d'entités> Hébergé.
Saisissez un ID d'entité. Notez cette valeur pour l'utiliser ultérieurement.
- Vérifiez que la valeur de l'URL de base du fournisseur d'entités est correcte. Advanced Identity Cloud utilise cette valeur pour tous les points de terminaison associés à SAML 2.0.
- Dans la section Alias de métadonnées, indiquez une valeur compatible avec les URL dans la propriété Alias de métadonnées du fournisseur d'identité. Cet alias doit être unique dans le cercle de confiance.
- Cliquez sur Créer.
- Dans l'onglet Assertion Processing (Traitement des assertions), dans la section Attribute Mapper (Mappeur d'attributs), mappez les noms d'attributs SAML aux noms d'attributs locaux. Les noms des attributs SAML sont ceux utilisés dans une assertion.
- Cliquez sur Ajouter ou Mettre à jour pour chaque mappage.
- Cliquez sur Enregistrer les modifications.
Via REST
Exécutez la commande suivante :
curl --output METADATA_XML \ "https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM"Dans un navigateur
Ouvrez l'URL des métadonnées de l'environnement de votre locataire dans un navigateur pour télécharger le fichier XML :
https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM- Enregistrez le fichier XML sur votre ordinateur local.
Préparez le fichier XML de métadonnées du fournisseur de services Google Cloud . Utilisez le modèle suivant en remplaçant les valeurs d'espace réservé :
<?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID"> <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" index="0" isDefault="true"/> </md:SPSSODescriptor> </md:EntityDescriptor>Importez les métadonnées de l'une des manières suivantes :
Dans la console
- Dans la console d'administration PingOne AIC, accédez à SAML Applications (Applications SAML).
- Cliquez sur Ajouter un fournisseur d'entités > Distant.
- Importez le fichier XML de métadonnées du fournisseur de services Google Cloud que vous venez de créer.
- Cliquez sur Créer.
Via REST
- Convertissez les métadonnées XML en chaîne encodée en base64url.
- Obtenez un jeton d'accès.
Exécutez la commande suivante :
curl --request POST \ --header 'authorization: Bearer ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --header 'Accept-API-Version: resource=1.0' \ --data-raw '{"standardMetadata": "BASE64URL_ENCODED_METADATA"}' \ 'https://TENANT_ENV_FQDN/am/json/realms/root/realms/alpha/realm-config/saml2/remote?_action=importEntity'
- Accédez à Realms > REALM_NAME > Applications > Federation > Circles of Trust (Domaines > REALM_NAME > Applications > Fédération > Cercles de confiance).
- Cliquez sur Ajouter un cercle de confiance.
- Saisissez un nom, puis cliquez sur Créer.
- Sur la page Cercle de confiance, dans la propriété Fournisseurs d'entités, sélectionnez votre IdP hébergé et le SP distant Google Cloud .
- Cliquez sur Enregistrer les modifications.
Pour créer un fournisseur de pools d'identités de personnel SAML, vous devez vous assurer que les métadonnées de votre fournisseur d'identité incluent au moins l'ID d'entité SAML, l'URL d'authentification unique et une clé publique de signature. Pour ce faire, procédez comme suit :
gcloud
Enregistrez les métadonnées SAML de votre application PingOne AIC.
Pour créer le fournisseur de pools d'identité de personnel SAML, exécutez la commande suivante :
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --idp-metadata-path="XML_METADATA_PATH" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --location=globalRemplacez les éléments suivants :
WORKFORCE_PROVIDER_ID: ID de fournisseur.WORKFORCE_POOL_ID: ID du pool d'identités de personnelDISPLAY_NAME: nom à afficher.DESCRIPTION: une description.XML_METADATA_PATH: chemin d'accès au fichier de métadonnées au format XML que vous avez exporté depuis PingOne AIC.ATTRIBUTE_MAPPING: mappage d'attributs. Par exemple :google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].ATTRIBUTE_CONDITION: condition d'attribut facultative. Par exemple, pour limiter l'attributipaddrà une certaine plage d'adresses IP, vous pouvez définir la conditionassertion.ipaddr.startsWith('98.11.12.').
Pour en savoir plus, consultez Mappage d'attributs.
Cette commande attribue les éléments
subject,groupsetdepartmentdans l'assertion SAML aux attributsgoogle.subject,google.groupsetattribute.department, respectivement. La condition d'attribut garantit également que seuls les utilisateurs compris dans une plage d'adresses IP donnée peuvent se connecter à l'aide de ce fournisseur de personnel.
Console
Pour configurer le fournisseur SAML à l'aide de la console Google Cloud , procédez comme suit :
- Dans la console Google Cloud , accédez à la page Pools d'identités de personnel : Accéder aux pools d'identités de personnel
- Dans le tableau Pools d'identités de personnel, sélectionnez le pool pour lequel vous souhaitez créer le fournisseur.
- Dans la section Fournisseurs, cliquez sur Ajouter un fournisseur.
- Dans la liste Sélectionner un fournisseur, sélectionnez Fournisseur d'identité générique.
- Dans Sélectionner un protocole d'authentification, sélectionnez SAML.
- Dans la section Créer un fournisseur, procédez comme suit :
- Dans Nom, saisissez un nom pour le fournisseur.
- Facultatif : Dans le champ Description, saisissez une description du fournisseur.
- Dans Fichier de métadonnées IdP (XML), sélectionnez le fichier XML de métadonnées que vous avez exporté depuis PingOne AIC.
- Assurez-vous que l'option fournisseur activé est activée.
- Cliquez sur Continuer.
- Dans la section Partager les informations sur votre fournisseur, cliquez sur Continuer.
Dans la section Configurer le fournisseur, procédez comme suit :
- Dans Mappage des attributs, saisissez une expression CEL pour
google.subject(par exemple,assertion.subject). Facultatif : Pour définir d'autres mappages, cliquez sur Ajouter un mappage et saisissez d'autres mappages. Par exemple :
google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]Facultatif : Pour ajouter une condition d'attribut, cliquez sur Ajouter une condition, puis saisissez une expression CEL représentant une condition d'attribut. Par exemple, pour limiter l'attribut
ipaddrà une certaine plage d'adresses IP, vous pouvez définir la conditionassertion.attributes.ipaddr.startsWith('98.11.12.'). Cet exemple de condition garantit que seuls les utilisateurs dont l'adresse IP commence par98.11.12.peuvent se connecter en utilisant ce fournisseur de personnel.
- Dans Mappage des attributs, saisissez une expression CEL pour
Pour activer la journalisation d'audit détaillée, cliquez sur le bouton Activer la journalisation d'audit des valeurs d'attribut dans Journalisation détaillée.
Pour créer le fournisseur, cliquez sur Envoyer.
TEST_PROJECT_ID: ID du projet.WORKFORCE_POOL_ID: ID du pool d'identités de personnelDEPARTMENT_VALUE: valeurattribute.departmentmappée.TEST_PROJECT_ID: ID du projet.WORKFORCE_POOL_ID: ID du pool d'identités de personnelGROUP_ID: groupe de la revendicationgoogle.groupsmappée.-
Accédez à la page de connexion de la console (fédéré).
-
Saisissez le nom du fournisseur, en respectant le format suivant :
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Lorsque vous y êtes invité, saisissez vos identifiants PingOne AIC. WORKFORCE_POOL_ID: ID du pool de fédération des identités des employés.WORKFORCE_PROVIDER_ID: ID du fournisseur de fédération des identités des employés-
LOGIN_CONFIG_PATH: chemin d'accès au fichier de configuration de connexion. Exemple :login-config.json -
Définissez la variable d'environnement
CLOUDSDK_AUTH_LOGIN_CONFIG_FILEsur le chemin d'accès du fichier de configuration de connexion. -
Exécutez la commande suivante :
gcloud auth login
- gcloud CLI fait référence à la variable d'environnement pour trouver le fichier de configuration de connexion, puis lance le processus d'authentification. Suivez le flux basé sur le navigateur pour authentifier et autoriser la gcloud CLI à accéder aux ressources en votre nom pour les commandes futures.
-
Définissez la propriété
auth/login_config_filede la configuration gcloud CLI active sur le chemin d'accès au fichier de configuration de connexion à l'aide de la commande suivante :gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
-
Exécutez la commande suivante :
gcloud auth login
- gcloud CLI référence la propriété de configuration pour trouver le fichier de configuration de connexion, puis démarre le processus d'authentification. Suivez le flux basé sur le navigateur pour authentifier et autoriser la gcloud CLI à accéder aux ressources en votre nom pour les commandes futures.
-
Si vous avez utilisé l'option
--activatelors de la création du fichier de configuration de connexion, exécutez la commande suivante :gcloud auth login
-
Si vous n'avez pas utilisé l'option
--activatelors de la création du fichier de configuration de connexion, exécutez la commande suivante :Linux et macOS
gcloud auth login \ --login-config=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud auth login ` --login-config=LOGIN_CONFIG_PATH
Remplacez LOGIN_CONFIG_PATH par le chemin d'accès à votre fichier de configuration de connexion.
- Connectez un utilisateur à votre application PingOne AIC et obtenez la réponse SAML.
- Enregistrez la réponse SAML renvoyée par PingOne AIC dans un emplacement sécurisé sur votre ordinateur local. Stockez le chemin d'accès dans une variable d'environnement, par exemple
SAML_ASSERTION_PATH=/tmp/saml_assertion.xml. Générez un fichier de configuration :
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --credential-source-file=SAML_ASSERTION_PATH \ --workforce-pool-user-project=PROJECT_ID \ --output-file=config.jsonRemplacez les éléments suivants :
SAML_ASSERTION_PATH: chemin d'accès du fichier d'assertion SAML.PROJECT_ID: ID du projet.
Le fichier de configuration généré se présente comme suit :
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }Pour vous connecter à gcloud CLI à l'aide de l'échange de jetons, exécutez la commande suivante :
gcloud auth login --cred-file=config.jsongcloudéchange ensuite de manière transparente vos identifiants PingOne AIC contre des jetons d'accès Google Cloud temporaires, ce qui vous permet d'effectuer d'autres appelsgcloudvers Google Cloud. Le résultat ressemble à ce qui suit :Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].Pour répertorier les comptes avec identifiants et le compte actif, exécutez la commande suivante :
gcloud auth list- Accédez à la page Cloud Storage.
- Vérifiez que vous pouvez voir la liste des buckets existants pour le projet
TEST_PROJECT_ID.
Créer un IdP hébergé
Utiliser des attributs
Cette section explique comment utiliser les attributs de l'assertion SAML.
Dans les exemples suivants, les attributs de l'assertion SAML sont mappés sur des attributs locaux :
| Attribut SAML | Attribut "Local" |
|---|---|
IDPEmail |
mail |
FirstName |
givenName |
groups |
groups |
Configurez les attributs requis dans la section de mappage des attributs. Vous mapperez ces attributs lorsque vous créerez le fournisseur de pools d'identités des employés plus loin dans ce guide.
Exporter les métadonnées du fournisseur
Vous pouvez accéder aux métadonnées SAML 2.0 de votre fournisseur hébergé de l'une des manières suivantes :
Importer Google en tant que fournisseur de services distant
Créer un cercle de confiance
Créer le fournisseur de pools d'identités de personnel PingOne AIC
Cette section explique comment créer un fournisseur de pools d'identités de personnel pour permettre aux utilisateurs de votre fournisseur d'identité d'accéder à Google Cloud. Vous pouvez configurer le fournisseur pour qu'il utilise le protocole SAML.
Créer un fournisseur de pools d'identités de personnel SAML
Gérer l'accès aux ressources Google Cloud
Cette section explique comment gérer l'accès aux ressources Google Cloud pour les utilisateurs PingOne AIC.
L'exemple de projet utilisé dans ce guide peut être différent de celui que vous avez utilisé pour configurer la fédération d'identité du personnel.
Vous pouvez gérer les rôles pour des identités uniques, un groupe d'identités ou un pool entier. Pour en savoir plus, consultez Identifiants de compte principal pour les règles d'autorisation.
Utiliser des attributs de service mappés
Pour accorder le rôle Administrateur de l'espace de stockage (roles/storage.admin) à toutes les identités d'un service spécifique pour le projet TEST_PROJECT_ID, exécutez la commande suivante :
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
Remplacez les éléments suivants :
Utiliser des groupes mappés
Pour attribuer le rôle Administrateur de l'espace de stockage (roles/storage.admin) à toutes les identités du groupe GROUP_ID pour le projet TEST_PROJECT_ID, exécutez la commande suivante :
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
Remplacez les éléments suivants :
Se connecter et tester l'accès
Dans cette section, vous vous connectez en tant qu'utilisateur de pool d'identités de personnel et testez votre accès.
Se connecter
Connexion à la console (fédéré)
Pour vous connecter à la console de fédération des identités des employés Google Cloud , également appelée console (fédérée), procédez comme suit :
Connexion à Google Cloud CLI depuis un navigateur
Pour vous connecter à gcloud CLI à l'aide d'un flux de connexion basé sur un navigateur :
Exécutez la commande suivante pour créer un fichier de configuration de connexion :
Linux et macOS
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --output-file=LOGIN_CONFIG_PATH
Windows (PowerShell)
gcloud iam workforce-pools create-login-config ` locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID ` --output-file=LOGIN_CONFIG_PATH
Remplacez les éléments suivants :
Le fichier de configuration de connexion contient les points de terminaison utilisés par gcloud CLI pour activer le flux d'authentification via le navigateur et définir l'audience sur le fournisseur d'identité configuré dans le fournisseur de pools d'identités des employés. Votre fichier ne contient aucune information confidentielle.
Le contenu du fichier de configuration de connexion ressemble à ce qui suit :
{ "universe_domain": "googleapis.com", "universe_cloud_web_domain": "cloud.google", "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://sts.googleapis.com/v1/introspect" }
Pointez vers le fichier de configuration de connexion avec une variable d'environnement, une propriété dans la configuration active de gcloud CLI, ou utilisez-le directement avec la commande gcloud auth login :
Variable d'environnement
Pour utiliser le fichier de configuration de connexion avec une variable d'environnement, suivez les instructions ci-dessous :
Pour arrêter d'utiliser le fichier de configuration de connexion pour les commandes gcloud auth login, effacez la variable d'environnement CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.
Configuration de gcloud CLI
Pour utiliser le fichier de configuration de connexion avec une propriété de configuration gcloud CLI, suivez les instructions ci-dessous :
Pour arrêter d'utiliser le fichier de configuration de connexion pour les commandes gcloud auth login, annulez la définition de la propriété à l'aide de la commande suivante :
gcloud config unset auth/login_config_file
gcloud auth login
Pour utiliser le fichier de configuration de connexion directement avec la commande gcloud auth login, suivez les instructions ci-dessous :
La commande gcloud auth login stocke les identifiants d'accès dans votre répertoire personnel. Le principal authentifié devient le principal actif dans votre configuration gcloud CLI active. Sauf indication contraire, la gcloud CLI utilise ces identifiants stockés pour accéder à Google Cloud.
Connexion à gcloud CLI sans interface graphique
Pour vous connecter à PingOne AIC avec gcloud CLI à l'aide du protocole SAML, procédez comme suit :
Tester l'accès
Vous pouvez accéder aux services Google Cloud compatibles avec la fédération d'identité de personnel auxquels vous avez accès. Plus tôt dans ce guide, vous avez accordé le rôle Administrateur de l'espace de stockage à toutes les identités d'un service ou d'un groupe spécifique pour le projet TEST_PROJECT_ID. Vous pouvez tester l'accès en répertoriant les buckets Cloud Storage.
Connexion à la console (fédéré)
Pour vérifier votre accès dans la console (fédérée), procédez comme suit :
CLI gcloud
Pour répertorier les buckets et les objets Cloud Storage du projet auquel vous avez accès, exécutez la commande suivante :
gcloud alpha storage ls --project="TEST_PROJECT_ID"
Le compte principal doit disposer de l'autorisation serviceusage.services.use sur le projet défini dans la session gcloud CLI : PROJECT_ID.