Configurer la fédération d'identité de charge de travail avec d'autres fournisseurs d'identité

Ce guide explique comment utiliser la fédération d'identité de charge de travail avec d'autres fournisseurs d'identité (IdP).

Les charges de travail qui s'exécutent en dehors de Google Cloud peuvent avoir accès à des identifiants existants, spécifiques à l'environnement, par exemple :

  • Une charge de travail peut être en mesure d'obtenir une assertion SAML ou un jeton OpenID Connect (OIDC) auprès d'un fournisseur d'identité (IdP) qui s'exécute dans le même environnement.

    Pour vous authentifier auprès de Google Cloud, vous pouvez autoriser la charge de travail à échanger ses identifiants spécifiques à l'environnement contre des identifiants Google Cloud de courte durée à l'aide de la fédération d'identité de charge de travail.

  • Une charge de travail peut posséder un certificat X.509. Pour en savoir plus, consultez Configurer la fédération d'identité de charge de travail avec un certificat X.509 (Preview). Les exigences concernant les clés de signature SAML X.509 incluent les suivantes:

    • Une clé publique RSA encapsulée dans un certificat X.509 v3.

    • Exigences de validité des certificats :

      • notBefore : horodatage pour les 7 prochains jours
      • notAfter : horodatage pour les 20 prochaines années
    • Algorithmes recommandés :

    Un fournisseur de pool d'identités de charge de travail ne peut être configuré qu'avec un maximum de trois clés de signature. Lorsque plusieurs clés existent, Google Cloud les parcourt et tente d'utiliser chaque clé non expirée pour répondre à une requête d'échange de jetons.

    Pour des raisons de sécurité, nous vous recommandons vivement de ne pas réutiliser la même paire de clés avec d'autres services.

  • Une charge de travail peut posséder d'autres types d'identifiants.

    En combinant la fédération d'identité de charge de travail avec un agent de service de jetons personnalisé, vous pouvez autoriser les charges de travail à utiliser d'autres types d'identifiants pour obtenir des identifiants Google Cloud de courte durée.

La fédération d'identité de charge de travail peut vous aider à réduire le nombre d'identifiants nécessitant une rotation.

Les sections suivantes expliquent comment utiliser la fédération d'identité de charge de travail avec des fournisseurs d'identité compatibles avec les protocoles d'authentification OpenID Connect (OIDC) ou SAML.

Préparer votre fournisseur d'identité externe

Vous n'avez besoin de suivre cette procédure qu'une seule fois pour chaque fournisseur d'identité.

Avant de commencer, vérifiez que votre fournisseur d'identité externe répond aux exigences suivantes :

OIDC

  • Le fournisseur d'identité est compatible avec OpenID Connect 1.0.

  • Le fournisseur d'identité dispose d'un URI d'émetteur.

  • Les métadonnées OIDC de l'IdP sont fournies de l'une des manières suivantes:

    • Points de terminaison JWKS sécurisés avec SSL et TLS Les URL des points de terminaison doivent commencer par https://, et les points de terminaison sont accessibles publiquement sur Internet.

      Google Cloud utilise ces points de terminaison pour télécharger l'ensemble de clés de votre IdP et l'utilise pour valider les jetons.

      Les points de terminaison qui sont sécurisés à l'aide de certificats autosignés ne sont pas compatibles avec Google Cloud. Plus précisément, les champs x5c et x5t ne sont pas compatibles et doivent être supprimés du JWK OIDC.

    • Un fichier OIDC JWKS importé dans Google Cloud Avec cette méthode, le point de terminaison n'a pas besoin d'être public.

SAML

  • Le fournisseur d'identité est compatible avec SAML 2.0.

  • Le fournisseur d'identité fournit un document de métadonnées SAML SP qui décrit la configuration du fournisseur de services SAML et contient le certificat de signature du fournisseur d'identité.

    Google Cloud utilise ce certificat pour valider les assertions et les réponses SAML.

Si votre fournisseur d'identité répond à ces critères, procédez comme suit :

OIDC

Configurez votre fournisseur d'identité pour que votre charge de travail puisse obtenir des jetons d'ID répondant aux critères suivants :

  • Les jetons sont signés à l'aide de l'algorithme RS256 ou ES256.
  • Les jetons contiennent une revendication aud avec la valeur suivante :

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet du projet Google Cloud que vous utilisez pour créer le pool d'identités de charge de travail.
    • POOL_ID : ID de votre choix qui identifie le pool d'identités de charge de travail. Vous devrez utiliser le même ID lors de la création du pool d'identités de charge de travail.
    • WORKLOAD_PROVIDER_ID: ID de votre choix qui identifie le fournisseur du pool d'identités de charge de travail. Vous devrez utiliser le même ID lors de la création du fournisseur de pools d'identités de charge de travail.

    Vous pouvez également configurer le fournisseur du pool d'identités de charge de travail de manière à attendre une audience personnalisée.

  • Les jetons contiennent une revendication exp située dans le futur et une revendication iat antérieure.

    La valeur de exp doit être supérieure de 24 heures au maximum à la valeur de iat.

En règle générale, il est préférable d'utiliser des jetons d'ID lors de l'échange de jetons, car les jetons d'ID reflètent l'identité de l'utilisateur. Si vous décidez d'utiliser des jetons d'accès à la place, assurez-vous qu'ils répondent aux exigences supplémentaires suivantes :

  • Les jetons d'accès sont au format Jeton Web JSON.
  • Les jetons d'accès contiennent une revendication ISSUER afin que l'URL ISSUER/.well-known/openid-configuration pointe vers le point de terminaison des métadonnées OIDC du fournisseur d'identité.

  • Pour importer des clés JWK locales, consultez Gérer les JWK OIDC.

SAML

