Ce document explique comment configurer la fédération des identités des employés 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 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 (Respect 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 pour ce point de terminaison sur POST.
Pour activer la connexion à la console (fédérée), dans Allowable SAML Bindings (Liaisons SAML autorisées), sélectionnez Redirect (Redirection).
Pour 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, procédez comme suit :
gcloud
Pour créer le fournisseur de pools d'identités 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 via 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, dans Journalisation détaillée, cliquez sur le bouton Activer la journalisation d'audit des valeurs d'attribut.
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 personnelPROVIDER_ID: ID du fournisseurLOGIN_CONFIG_FILE_PATH: chemin d'accès à un fichier de configuration que vous spécifiez, par exemplelogin.json-
Si vous avez utilisé l'option
--activatelors de la création du fichier de configuration ou si vous avez activé le fichier de configuration avec la commandegcloud config set auth/login_config_file, gcloud CLI va utiliser automatiquement votre fichier de configuration :gcloud auth login
-
Pour vous connecter en spécifiant l'emplacement du fichier de configuration, exécutez la commande suivante :
gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
-
Pour utiliser une variable d'environnement afin de spécifier l'emplacement du fichier de configuration, définissez
CLOUDSDK_AUTH_LOGIN_CONFIG_FILEsur le chemin d'accès de la configuration. -
Si vous avez utilisé l'option
--activatelors de la création du fichier de configuration ou si vous avez activé le fichier de configuration avec la commandegcloud config set auth/login_config_file, vous devez exécuter la commande suivante pour le désactiver :gcloud config unset auth/login_config_file
-
Si elle est définie, effacez la variable d'environnement
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE. - 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 des identités des employés.
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 la page Représenter les utilisateurs de pools d'identités de personnel dans les stratégies IAM.
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 :
Pour créer le fichier de configuration de connexion, exécutez la commande suivante. Vous pouvez éventuellement définir par défaut l'activation du fichier pour gcloud CLI en ajoutant l'option --activate.
Vous pouvez ensuite exécuter gcloud auth login sans spécifier le chemin d'accès au fichier de configuration à chaque fois.
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE_PATH
Remplacez les éléments suivants :
Le fichier 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 pool d'identités de personnel. Votre fichier ne contient aucune information confidentielle.
La sortie ressemble à ceci :
{ "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" }
Pour empêcher
gcloud auth login d'utiliser automatiquement ce fichier de configuration, vous pouvez le désactiver en exécutant gcloud config unset auth/login_config_file.
Pour vous authentifier à l'aide de l'authentification de connexion basée sur le navigateur, vous pouvez utiliser l'une des méthodes suivantes :
Pour arrêter d'utiliser le fichier de configuration de connexion, procédez comme suit :
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 des identités des employés 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.