Ce guide explique comment utiliser la fédération d'identité de charge de travail pour permettre aux charges de travail de VM AWS et Azure de s'authentifier auprès de Google Cloud sans clé de compte de service.
Si vous utilisez Amazon Elastic Kubernetes Service (Amazon EKS) ou Azure Kubernetes Service (AKS), consultez Configurer la fédération d'identité de charge de travail avec Kubernetes pour découvrir comment configurer la fédération d'identité de charge de travail pour vos clusters. Cette page ne traite que de la configuration de la fédération d'identité de charge de travail pour les VM AWS et Azure.
Grâce à la fédération d'identité de charge de travail, les charges de travail exécutées sur des VM AWS EC2 et Azure peuvent échanger leurs identifiants spécifiques à l'environnement contre des jetons de service et de sécuritéGoogle Cloud de courte durée.
Les identifiants spécifiques à l'environnement incluent les suivants :
- Les instances AWS EC2 peuvent utiliser des profils d'instance pour demander des identifiants temporaires.
- Les VM Azure peuvent utiliser des identités gérées pour obtenir des jetons d'accès Azure.
En configurant la fédération d'identité de charge de travail, vous pouvez autoriser ces charges de travail à échanger ces identifiants spécifiques à l'environnement contre des identifiantsGoogle Cloud de courte durée. Les charges de travail peuvent utiliser ces identifiants éphémères pour accéder aux API Google Cloud .
Avant de commencer
Configurez l'authentification.
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services Google Cloud et aux API, vous n'avez pas besoin de configurer l'authentification.
gcloud
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Python
Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez les Identifiants par défaut de l'application avec vos identifiants utilisateur.
-
Installez la Google Cloud CLI.
-
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.
-
Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :
gcloud auth application-default login
Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.
Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .
-
Préparer votre fournisseur d'identité externe
Vous n'avez besoin de suivre ces étapes qu'une seule fois pour chaque locataire Microsoft Entra ID ou compte AWS.
AWS
Vous n'avez pas besoin de modifier la configuration dans votre compte AWS.
Après avoir configuré un pool d'identités de charge de travail pour qu'il approuve votre compte AWS, vous pouvez autoriser les utilisateurs AWS et les rôles AWS à utiliser des identifiants de sécurité AWS permanents ou temporaires pour obtenir des identifiants Google Cloud de courte durée.
Azure
Vous devez créer une application Microsoft Entra ID dans votre locataire Microsoft Entra ID et la configurer pour pouvoir l'utiliser pour la fédération d'identité de charge de travail.
Une fois que vous avez configuré un pool d'identités de charge de travail pour approuver l'application, les utilisateurs Azure et les comptes de services principaux peuvent demander des jetons d'accès pour cette application et les échanger contre des identifiants Google Cloud de courte durée.
Pour créer l'application, procédez comme suit :
Créez une application Microsoft Entra ID et un compte principal de service.
Définissez un URI d'ID d'application pour l'application. Vous pouvez utiliser l'URI d'ID d'application par défaut (
APPID) ou spécifier un URI personnalisé.Vous aurez besoin de l'URI d'ID d'application lors de la configuration du fournisseur du pool d'identités de charge de travail.
Pour permettre à une application d'obtenir des jetons d'accès pour l'application Microsoft Entra ID, vous pouvez utiliser des identités gérées :
Créez une identité gérée. Notez l'ID d'objet de l'identité gérée. Vous en aurez besoin plus tard lors de la configuration de l'emprunt d'identité.
Attribuez l'identité gérée à une machine virtuelle ou à une autre ressource qui exécute votre application.
Configurer la fédération d'identité de charge de travail
Vous n'avez besoin d'effectuer ces étapes qu'une seule fois par compte AWS ou locataire Microsoft Entra ID. 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 :
-
Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
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.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez les API IAM, Resource Manager, Service Account Credentials et Security Token Service.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.
Définir un mappage et une condition d'attribut
Les identifiants spécifiques à l'environnement de votre charge de travail AWS ou Azure contiennent plusieurs attributs. Vous devez choisir l'attribut que vous souhaitez utiliser comme identifiant de sujet (google.subject) dans Google Cloud.
Google Cloud utilise l'identifiant de sujet dans Cloud Audit Logs et dans les identifiants principaux pour identifier de manière unique un utilisateur ou un rôle AWS ou Azure.
Vous pouvez éventuellement mapper d'autres attributs. Vous pouvez ensuite faire référence à ces attributs supplémentaires lorsque vous autorisez l'accès aux ressources.
AWS
Vos mappages d'attributs peuvent utiliser les champs de réponse pour GetCallerIdentity comme attributs sources. Ces champs incluent les suivants :
account: numéro de compte AWS.arn: ARN AWS de l'entité externe.userid: identifiant unique de l'entité appelante.
Si votre application s'exécute sur une instance Amazon Elastic Compute Cloud (EC2) avec un rôle associé, vous pouvez utiliser le mappage d'attributs suivant :
google.subject=assertion.arn
attribute.account=assertion.account
attribute.aws_role=assertion.arn.extract('assumed-role/{role}/')
attribute.aws_ec2_instance=assertion.arn.extract('assumed-role/{role_and_session}').extract('/{session}')
Le mappage effectue les opérations suivantes :
- Utilise l'ARN comme identifiant de sujet (par exemple :
"arn:aws:sts::000000000000:assumed-role/ec2-my-role/i-00000000000000000) - Introduit un attribut personnalisé
accountet lui confère l'ID de compte AWS. - Introduit un attribut personnalisé
aws_roleet lui confère le nom de rôle AWS, par exemple :ec2-my-role. - Introduit un attribut personnalisé
aws_ec2_instanceet lui confère l'ID d'instance EC2, par exemple :i-00000000000000000
Ce mappage vous permet d'accorder l'accès aux éléments suivants :
Une instance EC2 spécifique :
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_ec2_instance/EC2_INSTANCE_ID
Tous les utilisateurs et toutes les instances d'un rôle :
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_role/ROLE_NAME
Azure
Vos mappages d'attributs peuvent utiliser les revendications intégrées aux jetons d'accès Azure, y compris les revendications personnalisées, en tant qu'attributs sources.
Dans la plupart des cas, il est préférable d'utiliser la revendication sub comme identifiant de sujet :
google.subject=assertion.sub
Lorsque la revendication sub dépasse la limite de 127 caractères pour google.subject, nous vous recommandons d'utiliser la fonction extract pour obtenir un identifiant de sujet. Par exemple :
google.subject=assertion.sub.extract('/eid1/c/pub/t/{sub_claim}')
Pour un jeton d'accès attribué à une identité gérée, la revendication sub contient l'ID d'objet de l'identité gérée. Si vous utilisez une autre revendication, assurez-vous qu'elle est unique et ne peut pas être réaffectée.
Si vous n'êtes pas sûr de la liste des revendications que vous pouvez référencer, procédez comme suit :
Connectez-vous à une VM Azure à laquelle une identité gérée est attribuée.
Obtenez un jeton d'accès auprès du service de métadonnées d'instance Azure (IMDS) :
Bash
curl \ "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \ -H "Metadata: true" | jq -r .access_token
Cette commande utilise l'outil
jq.jqest disponible par défaut dans Cloud Shell.PowerShell
$SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt" $SubjectToken = (Invoke-RestMethod ` -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" ` -Headers @{Metadata="true"}).access_token Write-Host $SubjectTokenRemplacez
APP_ID_URIpar l'URI d'ID d'application de l'application que vous avez configurée pour la fédération d'identité de charge de travail.Dans un navigateur Web, accédez à
https://jwt.ms/et collez le jeton d'accès dans le champ.Cliquez sur Revendications pour afficher la liste des revendications intégrées dans le jeton d'accès.
Pour les identités de service, il n'est généralement pas nécessaire de créer un mappage pour google.groups ou tout attribut personnalisé.
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é.
AWS
Vous pouvez utiliser une condition d'attribut pour limiter les utilisateurs et les rôles IAM pouvant utiliser la fédération d'identité de charge de travail pour obtenir des jetons Google Cloud
Par exemple, la condition suivante restreint l'accès aux rôles AWS et interdit les autres identifiants IAM :
assertion.arn.startsWith('arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/')
Azure
Vous pouvez utiliser une condition d'attribut pour limiter les utilisateurs et les comptes principaux de service pouvant utiliser la fédération d'identité de charge de travail afin d'obtenir des jetons Google Cloudde courte durée. Vous pouvez également configurer votre application Microsoft Entra ID pour utiliser des attributions de rôles d'application.
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 :
-
Administrateur de pools Workload Identity (
roles/iam.workloadIdentityPoolAdmin) -
Administrateur de compte de service (
roles/iam.serviceAccountAdmin)
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
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
Dans la section 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.
Cliquez sur Continuer.
Configurez les paramètres du fournisseur :
AWS
Configurez les paramètres de fournisseur suivants :
- Sélectionnez un fournisseur : AWS.
- Nom du fournisseur : nom du fournisseur. Le nom est également utilisé comme ID de fournisseur. Vous ne pourrez pas modifier l'ID du fournisseur par la suite.
Azure
Configurez les paramètres de fournisseur suivants :
- Sélectionner un fournisseur : OpenID Connect (OIDC).
- Nom du fournisseur : nom du fournisseur. Le nom est également utilisé comme ID de fournisseur. Vous ne pourrez pas modifier l'ID du fournisseur par la suite.
- URL de l'émetteur :
https://sts.windows.net/TENANT_ID. RemplacezTENANT_IDpar l'ID de locataire (GUID) de votre locataire Microsoft Entra ID. - Audiences autorisées : URI d'ID d'application que vous avez utilisé lorsque vous avez enregistré l'application dans Microsoft Entra ID.
Cliquez sur Continuer.
Dans la section Configurer les attributs du fournisseur, ajoutez les mappages d'attributs que vous avez identifiés précédemment.
Dans la section Conditions d'attribut, saisissez la condition d'attribut que vous avez identifiée précédemment. Laissez le champ vide si vous n'avez pas de condition d'attribut.
Cliquez sur Enregistrer pour créer le pool d'identités de charge de travail et le fournisseur.
gcloud
Créez un pool d'identités de charge de travail :
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. Cette description apparaît lorsque vous accordez l'accès aux identités du pool.
Ajoutez un fournisseur de pool d'identités de charge de travail :
AWS
Pour créer le fournisseur de pool d'identités de charge de travail pour AWS, exécutez la commande suivante :
gcloud iam workload-identity-pools providers create-aws PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --account-id="ACCOUNT_ID" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"
Remplacez les éléments suivants :
PROVIDER_ID: ID unique du fournisseur.POOL_ID: ID du pool.ACCOUNT_ID: numéro à 12 chiffres qui identifie votre compte AWS.MAPPINGS: liste des mappages d'attributs que vous avez identifiés précédemment, séparés par des virgules.CONDITIONS: condition d'attribut que vous avez identifiée précédemment. Supprimez le paramètre si vous n'avez pas de condition d'attribut.
Exemple :
gcloud iam workload-identity-pools providers create-aws example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --account-id="123456789000" \ --attribute-mapping="google.subject=assertion.arn"
Azure
Pour créer le fournisseur de pools d'identités de charge de travail pour Azure, exécutez la commande suivante :
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER_URI" \ --allowed-audiences="APPLICATION_ID_URI" \ --attribute-mapping="MAPPINGS" \ --attribute-condition="CONDITIONS"Remplacez les éléments suivants :
PROVIDER_ID: ID unique du fournisseur.POOL_ID: ID du pool.ISSUER_URI: ID de locataire (GUID) de votre locataire Microsoft Entra ID, parfois au formathttps://sts.windows.net/TENANT_ID. L'URI d'émetteur peut varier et pour trouver l'URI de l'émetteur, vous pouvez déboguer votre JWT à l'aide de JWT.io.APPLICATION_ID_URI: URI d'ID d'application que vous avez utilisé lorsque vous avez enregistré l'application dans Microsoft Entra ID.MAPPINGS: liste de mappages d'attributs que vous avez précédemment identifiés, séparés par des virgules.CONDITIONS: (facultatif) condition d'attribut que vous avez identifiée précédemment.
Exemple :
gcloud iam workload-identity-pools providers create-oidc example-provider \ --location="global" \ --workload-identity-pool="pool-1" \ --issuer-uri="https://sts.windows.net/00000000-1111-2222-3333-444444444444" \ --allowed-audiences="api://my-app" \ --attribute-mapping="google.subject=assertion.sub,google.groups=assertion.groups"
Authentifier une charge de travail
Vous devez effectuer ces étapes une fois par 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, nous vous recommandons d'accorder un accès direct aux ressources au compte principal. Google Cloud Dans ce cas, le compte principal est l'utilisateur fédéré. Certains produits Google Cloud sont soumis à des limites d'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 serviceGoogle 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.
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez attribuer le rôle.
Sélectionnez l'onglet Autorisations en haut de la page.
Cliquez sur le bouton add_box Accorder l'accès.
La boîte de dialogue Ajouter des entités principales s'affiche.
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/SUBJECTRemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetPOOL_ID: ID du pool de charges de travailSUBJECT: 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/GROUPRemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetWORKLOAD_POOL_ID: ID du pool de charges de travailGROUP: 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_VALUERemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetWORKLOAD_POOL_ID: ID du pool de charges de travailATTRIBUTE_NAME: l'un des attributs mappés à partir de votre fournisseur d'identitéATTRIBUTE_VALUE: valeur de l'attribut
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.
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 :
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\)
Accordez l'accès à la ressource.
Pour attribuer le rôle Lecteur d'objets de stockage (
roles/storage.objectViewer) à des identités externes qui répondent à certains critères à l'aide de gcloud CLI, 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 travailPOOL_ID: ID du pool d'identités de charge de travail.SUBJECT: valeur attendue pour l'attribut que vous avez mappé surgoogle.subject.GROUP: valeur attendue pour l'attribut que vous avez mappé surgoogle.groups.ATTRIBUTE_NAME: nom d'un attribut personnalisé dans votre mappage d'attributsATTRIBUTE_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
Pour créer un compte de service pour la charge de travail externe, procédez comme suit :
Activez les API IAM, Security Token Service et Service Account Credentials.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.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.
Accordez au compte de service l'accès aux ressources auxquelles vous souhaitez que les identités externes accèdent.
Pour permettre à l'identité fédérée d'emprunter l'identité du compte de service, procédez comme suit :
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
Pour accorder l'accès à l'aide de l'emprunt d'identité d'un compte de service dans le même projet, procédez comme suit :
Accédez à la page Pools d'identités de charge de travail.
Sélectionnez Accorder l'accès.
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.
Dans la liste Comptes de service, sélectionnez le compte de service pour les identités externes à emprunter, puis procédez comme suit :
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 sursubjectet la valeur d'attribut sur la valeur de la revendicationsubdans les jetons émis par votre fournisseur d'identité externe.
Pour enregistrer la configuration, cliquez sur Enregistrer, puis sur Ignorer.
Compte de service dans un autre projet
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 :
Accéder à la page Comptes de service.
Sélectionnez le compte de service que vous souhaitez usurper.
Cliquez sur Gérer l'accès.
Cliquez sur Ajouter un compte principal.
Dans le champ Nouveau compte principal, saisissez l'identifiant de l'un des comptes principaux 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/SUBJECTRemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetPOOL_ID: ID du pool de charges de travailSUBJECT: 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/GROUPRemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetWORKLOAD_POOL_ID: ID du pool de charges de travailGROUP: 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_VALUERemplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetWORKLOAD_POOL_ID: ID du pool de charges de travailATTRIBUTE_NAME: l'un des attributs mappés à partir de votre fournisseur d'identitéATTRIBUTE_VALUE: valeur de l'attribut
Par pool
principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*Remplacez les éléments suivants :
PROJECT_NUMBER: numéro de projetWORKLOAD_POOL_ID: ID du pool de charges de travail
Dans Sélectionner un rôle, sélectionnez le rôle Utilisateur Workload Identity (
roles/iam.workloadIdentityUser).Pour enregistrer la configuration, cliquez sur Enregistrer.
gcloud
Pour attribuer le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser) à un compte principal ou un ensemble de comptes principaux fédérés, exécutez la commande suivante. Pour en savoir plus sur les identifiants de compte principal de la fédération d'identité de charge de travail, consultez Types de comptes principaux.
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 servicePROJECT_NUMBER: numéro du projet contenant le pool d'identités de charge de travailPOOL_ID: ID du pool d'identités de charge de travail.SUBJECT: valeur attendue pour l'attribut que vous avez mappé surgoogle.subject.GROUP: valeur attendue pour l'attribut que vous avez mappé surgoogle.groups.ATTRIBUTE_NAME: nom d'un attribut personnalisé dans votre mappage d'attributsATTRIBUTE_VALUE: valeur de l'attribut personnalisé dans votre mappage d'attributs
Télécharger ou 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 emprunter l'identité d'un compte de service. 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é
Pour créer un fichier de configuration d'identifiants, procédez comme suit :
Console
Pour télécharger un fichier de configuration des identifiants dans la console Google Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Pools d'identités de charge de travail.
Recherchez le pool d'identités de charge de travail du fournisseur d'identité que vous souhaitez utiliser, puis cliquez dessus.
Si vous avez choisi d'utiliser l'accès direct aux ressources, procédez comme suit :
Cliquez sur Accorder l'accès.
Sélectionnez Accorder l'accès à l'aide d'identités fédérées (recommandé).
Cliquez sur Télécharger.
Passez aux instructions de la boîte de dialogue Configurer votre application, plus loin dans cette procédure.
Si vous avez choisi d'emprunter l'identité d'un compte de service, procédez comme suit :
Sélectionnez Comptes de service connectés.
Recherchez le compte de service que vous souhaitez utiliser, puis cliquez sur Télécharger.
Passez aux instructions de la boîte de dialogue Configurer votre application, plus loin dans cette procédure.
Dans la boîte de dialogue Configurer votre application, sélectionnez le fournisseur contenant les identités externes.
Spécifiez les paramètres supplémentaires suivants :
AWS
Aucun paramètre supplémentaire n'est requis.
Azure
URL d'ID d'application : URI d'ID application de l'application Azure
Sélectionnez Télécharger la configuration pour télécharger le fichier de configuration des identifiants, puis cliquez sur Fermer.
Si vous souhaitez utiliser les points de terminaison régionaux Security Token Service (par exemple, https://sts.us-central1.rep.googleapis.com), consultez Utiliser les points de terminaison régionaux Security Token Service pour une fiabilité accrue.
gcloud
Pour créer un fichier de configuration d'identifiants à l'aide de gcloud iam workload-identity-pools create-cred-config, procédez comme suit :
AWS
Pour créer un fichier de configuration des identifiants permettant à la bibliothèque d'obtenir un jeton d'accès à partir des métadonnées de l'instance EC2, procédez comme suit :
gcloud iam workload-identity-pools create-cred-config \
projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
--service-account=SERVICE_ACCOUNT_EMAIL \
--service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
--aws \
--sts-location=REGION \
--output-file=FILEPATH.json
Remplacez les éléments suivants :
PROJECT_NUMBER: numéro du projet contenant le pool d'identités de charge de travailPOOL_ID: ID du pool d'identités de charge de travailPROVIDER_ID: ID du fournisseur du pool d'identités de charge de travailSERVICE_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'administrationconstraints/iam.allowServiceAccountCredentialLifetimeExtension.FILEPATH: fichier dans lequel enregistrer la configuration.Region: facultatif. Spécifiez la région des points de terminaison régionaux du service Security Token Service, le cas échéant.
Si vous utilisez AWS IMDSv2, une option supplémentaire --enable-imdsv2 doit être ajoutée à la commande gcloud iam workload-identity-pools create-cred-config :
gcloud iam workload-identity-pools create-cred-config \
projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
--service-account=SERVICE_ACCOUNT_EMAIL \
--aws \
--enable-imdsv2 \
--sts-location=REGION \
--output-file=FILEPATH.json
Si l'utilisation du serveur de métadonnées AWS n'est pas possible, vous pouvez fournir des identifiants de sécurité AWS via les variables d'environnement AWS suivantes :
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONouAWS_DEFAULT_REGION- Facultatif :
AWS_SESSION_TOKEN.
Les bibliothèques et gcloud CLI utilisent ces variables d'environnement AWS lorsque le serveur de métadonnées AWS n'est pas disponible.
Azure
Créez un fichier de configuration des identifiants autorisant la bibliothèque à obtenir un jeton d'accès à partir du service de métadonnées d'instance Azure (IMDS) :
gcloud iam workload-identity-pools create-cred-config \
projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
--service-account=SERVICE_ACCOUNT_EMAIL \
--service-account-token-lifetime-seconds=SERVICE_ACCOUNT_TOKEN_LIFETIME \
--azure \
--app-id-uri APPLICATION_ID_URI \
--sts-location=REGION \
--output-file=FILEPATH.json
Remplacez les éléments suivants :
PROJECT_NUMBER: numéro de projet du projet contenant le pool d'identités de charge de travailPOOL_ID: ID du pool d'identités de charge de travailPROVIDER_ID: ID du fournisseur du pool d'identités de charge de travailSERVICE_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.APPLICATION_ID_URI: URI de l'ID d'application de l'application AzureSERVICE_ACCOUNT_TOKEN_LIFETIME: si vous utilisez l'emprunt d'identité d'un compte de service, il s'agit de 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'administrationconstraints/iam.allowServiceAccountCredentialLifetimeExtension.FILEPATH: fichier dans lequel enregistrer la configuration.Region: facultatif. Spécifiez la région des points de terminaison régionaux du service Security Token Service, le cas échéant.
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 dans votre environnement AWS ou Azure :
Initialisez une variable d'environnement
GOOGLE_APPLICATION_CREDENTIALSet pointez-la vers le fichier de configuration des identifiants :Bash
oùexport GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
FILEPATHest le chemin d'accès relatif au fichier de configuration des identifiants.PowerShell
où$env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
FILEPATHest le chemin d'accès relatif au fichier de configuration des identifiants.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 clientesGoogle 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/oauth2Java
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-httpNode.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-libraryLorsque vous créez un objet
GoogleAuth, vous pouvez spécifier un ID de projet ou autoriserGoogleAuthà 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 sectionREADMEdu packagegoogle-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-authPour spécifier un ID de projet pour le client d'authentification, vous pouvez définir la variable d'environnement
GOOGLE_CLOUD_PROJECTou 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 packagegoogle-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
FILEPATHpar 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 fournisseurGoogle 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
FILEPATHpar 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.
Si vous ne pouvez pas utiliser de bibliothèque cliente compatible avec la fédération d'identité de charge de travail, vous pouvez vous authentifier de manière automatisée à l'aide de l'API REST.
Scénarios avancés
Authentifier une charge de travail à l'aide de l'API REST
Si vous ne pouvez pas utiliser les bibliothèques clientes, vous pouvez suivre les étapes ci-dessous pour permettre à une charge de travail externe d'obtenir un jeton d'accès éphémère à l'aide de l'API REST :
Obtenez des identifiants auprès de votre fournisseur d'identité externe :
AWS
Créez un document JSON contenant les informations que vous devez normalement inclure dans une requête adressée au point de terminaison
GetCallerIdentity()AWS, y compris une signature de requête valide.La fédération d'identité de charge de travail fait référence à ce document JSON sous la forme d'un jeton
GetCallerIdentity. Le jeton permet à la fédération d'identité de charge de travail de valider l'identité sans révéler la clé d'accès secrète AWS.Un jeton
GetCallerIdentityressemble à ce qui suit :{ "url": "https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15", "method": "POST", "headers": [ { "key": "Authorization", "value" : "AWS4-HMAC-SHA256 Credential=AKIASOZTBDV4D7ABCDEDF/20200228/us-east-1/sts/aws4_request, SignedHeaders=host;x-amz-date,Signature=abcedefdfedfd" }, { "key": "host", "value": "sts.amazonaws.com" }, { "key": "x-amz-date", "value": "20200228T225005Z" }, { "key": "x-goog-cloud-target-resource", "value": "//iam.googleapis.com/projects/12345678/locations/global/workloadIdentityPools/my-pool/providers/my-aws-provider" }, { "key": "x-amz-security-token", "value": "GizFWJTqYX...xJ55YoJ8E9HNU=" } ] }Le jeton contient les champs suivants :
url: URL du point de terminaison AWS STS pourGetCallerIdentity(), avec le corps d'une requêteGetCallerIdentity()standard ajoutée en tant que paramètres de requête. Par exemple,https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15. Nous vous recommandons d'utiliser des points de terminaison STS régionaux et de concevoir une infrastructure fiable pour vos charges de travail. Pour en savoir plus, consultez la section Points de terminaison STS AWS régionaux.method: méthode de requête HTTP :POST.headers: en-têtes de requête HTTP, qui doivent inclure les éléments suivants :Authorization: signature de la requête.host: nom d'hôte du champurl, par exemplests.amazonaws.com.x-amz-date: heure d'envoi de la requête, formatée en tant que chaîne ISO 8601 au format de base. Cette valeur est généralement définie sur l'heure actuelle et permet d'éviter les attaques de répétitions.x-goog-cloud-target-resource: nom complet de la ressource du fournisseur d'identité sans préfixehttps:Par exemple ://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
x-amz-security-token: jeton de session Requis uniquement si vous utilisez des identifiants de sécurité temporaires.
L'exemple suivant crée un jeton
GetCallerIdentityencodé au format URL. Extrayez le jeton encodé au format URL pour une utilisation ultérieure. Il crée également un jeton lisible à titre indicatif :Initialisez les variables suivantes :
Bash
SUBJECT_TOKEN_TYPE="urn:ietf:params:aws:token-type:aws4_request" SUBJECT_TOKEN=TOKEN
PowerShell
$SubjectTokenType = "urn:ietf:params:aws:token-type:aws4_request" $SubjectToken = "TOKEN"
Où
TOKENcorrespond au jetonGetCallerIdentityencodé au format URL qui a été généré par le script.Azure
Connectez-vous à une VM Azure dotée d'une identité gérée assignée et obtenez un jeton d'accès auprès du service de métadonnées d'instance Azure (IMDS) :
Bash
SUBJECT_TOKEN_TYPE="urn:ietf:params:oauth:token-type:jwt" SUBJECT_TOKEN=$(curl \ "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" \ -H "Metadata: true" | jq -r .access_token) echo $SUBJECT_TOKEN
Cette commande utilise l'outil
jq.jqest disponible par défaut dans Cloud Shell.PowerShell
$SubjectTokenType = "urn:ietf:params:oauth:token-type:jwt" $SubjectToken = (Invoke-RestMethod ` -Uri "http://169.254.169.254/metadata/identity/oauth2/token?resource=APP_ID_URI&api-version=2018-02-01" ` -Headers @{Metadata="true"}).access_token Write-Host $SubjectTokenOù
APP_ID_URIest l'URI d'ID application de l'application que vous avez configurée pour la fédération d'identité de charge de travail.Utilisez l'API Security Token Service pour échanger l'identifiant contre un jeton d'accès éphémère :
Bash
STS_TOKEN=$(curl https://sts.googleapis.com/v1/token \ --data-urlencode "audience=//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \ --data-urlencode "requested_token_type=urn:ietf:params:oauth:token-type:access_token" \ --data-urlencode "scope=https://www.googleapis.com/auth/cloud-platform" \ --data-urlencode "subject_token_type=$SUBJECT_TOKEN_TYPE" \ --data-urlencode "subject_token=$SUBJECT_TOKEN" | jq -r .access_token) echo $STS_TOKENPowerShell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 $StsToken = (Invoke-RestMethod ` -Method POST ` -Uri "https://sts.googleapis.com/v1/token" ` -ContentType "application/json" ` -Body (@{ "audience" = "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" "grantType" = "urn:ietf:params:oauth:grant-type:token-exchange" "requestedTokenType" = "urn:ietf:params:oauth:token-type:access_token" "scope" = "https://www.googleapis.com/auth/cloud-platform" "subjectTokenType" = $SubjectTokenType "subjectToken" = $SubjectToken } | ConvertTo-Json)).access_token Write-Host $StsTokenRemplacez les valeurs suivantes :
PROJECT_NUMBER: numéro de projet du projet contenant le pool d'identités de charge de travailPOOL_ID: ID du pool d'identités de charge de travailPROVIDER_ID: ID du fournisseur du pool d'identités de charge de travail
Pour utiliser les points de terminaison régionaux du service Security Token Service, remplacez
https://sts.googleapis.com/v1/tokenpar l'un des éléments suivants :https://sts.REGION.rep.googleapis.com/v1/token
Remplacez
REGIONpar un emplacement, par exempleus-central1oueurope-west4.Google CloudSi vous empruntez l'identité d'un compte de service, utilisez le jeton Security Token Service pour appeler la méthode
generateAccessTokende l'API IAM Service Account Credentials pour obtenir un jeton d'accès :
Jetons pour les services Cloud Run
Lorsque vous accédez à un service Cloud Run, vous devez utiliser un jeton d'identité.
Bash
TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken \
-H "Content-Type: text/json; charset=utf-8" \
-H "Authorization: Bearer $STS_TOKEN" \
-d @- <<EOF | jq -r .token
{
"audience": "SERVICE_URL"
}
EOF
)
echo $TOKEN
PowerShell
$Token = (Invoke-RestMethod `
-Method POST `
-Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateIdToken" `
-Headers @{ "Authorization" = "Bearer $StsToken" } `
-ContentType "application/json" `
-Body (@{
"audience" = "SERVICE_URL"
} | ConvertTo-Json)).token
Write-Host $Token
Remplacez les éléments suivants :
-
SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service. -
SERVICE_URL: URL du service, par exemplehttps://my-service-12345-us-central1.run.app. Vous pouvez également le définir sur votre point de terminaison de service personnalisé. Pour en savoir plus, consultez la section Comprendre les audiences personnalisées.
Jetons pour d'autres plates-formes
Lorsque vous accédez à un autre service, vous devez utiliser un jeton d'accès.
Bash
TOKEN=$(curl -0 -X POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken \
-H "Content-Type: text/json; charset=utf-8" \
-H "Authorization: Bearer $STS_TOKEN" \
-d @- <<EOF | jq -r .accessToken
{
"scope": [ "https://www.googleapis.com/auth/cloud-platform" ]
}
EOF
)
echo $TOKEN
PowerShell
$Token = (Invoke-RestMethod `
-Method POST `
-Uri "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT_EMAIL:generateAccessToken" `
-Headers @{ "Authorization" = "Bearer $StsToken" } `
-ContentType "application/json" `
-Body (@{
"scope" = , "https://www.googleapis.com/auth/cloud-platform"
} | ConvertTo-Json)).accessToken
Write-Host $Token
Remplacez les éléments suivants :
-
SERVICE_ACCOUNT_EMAIL: adresse e-mail du compte de service.
Étape suivante
- Apprenez-en plus sur la fédération d'identité de charge de travail.
- Découvrez les bonnes pratiques d'utilisation de la fédération d'identité de charge de travail.
- Découvrez comment vous pouvez gérer les pools d'identités de charge de travail et les fournisseurs.