Configurez votre fournisseur d'identité afin que les assertions SAML contiennent des éléments répondant aux critères suivants :

  • Un élément Issuer défini sur l'ID d'entité configuré dans le fournisseur de pool d'identités de charge de travail. Le format d'émetteur doit être omis ou défini sur urn:oasis:names:tc:SAML:2.0:nameid-format:entity.
  • Un élément Subject avec :
    • Un élément NameID.
    • Un seul élément SubjectConfirmation avec Method défini sur urn:oasis:names:tc:SAML:2.0:cm:bearer.
    • Un élément SubjectConfirmationData avec NotOnOrAfter défini sur un horodatage qui se produit dans le futur et sans valeur NotBefore.
  • Un élément Conditions avec :

    • "NotBefore" omis ou passé.
    • NotOnOrAfter a été omis ou est dans le futur.
    • Un Audience dont le format est le suivant :

      https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID
      

      Remplacez les éléments suivants :

      • PROJECT_NUMBER : numéro de projet du projet Google Cloud que vous utilisez pour créer le pool d'identités de charge de travail.
      • POOL_ID : ID de votre choix qui identifie le pool d'identités de charge de travail. Vous devrez utiliser le même ID lors de la création du pool d'identités de charge de travail.
      • WORKLOAD_PROVIDER_ID: ID de votre choix qui identifie le fournisseur du pool d'identités de charge de travail. Vous devrez utiliser le même ID lors de la création du fournisseur du pool d'identités de charge de travail.
  • Au moins un élément AuthnStatement.

  • Un élément SessionNotOnOrAfter avec un horodatage dans le futur. Sinon, omettez l'élément.

Pour les assertions SAML incluses dans une réponse SAML, celle-ci doit contenir les éléments suivants :

  • Une seule assertion qui répond aux critères d'assertion SAML décrits précédemment dans cette section.
  • Un attribut IssueInstant dont la valeur est antérieure à la dernière heure.
  • urn:oasis:names:tc:SAML:2.0:status:Success StatusCode.

L'assertion SAML, la réponse ou les deux doivent être signées.

Configurer la fédération d'identité de charge de travail

Vous n'avez besoin de suivre cette procédure qu'une seule fois pour chaque fournisseur d'identité. Vous pouvez ensuite utiliser le même pool d'identités de charge de travail et le même fournisseur pour plusieurs charges de travail et sur plusieurs projets Google Cloud.

Pour commencer à configurer la fédération d'identité de charge de travail, procédez comme suit :

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Il est préférable d'utiliser un projet dédié pour gérer les pools et les fournisseurs d'identités de charge de travail.
  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.

    Enable the APIs

Gérer les JWK OIDC (facultatif)

Cette section explique comment gérer les JWK OIDC importés automatiquement dans les fournisseurs OIDC du pool d'identités de charge de travail.

Créer un fournisseur et importer des JWK OIDC

Pour créer des JWK OIDC, consultez la page Implémentations JWT, JWS, JWE, JWK et JWA.

Pour importer un fichier JWK OIDC lorsque vous créez un fournisseur de pools d'identités de charge de travail, exécutez la commande gcloud iam workload-identity-pools providers create-oidc avec --jwk-json-path="JWK_JSON_PATH". Remplacez JWK_JSON_PATH par le chemin d'accès au fichier JSON des JWK.

Cette opération crée des clés importées avec celles du fichier.

Mettre à jour les JWK OIDC

Pour mettre à jour les JWK OIDC, exécutez la commande gcloud iam workload-identity-pools providers update-oidc avec --jwk-json-path="JWK_JSON_PATH". Remplacez JWK_JSON_PATH par le chemin d'accès au fichier JSON des JWK.

Cette opération remplace les clés importées existantes par celles du fichier. Vous ne pouvez pas restaurer les clés remplacées.

Supprimer toutes les JWK OIDC importées

Pour supprimer toutes les JWK OIDC importées et revenir à l'utilisation de l'URI d'émetteur pour récupérer les clés, exécutez la commande gcloud iam workload-identity-pools providers update-oidc avec --jwk-json-path="JWK_JSON_PATH". Remplacez JWK_JSON_PATH par le chemin d'accès à un fichier vide. Utilisez l'option --issuer-uri pour définir l'URI de l'émetteur.

Cette opération supprime toutes les clés importées existantes avec celles du fichier. Vous ne pouvez pas restaurer les clés supprimées.

Définir un mappage et une condition d'attribut

Les jetons OIDC ou les assertions SAML émises par votre fournisseur d'identité peuvent contenir plusieurs attributs, et vous devez choisir celui que vous souhaitez utiliser comme identifiant d'objet (google.subject) dans Google Cloud.

Vous pouvez éventuellement mapper d'autres attributs. Vous pouvez ensuite faire référence à ces attributs lorsque vous autorisez l'accès aux ressources.

OIDC

Vos mappages d'attributs peuvent utiliser les revendications intégrées dans le jeton d'ID ou le jeton d'accès émis par le fournisseur d'identité externe.

Vous devez mapper l'une de ces revendications sur google.subject pour identifier l'utilisateur de manière unique. Pour vous protéger contre les menaces de spoofing, choisissez une revendication avec une valeur unique ne pouvant pas être modifiée.

De nombreux fournisseurs d'identité renseignent la revendication sub avec un ID unique et immuable. Pour ces fournisseurs d'identité, envisagez de mapper la revendication sub sur google.subject :

google.subject=assertion.sub

Évitez d'utiliser une revendication telle que email à cette fin. Les adresses e-mail peuvent généralement être réaffectées ou modifiées pour ne pas identifier de manière unique et permanente un utilisateur.

SAML

Vos mappages d'attributs peuvent utiliser les éléments <Subject> et <Attribute> intégrés à l'assertion émise par le fournisseur d'identité externe. Les attributs SAML peuvent être désignés à l'aide des mots clés suivants :

  • assertion.subject contient le NameID de l'utilisateur authentifié disponible dans l'élément <Subject>.
  • assertion.attributes['ATTRIBUTE_NAME'] contient une liste de valeurs pour l'attribut <Attribute> portant le même nom.

