Configurer la fédération des identités des employés avec PingFederate

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

  1. Assurez-vous de configurer une organisation Google Cloud .
  2. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

    gcloud init

    Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  3. Pour configurer une application PingFederate qui utilise le protocole SAML 2.0, procédez comme suit dans PingFederate :

    1. 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.
    2. Créez une connexion SAML 2.0 SP. Pour en savoir plus, consultez Choisir un type de connexion SP, puis procédez comme suit :

      1. Dans Connection Type (Type de connexion), sélectionnez Browser SSO Profiles (Profils SSO du navigateur) et SAML 2.0 protocol (Protocole SAML 2.0).
      2. Dans Importer des métadonnées, sélectionnez Aucune.
    3. 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_ID
      
    4. Dans 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.

    5. 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.

    6. Dans Attribute Contract Fulfillment (Respect du contrat d'attribut), assurez-vous que SAML_SUBJECT est 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 .

    7. 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_ID
      

      Remplacez 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.
    8. Définissez Binding pour ce point de terminaison sur POST.

    9. Pour activer la connexion à la console (fédérée), dans Allowable SAML Bindings (Liaisons SAML autorisées), sélectionnez Redirect (Redirection).

    10. Pour Règle de signature, sélectionnez Sign Response As Required (Signer la réponse si nécessaire).

    11. Enregistrez et activez la connexion.

    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

    1. 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=global
      

      Remplacez les éléments suivants :

      • WORKFORCE_PROVIDER_ID : ID de fournisseur.
      • WORKFORCE_POOL_ID : ID du pool d'identités de personnel
      • DISPLAY_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'attribut ipaddr à une certaine plage d'adresses IP, définissez la condition sur assertion.ipaddr.startsWith('98.11.12.').

      Cette commande attribue les éléments subject, groups et department dans l'assertion SAML aux attributs google.subject, google.groups et attribute.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 :

      1. Dans la console Google Cloud , accédez à la page Pools d'identités de personnel : Accéder aux pools d'identités de personnel
      2. Dans le tableau Pools d'identités de personnel, sélectionnez le pool pour lequel vous souhaitez créer le fournisseur.
      3. Dans la section Fournisseurs, cliquez sur  Ajouter un fournisseur.
      4. Dans la liste Sélectionner un fournisseur, sélectionnez Fournisseur d'identité générique.
      5. Dans Sélectionner un protocole d'authentification, sélectionnez SAML.
      6. Dans la section Créer un fournisseur, procédez comme suit :
        1. Dans Nom, saisissez un nom pour le fournisseur.
        2. Dans Fichier de métadonnées IdP (XML), sélectionnez le fichier XML de métadonnées de PingFederate.
        3. Cliquez sur Continuer.
      7. Dans la section Partager les informations sur votre fournisseur, cliquez sur Continuer.
      8. Dans la section Configurer le fournisseur, procédez comme suit :

        1. Dans Mappage des attributs, saisissez une expression CEL pour google.subject (par exemple, assertion.subject).
        2. 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]
          
      9. 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.

      10. Pour créer le fournisseur, cliquez sur Envoyer.

    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 :

    • TEST_PROJECT_ID : ID du projet.
    • WORKFORCE_POOL_ID : ID du pool d'identités de personnel
    • DEPARTMENT_VALUE : valeur attribute.department mappée.

    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 :

    • TEST_PROJECT_ID : ID du projet.
    • WORKFORCE_POOL_ID : ID du pool d'identités de personnel
    • GROUP_ID : groupe de la revendication google.groups mappée.

    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 :

    1. Accédez à la page de connexion de la console (fédéré).

      Accéder à la console (fédéré)

    2. Saisissez le nom du fournisseur, en respectant le format suivant :
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. Lorsque vous y êtes invité, saisissez vos identifiants PingFederate.

    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 :

    • WORKFORCE_POOL_ID : ID du pool de personnel
    • PROVIDER_ID : ID du fournisseur
    • LOGIN_CONFIG_FILE_PATH : chemin d'accès à un fichier de configuration que vous spécifiez, par exemple login.json

    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 :

    • Si vous avez utilisé l'option --activate lors de la création du fichier de configuration ou si vous avez activé le fichier de configuration avec la commande gcloud 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_FILE sur le chemin d'accès de la configuration.

    Pour arrêter d'utiliser le fichier de configuration de connexion, procédez comme suit :

    • Si vous avez utilisé l'option --activate lors de la création du fichier de configuration ou si vous avez activé le fichier de configuration avec la commande gcloud 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.

    Connexion à gcloud CLI sans interface graphique

    Pour vous connecter à PingFederate avec gcloud CLI à l'aide du protocole SAML, procédez comme suit :

    1. Connectez un utilisateur à votre application PingFederate et obtenez la réponse SAML.
    2. 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.
    3. 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.json
      

      Remplacez les éléments suivants :

      • SAML_ASSERTION_PATH : chemin d'accès du fichier d'assertion SAML.
      • PROJECT_ID : ID du projet.
    4. 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"
      }
      
    5. Pour vous connecter à gcloud CLI à l'aide de l'échange de jetons, exécutez la commande suivante :

      gcloud auth login --cred-file=config.json
      

      gcloud é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 appels gcloud vers 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].

    6. Pour répertorier les comptes avec identifiants et le compte actif, exécutez la commande suivante :

      gcloud auth list
      

    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 :

    1. Accédez à la page Cloud Storage.
    2. Vérifiez que vous pouvez voir la liste des buckets existants pour le projet TEST_PROJECT_ID.

    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.

    Étapes suivantes