Ce document explique comment configurer la fédération d'identité de personnel avec le fournisseur d'identité (IdP) PingFederate et gérer l'accès àGoogle Cloud. Une fois que vous avez configuré le fournisseur d'identité PingFederate, les utilisateurs fédérés peuvent accéder aux services Google Cloud qui sont compatibles avec la fédération des identités 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.
Pour configurer une application PingFederate qui utilise le protocole SAML 2.0, procédez comme suit dans PingFederate :
- Définissez l'ID d'entité SAML 2.0 de votre IdP PingFederate. Pour en savoir plus, consultez Spécifier les informations de fédération.
Créez une connexion SAML 2.0 SP. Pour en savoir plus, consultez Choisir un type de connexion SP, puis procédez comme suit :
- Dans Connection Type (Type de connexion), sélectionnez Browser SSO Profiles (Profils SSO du navigateur) et SAML 2.0 protocol (Protocole SAML 2.0).
- Dans Importer des métadonnées, sélectionnez Aucune.
Dans Informations générales, définissez l'ID d'entité du partenaire (ID de connexion) sur la valeur suivante :
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_IDDans Profils SAML, activez SSO initié par le fournisseur de services. Si vous prévoyez également d'utiliser l'authentification unique (SSO) initiée par le fournisseur d'identité, vous pouvez également l'activer.
Dans Contrat d'attribut, définissez les attributs personnalisés (par exemple, l'adresse e-mail et les groupes) à transmettre dans l'assertion. Ces attributs peuvent être utilisés dans Google Cloud pour créer ultérieurement des règles de gestion des accès.
Dans Attribute Contract Fulfillment (Exécution du contrat d'attribut), assurez-vous que
SAML_SUBJECTest mappé à un champ qui possède une valeur unique pour chaque utilisateur. Par exemple, une adresse e-mail est généralement unique pour chaque utilisateur, ne change pas et est souvent utilisée pour faire référence à un utilisateur spécifique dans les règles de gestion des accès Google Cloud .Pour configurer la connexion à la console (fédérée), ajoutez l'URL du point de terminaison suivant dans URL du service ACS :
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_IDRemplacez les éléments suivants :
WORKFORCE_POOL_ID: ID du pool de personnel que vous avez créé précédemment.WORKFORCE_PROVIDER_ID: ID du fournisseur de personnel que vous allez créer plus loin.
Définissez Binding sur POST pour ce point de terminaison.
Pour activer la connexion à la console (fédérée), dans Allowable SAML Bindings (Liaisons SAML autorisées), sélectionnez Redirect (Redirection).
Pour Signature Policy (Règle de signature), sélectionnez Sign Response As Required (Signer la réponse si nécessaire).
Enregistrez et activez la connexion.
Pour configurer l'application SAML :
gcloud
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 de PingFederate.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, définissez la condition surassertion.ipaddr.startsWith('98.11.12.').
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.
- Dans Fichier de métadonnées IdP (XML), sélectionnez le fichier XML de métadonnées de PingFederate.
- 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]
- 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 PingFederate. 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 PingFederate et obtenez la réponse SAML.
- Enregistrez la réponse SAML renvoyée par PingFederate 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=/path/to/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 PingFederate 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.
Utiliser des attributs
Cette section explique comment utiliser les attributs de l'assertion SAML.
Utilisez des contrats d'attributs pour spécifier les attributs personnalisés dans les assertions SAML générées. Une fois les attributs configurés, vous pouvez les utiliser dans Google Cloud pour créer des règles de gestion des accès. Pour en savoir plus sur les contrats d'attributs, consultez Contrats d'attributs dans la documentation du serveur PingFederate.
Par exemple, dans ce guide, nous utilisons PingOne comme data store pour PingFederate et nous mappons les contrats d'attributs email, firstName et groups à l'aide des attributs utilisateur du data store PingOne, comme suit :
| Contrat d'attribut | Valeur |
|---|---|
email |
email |
firstName |
name.given |
groups |
memberOfGroupIDs |
Créer le fournisseur de pools d'identités de personnel PingFederate
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 2.0
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 PingFederate.
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 à gcloud 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 à PingFederate avec gcloud CLI à l'aide du protocole SAML, procédez comme suit :
Tester l'accès
Vous avez accès aux services Google Cloud compatibles avec la fédération d'identité de personnel et auxquels on vous a accordé l'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.