Vous devez mapper l'une de ces revendications sur google.subject pour identifier l'utilisateur de manière unique. Pour vous protéger contre les menaces de spoofing, choisissez une revendication avec une valeur unique ne pouvant pas être modifiée.

De nombreux fournisseurs d'identité renseignent NameId avec un ID unique et immuable. Pour ces fournisseurs d'identité, envisagez de mapper l'attribut NameId sur google.subject :

google.subject=assertion.subject

Évitez d'utiliser un attribut tel que http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress à cette fin. Les adresses e-mail peuvent généralement être réaffectées ou modifiées pour ne pas identifier de manière unique et permanente un utilisateur.

Vous pouvez également définir une condition d'attribut. Les conditions d'attribut sont des expressions CEL qui peuvent vérifier les attributs d'assertion et les attributs cibles. Si la condition d'attribut renvoie true pour un identifiant donné, celui-ci est accepté. Dans le cas contraire, l'identifiant est rejeté.

OIDC

Vous pouvez utiliser une condition d'attribut pour limiter les utilisateurs pouvant utiliser la fédération d'identité de charge de travail afin d'obtenir des jetons Google Cloud de courte durée.

Par exemple, la condition suivante restreint l'accès aux jetons contenant une revendication service_account personnalisée avec une valeur true :

assertion.service_account==true

SAML

Vous pouvez utiliser une condition d'attribut pour limiter les utilisateurs pouvant utiliser la fédération d'identité de charge de travail afin d'obtenir des jetons Google Cloud de courte durée.

Par exemple, la condition suivante restreint l'accès aux assertions contenant un attribut https://example.com/SAML/Attributes/AllowGcpFederation personnalisé avec une valeur true :

assertion.attributes['https://example.com/SAML/Attributes/AllowGcpFederation'][0]=='true'

Créer le pool d'identité de charge de travail et le fournisseur

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer la fédération d'identité de charge de travail, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Le rôle de base IAM "Propriétaire" (roles/owner) inclut également des autorisations permettant de configurer la fédération d'identité. Les rôles de base ne doivent pas être attribués dans un environnement de production, mais ils peuvent être attribués dans un environnement de développement ou de test.

Vous avez maintenant collecté toutes les informations dont vous avez besoin pour créer un pool d'identités de charge de travail et un fournisseur :

Console

  1. Dans la console Google Cloud, accédez à la page Nouveau fournisseur et pool de charges de travail.

    Accéder au nouveau fournisseur de charges de travail et au pool

  2. Sous Créer un pool d'identités, saisissez les informations suivantes :

    • Nom : nom du pool. Le nom est également utilisé comme ID du pool. Vous ne pourrez pas modifier l'ID du pool par la suite.
    • Description : texte décrivant l'objectif du pool.
  3. Cliquez sur Continuer.

  4. Configurez les paramètres du fournisseur comme suit :

    OIDC

    • Dans Sélectionner un fournisseur, sélectionnez OpenID Connect (OIDC).
    • Dans Nom du fournisseur, saisissez un nom pour le fournisseur. Le nom est également utilisé comme ID de fournisseur. Vous ne pouvez pas modifier l'ID du fournisseur après avoir créé le fournisseur.
    • Dans URL de l'émetteur, saisissez l'URL de l'émetteur de votre IdP. L'URL doit commencer par https://.
    • Facultatif : Dans le champ Fichier JWK (JSON), choisissez un fichier JWK à importer. Si ce champ n'est pas renseigné, Google Cloud tente d'extraire un JWK à partir de l'émetteur.
    • Audiences autorisées : audience attendue des jetons d'ID.

    SAML

    • Dans Sélectionnez un fournisseur, choisissez SAML.
    • Dans Nom du fournisseur, saisissez un nom pour le fournisseur. Le nom est également utilisé comme ID de fournisseur. Vous ne pouvez pas modifier l'ID du fournisseur après avoir créé le fournisseur.
    • Dans Fichier de métadonnées IDP (XML), importez le document XML des métadonnées SAML fourni par votre fournisseur d'identité.
  5. Cliquez sur Continuer.

  6. Sous Configurer les attributs du fournisseur, ajoutez les mappages d'attributs que vous avez identifiés précédemment dans ce guide.

  7. Sous Conditions d'attribut, saisissez la condition d'attribut que vous avez identifiée précédemment dans ce guide. Laissez le champ vide si vous n'avez pas de condition d'attribut.

  8. Pour créer le pool et le fournisseur d'identités de charge de travail, cliquez sur Enregistrer.

gcloud

  1. Pour créer un pool d'identités de charge de travail, exécutez la commande suivante :

    gcloud iam workload-identity-pools create POOL_ID \
        --location="global" \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Remplacez les éléments suivants :

    • POOL_ID : ID unique du pool.
    • DISPLAY_NAME : nom du pool.
    • DESCRIPTION : description du pool que vous choisissez. Cette description apparaît lorsque vous accordez l'accès aux identités du pool.
  2. Pour ajouter un fournisseur de pools d'identités de charge de travail, procédez comme suit :

    OIDC

    Pour ajouter un fournisseur de pools d'identités de charge de travail OIDC, exécutez la commande suivante :

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --allowed-audiences="AUDIENCE" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
        --jwk-json-path="JWK_JSON_PATH"
    

    Remplacez les éléments suivants :

    • WORKLOAD_PROVIDER_ID: ID unique de fournisseur de pools d'identités de charge de travail de votre choix.
    • POOL_ID : ID du pool d'identités de charge de travail que vous avez créé précédemment.
    • ISSUER : URI d'émetteur, tel que défini dans les métadonnées OIDC.
    • AUDIENCE : audience attendue des jetons d'ID, qui, pour de nombreux fournisseurs, correspond à l'ID client.
    • MAPPINGS : liste de mappages d'attributs séparés par des virgules que vous avez créés précédemment dans ce guide
    • CONDITIONS : condition d'attribut facultative que vous avez créée précédemment dans ce guide. Supprimez le paramètre si vous n'avez pas de condition d'attribut.
    • JWK_JSON_PATH : chemin d'accès facultatif aux JWK OIDC importées localement. Si ce paramètre n'est pas spécifié, Google Cloud utilise à la place le chemin /.well-known/openid-configuration de votre IdP pour obtenir les JWK contenant les clés publiques.

    SAML

    Pour ajouter un fournisseur de pools d'identités de charge de travail SAML, exécutez la commande suivante :

    gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --idp-metadata-path="IDP_METADATA_PATH" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Remplacez les éléments suivants :

    • POOL_ID : ID du pool
    • IDP_METADATA_PATH : chemin d'accès local au document de métadonnées du fournisseur d'identité SAML
    • MAPPINGS : liste de mappages d'attributs séparés par des virgules que vous avez créés précédemment dans ce guide
    • CONDITIONS (facultatif) : condition d'attribut que vous avez créée précédemment dans ce guide

    Le préfixe gcp- est réservé et ne peut pas être utilisé dans un pool d'identités de personnel ni dans l'ID de fournisseur de pool d'identités de personnel.

    Facultatif : accepter les assertions SAML chiffrées provenant de votre fournisseur d'identité

    Pour permettre à votre fournisseur d'identité SAML 2.0 de produire des assertions SAML chiffrées pouvant être acceptées par la fédération d'identité de charge de travail, procédez comme suit :

    • Dans la fédération d'identité de charge de travail, procédez comme suit :
      • Créez une paire de clés asymétriques pour votre fournisseur de pools d'identités de charge de travail.
      • Créez une paire de clés asymétriques pour votre fournisseur de pools d'identités de charge de travail.
      • Configurez votre fournisseur d'identité SAML pour qu'il utilise la clé publique pour chiffrer les assertions SAML émises.
    • Dans votre fournisseur d'identité, procédez comme suit :
      • Activer le chiffrement des assertions, également appelé chiffrement de jeton.
      • Importez la clé publique que vous avez créée dans la fédération d'identité de charge de travail.
      • Vérifiez que votre fournisseur d'identité génère des assertions SAML chiffrées.
    Notez que, même avec les clés de fournisseur de chiffrement SAML configurées, la fédération d'identité de charge de travail peut toujours traiter une assertion en texte brut.

    Créer des clés de chiffrement d'assertion SAML pour la fédération d'identité de charge de travail

    Cette section vous guide dans la création d'une paire de clés asymétriques permettant à la fédération d'identité de charge de travail d'accepter les assertions SAML chiffrées.

    Google Cloud utilise la clé privée pour déchiffrer les assertions SAML émises par votre fournisseur d'identité. Pour créer une paire de clés asymétriques à utiliser avec le chiffrement SAML, exécutez la commande suivante. Pour en savoir plus, consultez la page Algorithmes de chiffrement SAML compatibles.

    gcloud iam workload-identity-pools providers keys create KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    Remplacez les éléments suivants :

    • KEY_ID : nom de la clé de votre choix
    • WORKLOAD_POOL_ID : ID du pool
    • WORKLOAD_PROVIDER_ID: ID du fournisseur de pools d'identités des employés
    • KEY_SPECIFICATION : spécification de clé, qui peut être rsa-2048, rsa-3072 ou rsa-4096.

    Une fois la paire de clés créée, pour télécharger la clé publique dans un fichier de certificat, exécutez la commande suivante. Seule la fédération d'identité de charge de travail a accès à la clé privée.

    gcloud iam workload-identity-pools providers keys describe KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    Remplacez les éléments suivants :

    • KEY_ID : nom de la clé
    • WORKLOAD_POOL_ID : ID du pool
    • WORKLOAD_PROVIDER_ID: ID du fournisseur de pools d'identités des employés
    • CERTIFICATE_PATH : chemin d'accès dans lequel écrire le certificat (par exemple, saml-certificate.cer ou saml-certificate.pem)

    Configurer votre fournisseur d'identité compatible avec SAML 2.0 pour émettre des assertions SAML chiffrées

    Configurez votre fournisseur d'identité SAML pour utiliser le certificat public téléchargé à la dernière étape afin de chiffrer les assertions SAML qu'il émet. Consultez l'équipe de votre fournisseur d'identité pour obtenir des instructions spécifiques.

    Après avoir configuré votre fournisseur d'identité pour chiffrer les assertions SAML, nous vous recommandons de vérifier que les assertions générées sont bien chiffrées. Même si le chiffrement des assertions SAML est configuré, la fédération d'identité de charge de travail peut toujours traiter les assertions en texte brut.

    Supprimer les clés de chiffrement de la fédération d'identité de charge de travail

    Pour supprimer les clés de chiffrement SAML, exécutez la commande suivante :
      gcloud iam workload-identity-pools providers keys delete KEY_ID \
          --workload-identity-pool WORKLOAD_POOL_ID \
          --provider WORKLOAD_PROVIDER_ID \
          --location global

    Remplacez les éléments suivants :

    • KEY_ID : nom de la clé
    • WORKLOAD_POOL_ID : ID du pool
    • WORKLOAD_PROVIDER_ID: ID du fournisseur de pools d'identités des employés

    Algorithmes de chiffrement SAML compatibles

    La fédération d'identité de charge de travail est compatible avec les algorithmes de transport de clés suivants :

    La fédération d'identité de charge de travail est compatible avec les algorithmes de chiffrement de bloc suivants :

Authentifier une charge de travail

Vous devez effectuer ces étapes une fois pour chaque charge de travail.

Autoriser votre charge de travail externe à accéder aux ressources Google Cloud

Pour autoriser votre charge de travail à accéder aux ressources Google Cloud, nous vous recommandons d'accorder un accès direct aux ressources au compte principal. Dans ce cas, le compte principal est l'utilisateur fédéré. Certains produits Google Cloud sont soumis à des limites de l'API Google Cloud. Si votre charge de travail appelle un point de terminaison d'API présentant une limite, vous pouvez emprunter l'identité d'un compte de service. Dans ce cas, le compte principal est le compte de service Google Cloud, qui agit en tant qu'identité. Vous accordez l'accès au compte de service sur la ressource.

Accès direct aux ressources

Vous pouvez accorder l'accès à une identité fédérée directement sur les ressources à l'aide de la console Google Cloud ou de gcloud CLI.

Console

Pour attribuer des rôles IAM directement sur une ressource à l'aide de la console Google Cloud, vous devez accéder à la page de la ressource, puis attribuer le rôle. L'exemple suivant montre comment accéder à la page Cloud Storage et accorder le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) à une identité fédérée directement sur un bucket Cloud Storage.

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez attribuer le rôle.

  3. Sélectionnez l'onglet Autorisations en haut de la page.

  4. Cliquez sur le bouton  Accorder l'accès.

    La boîte de dialogue Ajouter des entités principales s'affiche.

  5. Dans le champ Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au bucket.

    Par sujet

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • POOL_ID : ID du pool de charges de travail
    • SUBJECT : sujet individuel mappé à partir de votre fournisseur d'identité (par exemple, administrator@example.com)

    Par groupe

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • WORKLOAD_POOL_ID : ID du pool de charges de travail
    • GROUP : groupe mappé à partir de votre fournisseur d'identité (par exemple, administrator-group@example.com)

    Par attribut

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • WORKLOAD_POOL_ID : ID du pool de charges de travail
    • ATTRIBUTE_NAME : l'un des attributs mappés à partir de votre fournisseur d'identité
    • ATTRIBUTE_VALUE : valeur de l'attribut
  6. Sélectionnez un ou plusieurs rôles dans le menu déroulant Select a role (Sélectionnez un rôle). Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations auxquelles ils correspondent.

  7. Cliquez sur Enregistrer.

gcloud

Pour accorder des rôles IAM sur une ressource d'un projet à l'aide de gcloud CLI, procédez comme suit :

  1. Obtenez le numéro du projet dans lequel la ressource est définie.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Accordez l'accès à la ressource.

    Pour utiliser gcloud CLI afin d'attribuer le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) aux identités externes qui répondent à certains critères, exécutez la commande suivante.

    Par sujet

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Par groupe

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Par attribut

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Remplacez les éléments suivants :

    • BUCKET_ID : bucket pour lequel vous souhaitez accorder l'accès.
    • PROJECT_NUMBER : numéro du projet contenant le pool d'identités de charge de travail
    • POOL_ID : ID du pool d'identités de charge de travail.
    • SUBJECT : valeur attendue pour l'attribut que vous avez mappé sur google.subject.
    • GROUP : valeur attendue pour l'attribut que vous avez mappé sur google.groups.
    • ATTRIBUTE_NAME : nom d'un attribut personnalisé dans votre mappage d'attributs
    • ATTRIBUTE_VALUE : valeur de l'attribut personnalisé dans votre mappage d'attributs

    Vous pouvez attribuer des rôles sur n'importe quelle ressource Google Cloud compatible avec les stratégies d'autorisation IAM.

Emprunter l'identité d'un compte de service

  1. Pour créer un compte de service pour la charge de travail externe, procédez comme suit :

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Enable the APIs

    2. Créez un compte de service qui représente la charge de travail. Nous vous recommandons d'utiliser un compte de service dédié pour chaque charge de travail. Le compte de service ne doit pas obligatoirement se trouver dans le même projet que le pool d'identités de charge de travail, mais vous devez faire référence au projet qui contient le compte de service.

    3. Accordez au compte de service l'accès aux ressources auxquelles vous souhaitez que les identités externes accèdent.

    4. Attribuez le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser) au compte de service.

  2. Pour accorder l'accès à une identité fédérée à l'aide de l'emprunt d'identité d'un compte de service en utilisant la console Google Cloud ou gcloud CLI:

Console

Pour attribuer des rôles IAM à une identité fédérée avec un compte de service à l'aide de la console Google Cloud, procédez comme suit :

Compte de service dans le même projet

  1. Pour accorder l'accès à l'aide de l'emprunt d'identité d'un compte de service pour un compte de service dans le même projet, procédez comme suit:

    1. Accédez à la page Pools d'identités de charge de travail.

      Accéder aux pools d'identité de charge de travail

    2. Sélectionnez Accorder l'accès.

    3. Dans la boîte de dialogue Accorder l'accès au compte de service, sélectionnez Accorder l'accès à l'aide de l'emprunt d'identité du compte de service.

    4. Dans la liste Comptes de service, sélectionnez le compte de service pour les identités externes à emprunter, puis procédez comme suit :

    5. Pour choisir les identités du pool qui peuvent emprunter l'identité du compte de service, effectuez l'une des actions suivantes :

      • Pour n'autoriser que les identités spécifiques du pool d'identités de charge de travail à emprunter l'identité du compte de service, sélectionnez Uniquement les identités correspondant au filtre.

      • Dans la liste Nom de l'attribut, sélectionnez l'attribut sur lequel vous souhaitez filtrer les données.

      • Dans le champ Valeur d'attribut, saisissez la valeur attendue de l'attribut. Par exemple, si vous utilisez un mappage d'attribut google.subject=assertion.sub, définissez le nom de l'attribut sur subject et la valeur d'attribut sur la valeur de la revendication sub dans les jetons émis par votre fournisseur d'identité externe.

    6. Pour enregistrer la configuration, cliquez sur Enregistrer, puis sur Ignorer.

Compte de service dans un autre projet

  1. Pour accorder l'accès à l'aide de l'emprunt d'identité d'un compte de service pour un compte de service dans un autre projet, procédez comme suit:

    1. Accéder à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le compte de service que vous souhaitez usurper.

    3. Cliquez sur Gérer l'accès.

    4. Cliquez sur Ajouter un compte principal.

    5. Dans le champ Nouveau compte principal, saisissez l'un des identifiants de principal suivants pour les identités de votre pool qui usurperont l'identité du compte de service.

      Par sujet

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      Remplacez les éléments suivants :

      • PROJECT_NUMBER : numéro de projet
      • POOL_ID : ID du pool de charges de travail
      • SUBJECT : sujet individuel mappé à partir de votre fournisseur d'identité (par exemple, administrator@example.com)

      Par groupe

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

      Remplacez les éléments suivants :

      • PROJECT_NUMBER : numéro de projet
      • WORKLOAD_POOL_ID : ID du pool de charges de travail
      • GROUP : groupe mappé à partir de votre fournisseur d'identité (par exemple, administrator-group@example.com)

      Par attribut

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

      Remplacez les éléments suivants :

      • PROJECT_NUMBER : numéro de projet
      • WORKLOAD_POOL_ID : ID du pool de charges de travail
      • ATTRIBUTE_NAME : l'un des attributs mappés à partir de votre fournisseur d'identité
      • ATTRIBUTE_VALUE : valeur de l'attribut

      Par piscine

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      Remplacez les éléments suivants :

      • PROJECT_NUMBER : numéro de projet
      • WORKLOAD_POOL_ID : ID du pool de charges de travail
    6. Dans Sélectionner un rôle, sélectionnez le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser).

    7. Pour enregistrer la configuration, cliquez sur Enregistrer.

gcloud

Pour utiliser gcloud CLI afin d'attribuer le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser) aux identités externes qui répondent à certains critères, exécutez la commande suivante.

Par sujet

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

Par groupe

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

Par attribut

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

Remplacez les éléments suivants :

  • SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service
  • PROJECT_NUMBER : numéro du projet contenant le pool d'identités de charge de travail
  • POOL_ID : ID du pool d'identités de charge de travail.
  • SUBJECT : valeur attendue pour l'attribut que vous avez mappé sur google.subject.
  • GROUP : valeur attendue pour l'attribut que vous avez mappé sur google.groups.
  • ATTRIBUTE_NAME : nom d'un attribut personnalisé dans votre mappage d'attributs
  • ATTRIBUTE_VALUE : valeur de l'attribut personnalisé dans votre mappage d'attributs

Télécharger une configuration d'identifiants

Cette section explique comment télécharger la configuration des identifiants à l'aide de la console Google Cloud.

Pour permettre à votre charge de travail d'accéder aux bibliothèques clientes, vous devez d'abord télécharger et configurer les identifiants par défaut de l'application en procédant comme suit :

  1. Dans la console Google Cloud, accédez à la page Pools d'identités de charge de travail.

    Accéder aux pools d'identité de charge de travail
  2. Dans le tableau, sélectionnez votre pool pour accéder à sa page d'informations.

  3. Cliquez sur Accorder l'accès.

  4. Sélectionnez Accorder l'accès à l'aide d'identités fédérées (recommandé)

  5. Pour télécharger les identifiants par défaut de l'application afin que votre charge de travail puisse accéder aux bibliothèques clientes, procédez comme suit :

    1. Cliquez sur Télécharger la configuration.

    2. Dans la boîte de dialogue Configurer votre application, procédez comme suit :

      1. Dans la liste déroulante Fournisseur, sélectionnez votre fournisseur.

      2. Dans Chemin d'accès au jeton OIDC ou Chemin d'accès à l'assertion SAML, saisissez le chemin d'accès au jeton ou à l'assertion.

      3. Dans la liste déroulante Type de format, sélectionnez le format.

    3. Cliquez sur Télécharger la configuration et notez le chemin d'accès dans lequel vous avez enregistré le fichier.

Créer une configuration d'identifiants

Les bibliothèques clientes Cloud, gcloud CLI et Terraform peuvent obtenir automatiquement des identifiants externes et les utiliser pour accéder à Google Cloud. Pour permettre aux bibliothèques et aux outils de mener ce processus à son terme, vous devez fournir un fichier de configuration des identifiants. Ce fichier définit les éléments suivants :

  • Où obtenir des identifiants externes
  • Quel pool d'identités de charge de travail et quel fournisseur utiliser
  • À quel compte de service emprunter l'identité, si vous utilisez l'emprunt d'identité de compte de service

Les bibliothèques clientes Cloud obtiennent des identifiants externes à partir d'un fichier local, une URL HTTP, en exécutant un exécutable local :

  • Identifiants exécutables : les bibliothèques lancent un fichier exécutable chaque fois qu'elles ont besoin d'un nouvel identifiant. Si l'exécutable parvient à obtenir un nouvel identifiant externe, il doit écrire dans STDOUT un document JSON semblable à celui-ci :

    OIDC

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:id_token",
      "id_token": "HEADER.PAYLOAD.SIGNATURE",
      "expiration_time": 1620499962
    }
    

    Si l'exécutable ne parvient pas à obtenir de nouveaux identifiants, il doit écrire dans STDOUT un document JSON semblable à celui-ci :

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Les documents JSON utilisent les champs suivants :

    • version : version de la sortie JSON. Seule la version 1 est compatible.
    • success : état de la réponse.

      Lorsque la valeur est true, la réponse doit contenir les champs id_token et token_type. L'exécutable doit se fermer avec le code de sortie "0".

      Lorsque la valeur est false, la réponse doit contenir les champs code et message, et se fermer avec une valeur non nulle.

    • token_type : type de jeton des identifiants externes. Les valeurs compatibles sont

      • urn:ietf:params:oauth:token-type:id_token
      • urn:ietf:params:oauth:token-type:jwt
    • id_token : identifiant externe.

    • expiration_time : délai d'expiration du jeton OIDC en secondes (epoch Unix). Le champ n'est requis que lorsqu'un fichier de sortie a été spécifié dans la configuration des identifiants.

    • code : chaîne du code d'erreur.

    • message : message d'erreur

    SAML

    {
      "version": 1,
      "success": true,
      "token_type": "urn:ietf:params:oauth:token-type:saml2",
      "saml_response": "...",
      "expiration_time": 1620499962
    }
    

    Si l'exécutable ne parvient pas à obtenir de nouveaux identifiants, il doit écrire dans STDOUT un document JSON semblable à celui-ci :

    {
      "version": 1,
      "success": false,
      "code": "401",
      "message": "Caller not authorized."
    }
    

    Les documents JSON utilisent les champs suivants :

    • version : version de la sortie JSON. Seule la version 1 est compatible.
    • success : état de la réponse.

      Lorsque la valeur est true, la réponse doit contenir les champs id_token et token_type. L'exécutable doit se fermer avec le code de sortie "0".

      Lorsque la valeur est false, la réponse doit contenir les champs code et message, et se fermer avec une valeur non nulle.

    • token_type : type de jeton des identifiants externes. Doit être urn:ietf:params:oauth:token-type:saml2.

    • saml_response : réponse SAML ou assertion SAML encodée en base64.

    • expiration_time : délai d'expiration de l'assertion en secondes (époque Unix). Le champ n'est requis que lorsqu'un fichier de sortie a été spécifié dans la configuration des identifiants.

    • code : chaîne du code d'erreur.

    • message : message d'erreur

    Lors du lancement de l'exécutable, les bibliothèques clientes définissent les variables d'environnement suivantes :

    • GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE : audience de la configuration des identifiants. Toujours présent.
    • GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE : type de jeton d'objet attendu. Toujours présent.
    • GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL : adresse e-mail du compte de service. Présent uniquement en cas d'usurpation d'identité d'un compte de service.
    • GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE : emplacement du fichier de sortie issu de la configuration des identifiants. N'est présent que s'il est spécifié dans la configuration des identifiants.

    Pour utiliser des identifiants d'origine exécutable, vous devez définir la variable d'environnement GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES sur 1.

  • Identifiants provenant du fichier : les bibliothèques lisent les identifiants externes à partir d'un fichier texte local ou JSON. Exemple :

    JSON

    {
      "mytoken": "ey...
    }
    

    Texte

    ey...
    

    Les identifiants externes peuvent être les suivants :

    • un jeton OIDC
    • une réponse SAML
    • une assertion SAML encodée en base64

    Vous devez mettre à jour régulièrement le fichier de sorte qu'il contienne toujours des identifiants valides. Par exemple, si le jeton OIDC ou l'assertion SAML est valide pendant une heure, vous devez actualiser le fichier au moins une fois par heure.

  • Identifiants issus de l'URL : les bibliothèques envoient une requête GET à un point de terminaison HTTP chaque fois qu'elles ont besoin d'un nouvel identifiant. Le point de terminaison doit renvoyer un texte brut ou une réponse JSON équivalente au format utilisé par les identifiants sources du fichier.

Pour créer un fichier de configuration d'identifiants, procédez comme suit :

Identifiants exécutables

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --executable-command=EXECUTABLE_COMMAND \
    --executable-timeout-millis=EXECUTABLE_TIMEOUT \
    --executable-output-file=EXECUTABLE_OUTPUT_FILE

Remplacez les éléments suivants :

  • PROJECT_NUMBER : numéro de projet du projet contenant le pool d'identités de charge de travail
  • POOL_ID : ID du pool d'identités de charge de travail
  • WORKLOAD_PROVIDER_ID : ID du fournisseur du pool d'identités de charge de travail
  • SERVICE_ACCOUNT_EMAIL : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par l'adresse e-mail du compte de service. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par la durée de vie du jeton d'accès au compte de service, exprimée en secondes. Lorsqu'elle n'est pas fournie, la valeur par défaut est d'une heure. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service. Pour spécifier une durée de vie supérieure à une heure, vous devez configurer la contrainte de règle d'administration constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH : fichier dans lequel enregistrer la configuration.
  • EXECUTABLE_COMMAND : commande complète, comprenant les arguments, à exécuter pour récupérer le jeton d'ID OIDC, par exemple --executable-command="/path/to/command --foo=bar".
  • EXECUTABLE_TIMEOUT : durée facultative en millisecondes d'attente pour l'exécution de l'exécutable (par défaut, 30 s)
  • EXECUTABLE_OUTPUT_FILE : chemin d'accès qui pointe vers les identifiants 3PI générés par l'exécutable. Cela s'avère utile pour mettre en cache les identifiants. Si vous spécifiez ce chemin d'accès, les bibliothèques d'authentification vérifient d'abord son existence avant d'exécuter le fichier exécutable.

Identifiants d'origine du fichier

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-file=TOKEN_FILEPATH \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Remplacez les éléments suivants :

  • PROJECT_NUMBER : numéro de projet du projet contenant le pool d'identités de charge de travail
  • POOL_ID : ID du pool d'identités de charge de travail
  • WORKLOAD_PROVIDER_ID : ID du fournisseur du pool d'identités de charge de travail
  • SERVICE_ACCOUNT_EMAIL : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par l'adresse e-mail du compte de service. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par la durée de vie du jeton d'accès au compte de service, exprimée en secondes. Lorsqu'elle n'est pas fournie, la valeur par défaut est d'une heure. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service. Pour spécifier une durée de vie supérieure à une heure, vous devez configurer la contrainte de règle d'administration constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH : fichier dans lequel enregistrer la configuration
  • TOKEN_FILEPATH : chemin d'accès à l'emplacement où sont stockés les jetons d'ID OIDC
  • SOURCE_TYPE : format du fichier de jeton d'ID OIDC, défini sur text (par défaut) ou json
  • FIELD_NAME : champ dans le fichier texte contenant le jeton (si SOURCE_TYPE est json)

Identifiants provenant d'URL

gcloud iam workload-identity-pools create-cred-config \
    projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
    --output-file=FILEPATH.json \
    --credential-source-url="TOKEN_URL" \
    --credential-source-headers="KEY_1=VALUE_1,KEY_2=VALUE_2" \
    --credential-source-type=SOURCE_TYPE \
    --credential-source-field-name=FIELD_NAME

Remplacez les éléments suivants :

  • PROJECT_NUMBER : numéro du projet contenant le pool d'identités de charge de travail
  • POOL_ID : ID du pool d'identités de charge de travail
  • WORKLOAD_PROVIDER_ID: ID du fournisseur du pool d'identités de charge de travail
  • SERVICE_ACCOUNT_EMAIL : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par l'adresse e-mail du compte de service. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME : si vous utilisez l'emprunt d'identité d'un compte de service, remplacez cette valeur par la durée de vie du jeton d'accès au compte de service, exprimée en secondes. Lorsqu'elle n'est pas fournie, la valeur par défaut est d'une heure. Omettez cette option si vous n'utilisez pas l'emprunt d'identité d'un compte de service. Pour spécifier une durée de vie supérieure à une heure, vous devez configurer la contrainte de règle d'administration constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH : fichier dans lequel enregistrer la configuration.
  • TOKEN_URL : URL à partir de laquelle récupérer le jeton d'ID OIDC
  • KEY_n, VALUE_n : en-têtes personnalisés à inclure dans la requête HTTP vers TOKEN_URL
  • SOURCE_TYPE : format du fichier de jeton d'ID OIDC, défini sur text (par défaut) ou json
  • FIELD_NAME : champ dans le fichier texte contenant le jeton (si SOURCE_TYPE est json)

Utiliser la configuration des identifiants pour accéder à Google Cloud

Pour permettre aux outils et aux bibliothèques clientes d'utiliser votre configuration d'identifiants, procédez comme suit :

  1. Initialisez une variable d'environnement GOOGLE_APPLICATION_CREDENTIALS et pointez-la vers le fichier de configuration des identifiants :

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    FILEPATH est le chemin d'accès relatif au fichier de configuration des identifiants.

    PowerShell

      $env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
      
    FILEPATH est le chemin d'accès relatif au fichier de configuration des identifiants.
  2. Utilisez une bibliothèque cliente ou un outil compatible avec la fédération d'identité de charge de travail et capable de trouver automatiquement les identifiants :

    C++

    Les bibliothèques clientes Google Cloud pour C++ sont compatibles avec la fédération d'identité de charge de travail depuis la version v2.6.0. Pour utiliser la fédération d'identité de charge de travail, vous devez créer les bibliothèques clientes avec la version 1.36.0 ou ultérieure de gRPC.

    Go

    Les bibliothèques clientes pour Go sont compatibles avec la fédération d'identité si elles utilisent la version 0.0.0-20210218202405-ba52d332ba99 ou une version ultérieure du module golang.org/x/oauth2.

    Pour vérifier quelle version de ce module est utilisée par votre bibliothèque cliente, exécutez les commandes suivantes :

    cd $GOPATH/src/cloud.google.com/go
    go list -m golang.org/x/oauth2
    

    Java

    Les bibliothèques clientes pour Java sont compatibles avec la fédération d'identité si elles utilisent la version 0.24.0 ou une version ultérieure de l'artefact com.google.auth:google-auth-library-oauth2-http.

    Pour vérifier la version de cet artefact utilisée par votre bibliothèque cliente, exécutez la commande Maven suivante dans le répertoire de votre application :

    mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
    

    Node.js

    Les bibliothèques clientes pour Node.js sont compatibles avec la fédération d'identité de charge de travail si elles utilisent la version 7.0.2 ou ultérieure du package google-auth-library.

    Pour vérifier la version de ce package utilisée par votre bibliothèque cliente, exécutez la commande suivante dans le répertoire de votre application :

    npm list google-auth-library
    

    Lorsque vous créez un objet GoogleAuth, vous pouvez spécifier un ID de projet ou autoriser GoogleAuth à le trouver automatiquement. Pour trouver automatiquement l'ID du projet, le compte de service dans le fichier de configuration doit disposer du rôle de visiteur (roles/browser) ou d'un rôle avec des autorisations équivalentes sur votre projet. Pour en savoir plus, consultez la section README du package google-auth-library.

    Python

    Les bibliothèques clientes pour Python sont compatibles avec la fédération d'identité si elles utilisent la version 1.27.0 ou ultérieure du package google-auth.

    Pour vérifier la version de ce package utilisée par votre bibliothèque cliente, exécutez la commande suivante dans l'environnement dans lequel le package est installé :

    pip show google-auth
    

    Pour spécifier un ID de projet pour le client d'authentification, vous pouvez définir la variable d'environnement GOOGLE_CLOUD_PROJECT ou autoriser le client à trouver automatiquement l'ID du projet. Pour trouver automatiquement l'ID du projet, le compte de service dans le fichier de configuration doit disposer du rôle de visiteur (roles/browser) ou d'un rôle avec des autorisations équivalentes sur votre projet. Pour en savoir plus, consultez le guide de l'utilisateur du package google-auth.

    gcloud

    Pour vous authentifier à l'aide de la fédération d'identité de charge de travail, utilisez la commande gcloud auth login :

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

    Remplacez FILEPATH par le chemin d'accès au fichier de configuration des identifiants.

    La fédération d'identité de charge de travail dans gcloud CLI est disponible dans les versions 363.0.0 et ultérieures de gcloud CLI.

    Terraform

    Le fournisseur Google Cloud est compatible avec la fédération d'identité de charge de travail si vous utilisez la version 3.61.0 ou ultérieure :

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 3.61.0"
        }
      }
    }
    

    bq

    Pour vous authentifier à l'aide de la fédération d'identité de charge de travail, utilisez la commande gcloud auth login, comme suit :

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

    Remplacez FILEPATH par le chemin d'accès au fichier de configuration des identifiants.

    La fédération d'identité de charge de travail dans bq est disponible dans les versions 390.0.0 et ultérieures de gcloud CLI.

Étape suivante