Configura la federazione delle identità per i carichi di lavoro con AWS o Azure

Questa guida descrive come utilizzare la federazione delle identità per i carichi di lavoro per consentire ad AWS e I carichi di lavoro Azure vengono autenticati in Google Cloud senza chiave dell'account di servizio.

Con la federazione delle identità per i carichi di lavoro, i carichi di lavoro eseguiti su AWS EC2 e Azure possono scambiare le proprie credenziali specifiche dell'ambiente con token di Security Token Service di Google Cloud di breve durata.

Le credenziali specifiche per l'ambiente includono quanto segue:

Con la configurazione della federazione delle identità per i carichi di lavoro, puoi consentire a questi carichi di lavoro di scambiare queste credenziali specifiche dell'ambiente con credenziali Google Cloud di breve durata. I carichi di lavoro possono utilizzare queste credenziali di breve durata per accedere le API Google Cloud.

Prima di iniziare

  • Configurare l'autenticazione.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    Python

    Per utilizzare gli Python esempi in questa pagina in un ambiente di sviluppo locale, installa e inizializza l'interfaccia alla gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

    Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud.

Prepara il tuo provider di identità esterno

Devi eseguire questi passaggi una sola volta per ogni tenant Microsoft Entra ID o account AWS.

AWS

Non è necessario apportare modifiche alla configurazione nel tuo account AWS.

Dopo aver configurato un pool di identità per i carichi di lavoro in modo che sia attendibile Account AWS, puoi consentire agli utenti AWS e i ruoli AWS utilizzare credenziali di sicurezza AWS permanenti o temporanee per ottenere le credenziali di Google Cloud di breve durata.

Azure

Devi creare una nuova applicazione Microsoft Entra ID nel tenant di Microsoft Entra ID e configuralo in modo che possa essere utilizzato Federazione delle identità per i carichi di lavoro.

Dopo aver configurato un pool di identità per i carichi di lavoro in modo che consideri attendibile dell'applicazione, gli utenti e le entità di servizio Azure possono richiedere token di accesso per questa applicazione e scambiare questi token di accesso le credenziali di Google Cloud di breve durata.

Per creare l'applicazione, segui questi passaggi:

  1. Crea un'entità di servizio e un'applicazione Microsoft Entra ID.

  2. Imposta un URI ID applicazione per l'applicazione. Puoi utilizzare l'URI dell'ID applicazione predefinito (APPID) o specificare un URI personalizzato.

    L'URI dell'ID applicazione ti servirà in un secondo momento quando configurerai il provider del pool di identità per i carichi di lavoro.

Per consentire a un'applicazione di ottenere token di accesso per l'applicazione Microsoft Entra ID, puoi utilizzare le identità gestite:

  1. Crea un'identità gestita. Prendi nota dell'ID oggetto dell'identità gestita. Ti servirà in un secondo momento quando per configurare la rappresentazione.

  2. Assegnare l'identità gestita a una macchina virtuale o a un'altra risorsa che esegue la tua applicazione.

Configura la federazione delle identità per i carichi di lavoro

Devi eseguire questi passaggi una sola volta per account AWS o tenant Microsoft Entra ID. Puoi quindi utilizzare lo stesso provider e lo stesso pool di identità di carico di lavoro per più carichi di lavoro e in più progetti Google Cloud.

Per iniziare a configurare la federazione delle identità per i carichi di lavoro, segui questi passaggi:

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

    Go to project selector

  2. È meglio usa un progetto dedicato per gestire i provider e i pool di identità per i carichi di lavoro.
  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

Definisci una mappatura e una condizione degli attributi

Le credenziali specifiche dell'ambiente del tuo carico di lavoro AWS o Azure contengono più attributi e devi decidere quale attributo utilizzare come identificatore soggetto (google.subject) in Google Cloud.

Google Cloud utilizza l'identificatore del soggetto in Cloud Audit Logs e identificatori entità per identificare in modo univoco un utente o un ruolo AWS o Azure.

Se vuoi, puoi mappare altri attributi. Puoi quindi fare riferimento a questi attributi aggiuntivi quando concedi l'accesso a Google Cloud.

AWS

La mappatura degli attributi può utilizzare i campi di risposta per GetCallerIdentity come attributi di origine. Questi campi includono i seguenti:

  • account: il numero dell'account AWS.
  • arn: l'ARN AWS dell'entità esterna.
  • userid: l'identificatore univoco dell'entità chiamante.

Se la tua applicazione viene eseguita su un'istanza Amazon Elastic Compute Cloud (EC2) con un ruolo collegato, puoi utilizzare la seguente mappatura degli attributi:

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}')

La mappatura esegue le seguenti operazioni:

  • Utilizza l'ARN come identificatore del soggetto, ad esempio: "arn:aws:sts::000000000000:assumed-role/ec2-my-role/i-00000000000000000
  • Introduce un attributo personalizzato account e gli assegna l'account AWS ID
  • Introduce un attributo personalizzato aws_role e gli assegna il ruolo AWS nome, ad esempio: ec2-my-role
  • Introduce un attributo personalizzato aws_ec2_instance e gli assegna l'EC2 ID istanza, ad esempio: i-00000000000000000

Utilizzando questa mappatura, puoi concedere l'accesso a:

  • Un'istanza EC2 specifica:

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_ec2_instance/EC2_INSTANCE_ID
    

  • Tutti gli utenti e le istanze in un ruolo:

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.aws_role/ROLE_NAME
    

Azure

Le mappature degli attributi possono utilizzare dichiarazioni incorporate nei token di accesso Azure, incluse le rivendicazioni personalizzate, come attributi sorgente. Nella maggior parte dei casi, è meglio utilizzare la rivendicazione sub come identificatore dell'oggetto:

google.subject=assertion.sub

Per un token di accesso emesso per un'identità gestita, l'attestazione sub contiene l'ID oggetto dell'identità gestita. Se utilizzi una rivendicazione diversa, assicurati che sia univoca e che non possa essere riassegnata.

Se hai dubbi in merito all'elenco di rivendicazioni a cui puoi fare riferimento, procedi nel seguente modo:

  1. Connettiti a una VM Azure con un'identità gestita assegnata.

  2. Ottieni un token di accesso dal servizio di metadati dell'istanza 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
    

    Questo comando utilizza lo strumento jq. jq è disponibile per impostazione predefinita in 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 $SubjectToken
    

    Sostituisci APP_ID_URI con l'URI dell'ID applicazione dell'applicazione che hai configurato per la federazione delle identità per i carichi di lavoro.

  3. In un browser web, vai a https://jwt.ms/ e incolla il token di accesso nel campo.

  4. Fai clic su Claim per visualizzare l'elenco dei claim incorporati nel token di accesso.

In genere, per le identità di servizio non è necessario creare una mappatura per google.groups o per gli attributi personalizzati.

(Facoltativo) Definisci una condizione dell'attributo. Condizioni attributi sono espressioni CEL che possono verificare gli attributi di asserzione e di destinazione. Se la condizione dell'attributo ha valore true per una determinata credenziale, la credenziale viene accettata. In caso contrario, la credenziale viene rifiutata.

AWS

Puoi utilizzare una condizione dell'attributo per limitare gli utenti e i ruoli IAM che possono utilizzare la federazione Workload Identity per ottenere token Google Cloud di breve durata.

Ad esempio, la seguente condizione limita l'accesso ai ruoli AWS non consente altri identificatori IAM:

assertion.arn.startsWith('arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/')

Azure

Puoi utilizzare una condizione dell'attributo per limitare gli utenti e le entità servizio puoi utilizzare la federazione delle identità per i carichi di lavoro per ottenere Google Cloud di breve durata di token. In alternativa, puoi configurare il tuo ID Microsoft Entra l'applicazione assegnazioni dei ruoli delle app.

Crea il pool di identità per i carichi di lavoro e il provider

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare la federazione delle identità per i carichi di lavoro, chiedi all'amministratore di concederti seguenti ruoli IAM sul progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

In alternativa, il ruolo di base Proprietario IAM (roles/owner) include le autorizzazioni per configurare la federazione delle identità. Non è consigliabile concedere ruoli di base in un ambiente di produzione, ma puoi concederli in un di sviluppo o test.

Ora hai raccolto tutte le informazioni necessarie per creare un pool e un provider di identità di carico di lavoro:

Console

  1. Nella console Google Cloud, vai alla pagina Nuovo provider e pool di carichi di lavoro.

    Vai a Nuovo provider e pool di carichi di lavoro

  2. Nella sezione Crea un pool di identità, inserisci quanto segue:

    • Nome: nome del pool. Il nome viene utilizzato anche come ID del pool. Non potrai modificare l'ID pool in un secondo momento.
    • Descrizione: testo che descrive lo scopo del pool.
  3. Fai clic su Continua.

  4. Configura le impostazioni del provider:

    AWS

    Configura le seguenti impostazioni del provider:

    • Seleziona un provider: AWS.
    • Nome provider: il nome del provider. Il nome è utilizzato anche come ID provider. Non potrai modificare l'ID fornitore in un secondo momento.

    Azure

    Configura le seguenti impostazioni del provider:

    • Seleziona un provider: OpenID Connect (OIDC).
    • Nome del provider: il nome del provider. Il nome viene utilizzato anche come ID provider. Non potrai modificare l'ID fornitore in un secondo momento.
    • URL emittente: https://sts.windows.net/TENANT_ID. Sostituisci TENANT_ID con l'ID tenant (GUID) del tuo tenant Microsoft Entra ID.
    • Segmenti di pubblico consentiti: URI ID applicazione che hai utilizzato quando hai registrato l'applicazione in Microsoft Entra ID.
  5. Fai clic su Continua.

  6. Nella sezione Configura attributi del provider, aggiungi le mappature degli attributi che hai identificato in precedenza.

  7. Nella sezione Condizioni degli attributi, inserisci il condizione dell'attributo che hai identificato in precedenza. Lascia vuoto il campo se non hai una condizione dell'attributo.

  8. Fai clic su Salva per creare il pool di identità e il provider per i carichi di lavoro.

gcloud

  1. Crea un nuovo pool di identità per i carichi di lavoro:

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

    Sostituisci quanto segue:

    • POOL_ID: l'ID univoco per il pool.
    • DISPLAY_NAME: il nome del pool.
    • DESCRIPTION: la descrizione del pool. Questa descrizione appare quando si concede l'accesso alle identità del pool.
  2. Aggiungi un provider di pool di identità per i carichi di lavoro:

    AWS

    Per creare il provider del pool di identità per i carichi di lavoro per AWS, esegui il comando seguente comando:

    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"
    

    Sostituisci quanto segue:

    Esempio:

    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

    Per creare il provider del pool di identità per i carichi di lavoro per Azure, esegui il seguente comando:

    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"
    

    Sostituisci quanto segue:

    • PROVIDER_ID: l'ID univoco del provider.
    • POOL_ID: l'ID del pool.
    • ISSUER_URI: l'ID tenant (GUID) del tuo tenant Microsoft Entra ID, a volte formattato come https://sts.windows.net/TENANT_ID. La L'URI dell'emittente può variare e per trovarlo puoi eseguire il debug il tuo JWT utilizzando JWT.io.
    • APPLICATION_ID_URI: URI ID applicazione che hai utilizzato quando hai registrato l'applicazione in Microsoft Entra ID.
    • MAPPINGS: l'elenco separato da virgole delle mappature degli attributi che hai identificato in precedenza.
    • CONDITIONS: (facoltativo) la condizione dell'attributo che hai identificato in precedenza.

    Esempio:

    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"

Autentica un carico di lavoro

Devi eseguire questi passaggi una volta per carico di lavoro.

Consenti al carico di lavoro esterno di accedere alle risorse Google Cloud

Per fornire al tuo carico di lavoro l'accesso alle risorse Google Cloud, ti consigliamo di concedere all'entità l'accesso diretto alle risorse. In questo caso, l'entità è l'utente federato. Alcuni prodotti Google Cloud includono Limitazioni delle API Google Cloud. Se il carico di lavoro chiama un endpoint API con una limitazione, puoi scegliere la simulazione dell'identità degli account di servizio. In questo caso, l'entità è Account di servizio Google Cloud, che funge da identità. Concedi l'accesso all'account di servizio sulla risorsa.

Accesso diretto alle risorse

Puoi concedere l'accesso a un'identità federata direttamente sulle risorse utilizzando la console Google Cloud o gcloud CLI.

Console

Per utilizzare la console Google Cloud per concedere i ruoli IAM direttamente su una risorsa, devi andare alla pagina della risorsa e concedere il ruolo. L'esempio seguente mostra come andare alla pagina Cloud Storage e concedere il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) a un'identità federata direttamente in un bucket Cloud Storage.

  1. Nella console Google Cloud, vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket per cui vuoi concedere il ruolo.

  3. Seleziona la scheda Autorizzazioni nella parte superiore della pagina.

  4. Fai clic sul pulsante Concedi accesso.

    Viene visualizzata la finestra di dialogo Aggiungi entità.

  5. Nel campo Nuove entità, inserisci una o più identità che devono accedere al tuo bucket.

    Per argomento

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

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • POOL_ID: carico di lavoro ID pool
    • SUBJECT: la persona soggetto mappato dal tuo IdP, ad esempio administrator@example.com

    Per gruppo

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

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • WORKLOAD_POOL_ID: carico di lavoro ID pool
    • GROUP: il gruppo mappata dal tuo IdP, ad esempio: administrator-group@example.com

    Per attributo

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

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • WORKLOAD_POOL_ID: l'ID del pool di carichi di lavoro
    • ATTRIBUTE_NAME: uno degli attributi mappati dal tuo provider di identità
    • ATTRIBUTE_VALUE: il valore dell'attributo
  6. Seleziona uno o più ruoli dal menu a discesa Seleziona un ruolo. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.

  7. Fai clic su Salva.

gcloud

Per utilizzare gcloud CLI per concedere i ruoli IAM a una risorsa in un progetto, segui questi passaggi:

  1. Ottenere il numero del progetto in cui la risorsa viene definito.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Concedi l'accesso alla risorsa.

    Per utilizzare gcloud CLI per concedere il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) a identità esterne che soddisfano determinati criteri, esegui il seguente comando.

    Per soggetto

    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"

    Per gruppo

    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"

    Per attributo

    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"

    Sostituisci quanto segue:

    • BUCKET_ID: il bucket a cui concedere l'accesso
    • PROJECT_NUMBER: il numero di progetto del progetto che contiene il pool di identità per i carichi di lavoro
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro
    • SUBJECT: il valore previsto per l'attributo che hai mappato a google.subject
    • GROUP: il valore previsto per l'attributo che hai mappato a google.groups
    • ATTRIBUTE_NAME: il nome di un attributo personalizzato in la mappatura degli attributi
    • ATTRIBUTE_VALUE: il valore dell'attributo personalizzato nella mappatura degli attributi

    Puoi concedere ruoli a qualsiasi risorsa Google Cloud che supporta i criteri di autorizzazione IAM.

Simulazione dell'identità degli account di servizio

  1. Per creare un account di servizio per il carico di lavoro esterno:

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

      Enable the APIs

    2. Crea un account di servizio che rappresenta il carico di lavoro. Ti consigliamo di utilizzare un account di servizio dedicato per ogni carico di lavoro. Non è necessario che l'account di servizio si trovi nello stesso progetto per i carichi di lavoro, ma devi fare riferimento al progetto contiene l'account di servizio.

    3. Concedi all'account di servizio l'accesso alle risorse a cui vuoi che le identità esterne accedano.

    4. Concedi il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser) all'account di servizio.

  2. Per concedere l'accesso a un'identità federata utilizzando l'account di servizio tramite la console Google Cloud o gcloud CLI:

Console

Per utilizzare la console Google Cloud per concedere i ruoli IAM a un'identità federata con account di servizio, segui questi passaggi:

Account di servizio nello stesso progetto

  1. Per concedere l'accesso utilizzando la simulazione dell'identità degli account di servizio per un nello stesso progetto, segui questi passaggi:

    1. Vai alla pagina Pool Workload Identity.

      Vai a Pool Workload Identity

    2. Seleziona Concedi l'accesso.

    3. Nella finestra di dialogo Concedi l'accesso all'account di servizio, seleziona Concedi l'accesso utilizzando la simulazione dell'identità degli account di servizio.

    4. Nell'elenco Account di servizio, seleziona la l'account di servizio per le identità esterne, e procedi nel seguente modo:

    5. Per scegliere quali identità nel pool possono rubare l'identità dell'account servizio, esegui una delle seguenti azioni:

      • Per consentire solo a identità specifiche del pool di identità del carico di lavoro di simulare l'identità dell'account di servizio, seleziona Solo le identità corrispondenti al filtro.

      • Nell'elenco Nome attributo, seleziona l'attributo. in base alle quali vuoi applicare un filtro.

      • Nel campo Valore attributo, inserisci il valore previsto dell'attributo. Ad esempio, se utilizzi una mappatura degli attributi google.subject=assertion.sub, imposta il nome dell'attributo su subject e il valore dell'attributo sul valore dell'affermazione sub nei token emessi dal tuo provider di identità esterno.

    6. Per salvare la configurazione, fai clic su Salva e poi Ignora.

Account di servizio in un altro progetto

  1. Per concedere l'accesso utilizzando la simulazione dell'identità degli account di servizio per un in un altro progetto, segui questi passaggi:

    1. Vai alla pagina Service Accounts.

      Vai a Service account

    2. Seleziona l'account di servizio che vuoi impersonare.

    3. Fai clic su Gestisci accesso.

    4. Fai clic su Aggiungi entità.

    5. Nel campo Nuova entità, inserisci uno dei seguenti identificatori principali per le identità nel pool che ruberanno l'identità dell'account di servizio.

      Per soggetto

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

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • POOL_ID: carico di lavoro ID pool
      • SUBJECT: la persona soggetto mappato dal tuo IdP, ad esempio administrator@example.com

      Per gruppo

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

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: carico di lavoro ID pool
      • GROUP: il gruppo mappata dal tuo IdP, ad esempio: administrator-group@example.com

      Per attributo

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

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: l'ID del pool di carichi di lavoro
      • ATTRIBUTE_NAME: uno degli attributi mappati dal tuo provider di identità
      • ATTRIBUTE_VALUE: il valore dell'attributo

      Vicino alla piscina

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

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero del progetto
      • WORKLOAD_POOL_ID: carico di lavoro ID pool
    6. In Seleziona un ruolo, seleziona il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser).

    7. Per salvare la configurazione, fai clic su Salva.

gcloud

Per utilizzare gcloud CLI al fine di concedere il ruolo Utente Workload Identity (roles/iam.workloadIdentityUser) alle identità esterne che soddisfano determinati criteri, esegui il comando seguente .

Per argomento

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"

Per gruppo

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"

Per attributo

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"

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account per il servizio
  • PROJECT_NUMBER: il numero di progetto del progetto che contiene il pool di identità per i carichi di lavoro
  • POOL_ID: l'ID pool del pool di identità per i carichi di lavoro
  • SUBJECT: il valore previsto per l'attributo che che hai mappato a google.subject
  • GROUP: il valore previsto per l'attributo che che hai mappato a google.groups
  • ATTRIBUTE_NAME: il nome di un attributo personalizzato nella mappatura degli attributi
  • ATTRIBUTE_VALUE: il valore dell'attributo personalizzato nella mappatura degli attributi

Scaricare o creare una configurazione delle credenziali

Le librerie client di Cloud, gcloud CLI e Terraform possono ottenere automaticamente e utilizzale per simulare l'identità di un account di servizio. A consente a librerie e strumenti di completare la procedura, devi fornire una credenziale di configurazione del deployment. Questo file definisce quanto segue:

  • Da dove ottenere le credenziali esterne
  • Il pool di identità e il provider per i carichi di lavoro da utilizzare
  • Quale account di servizio usare per l'identità

Per creare un file di configurazione delle credenziali:

Console

Per scaricare un file di configurazione delle credenziali nella console Google Cloud: segui questi passaggi:

  1. Nella console Google Cloud, vai ai Pool di identità per carichi di lavoro .

    Vai ai pool di identità per i carichi di lavoro

  2. Trova il pool di identità per i carichi di lavoro per l'IdP che ti interessa da utilizzare e fare clic su di esso.

  3. Se hai scelto di utilizzare l'accesso diretto alle risorse, procedi nel seguente modo:

    1. Fai clic su Concedi accesso.

    2. Seleziona Concedi l'accesso usando identità federate (consigliato).

    3. Fai clic su Scarica.

    4. Segui le istruzioni nella finestra di dialogo Configura l'applicazione, più avanti in questa procedura.

  4. Se hai scelto di utilizzare l'impersonificazione dell'account di servizio, svolgi i seguenti passaggi:

    1. Seleziona Account di servizio collegati.

    2. Individua l'account di servizio che vuoi utilizzare e fai clic su Scarica.

    3. Continua con le istruzioni per la finestra di dialogo Configura la tua applicazione. più avanti in questa procedura.

  5. Nella finestra di dialogo Configura l'applicazione, seleziona il provider che contiene le identità esterne.

  6. Fornisci le seguenti impostazioni aggiuntive:

    AWS

    Non sono necessarie ulteriori impostazioni.

    Azure

    URL ID applicazione: URI dell'ID applicazione dell'applicazione Azure

  7. Seleziona Scarica configurazione per scaricare il file di configurazione delle credenziali, quindi fai clic su Ignora.

gcloud

Per creare un file di configurazione delle credenziali utilizzando gcloud iam workload-identity-pools create-cred-config, segui questi passaggi:

AWS

Per creare un file di configurazione delle credenziali che consenta alla libreria di ottenere un token di accesso dai metadati dell'istanza EC2, segui questi passaggi:

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 \
    --output-file=FILEPATH.json

Sostituisci quanto segue:

  • PROJECT_NUMBER: il numero del progetto che contiene il pool di identità per i carichi di lavoro
  • POOL_ID: l'ID del pool di identità per i carichi di lavoro.
  • PROVIDER_ID: l'ID del provider del pool di identità del carico di lavoro.
  • SERVICE_ACCOUNT_EMAIL: se utilizzi la simulazione dell'identità del service account, sostituisci con l'indirizzo email del service account. Ometti questo flag se non utilizzi l'impersonificazione dell'account di servizio.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: se utilizzi la simulazione dell'identità dell'account di servizio, sostituisci con la durata del token di accesso dell'account di servizio in secondi. Per impostazione predefinita, se non viene fornito, è pari a un'ora. Ometti questo flag se non utilizzi l'impersonificazione dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare il vincolo dei criteri dell'organizzazione constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: il file per salvare la configurazione a.

Se utilizzi AWS IMDSv2, è necessario aggiungere un altro flag --enable-imdsv2 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 \
    --output-file=FILEPATH.json

Se non puoi utilizzare il server di metadati AWS, puoi fornire le credenziali di sicurezza AWS tramite le seguenti variabili di ambiente AWS:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • Uno di AWS_REGION o AWS_DEFAULT_REGION
  • (Facoltativo) AWS_SESSION_TOKEN

La CLI gcloud e le librerie utilizzano queste variabili di ambiente AWS quando il server di metadati AWS non è disponibile.

Azure

Crea un file di configurazione delle credenziali che consenta alla libreria di ottenere un token di accesso dal servizio di metadati delle istanze 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 \
    --output-file=FILEPATH.json

Sostituisci quanto segue:

  • PROJECT_NUMBER: il numero del progetto che contiene il pool di identità per i carichi di lavoro.
  • POOL_ID: l'ID dell'identità del carico di lavoro piscina.
  • PROVIDER_ID: l'ID del provider del pool di identità del carico di lavoro.
  • SERVICE_ACCOUNT_EMAIL: se utilizzi la simulazione dell'identità del service account, sostituisci con l'indirizzo email del service account. Ometti questo flag se non utilizzi la simulazione dell'identità degli account di servizio.
  • APPLICATION_ID_URI: l'URI ID applicazione dell'applicazione Azure.
  • SERVICE_ACCOUNT_TOKEN_LIFETIME: se utilizzi simulazione dell'identità degli account di servizio,durata dell'account di servizio token di accesso, in secondi, il valore predefinito è un'ora quando non fornito. Ometti questo flag se non utilizzi l'impersonificazione dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare il constraints/iam.allowServiceAccountCredentialLifetimeExtension vincolo del criterio dell'organizzazione.
  • FILEPATH: il file per salvare la configurazione a.

Utilizza la configurazione delle credenziali per accedere a Google Cloud

Per consentire agli strumenti e alle librerie client di utilizzare la configurazione delle credenziali, svolgi quanto segue nel tuo ambiente AWS o Azure:

  1. inizializza una variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS e punta al file di configurazione delle credenziali:

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    dove FILEPATH è il percorso relativo di configurazione delle credenziali.

    PowerShell

      $env:GOOGLE_APPLICATION_CREDENTIALS = Resolve-Path 'FILEPATH.json'
      
    dove FILEPATH è il percorso relativo al file di configurazione delle credenziali.
  2. Utilizza una libreria client o uno strumento che supporti la federazione delle identità per i carichi di lavoro e può trovare le credenziali automaticamente:

    C++

    La Librerie client di Google Cloud per C++ supporta la federazione delle identità per i carichi di lavoro dalla versione v2.6.0. Per utilizzare la federazione delle identità per i carichi di lavoro, devi compilare le librerie client con la versione 1.36.0 o successive di gRPC.

    Vai

    Le librerie client per Go supportano la federazione delle identità del carico di lavoro se utilizzano la versione v0.0.0-20210218202405-ba52d332ba99 o successive del modulo golang.org/x/oauth2.

    Per verificare quale versione di questo modulo è utilizzata dalla libreria client, esegui il seguenti comandi:

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

    Java

    Le librerie client per Java supportano la federazione delle identità per i carichi di lavoro se usano la versione 0.24.0 o successivamente com.google.auth:google-auth-library-oauth2-http artefatto.

    Per verificare quale versione di questo artefatto è utilizzata dalla libreria client, esegui il comando seguente comando Maven nella directory dell'applicazione:

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

    Node.js

    Le librerie client per Node.js supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione 7.0.2 o versioni successive del Pacchetto google-auth-library.

    Per controllare quale versione di questo pacchetto utilizza la tua libreria client, esegui il seguente comando nella directory dell'applicazione:

    npm list google-auth-library
    

    Quando crei un oggetto GoogleAuth, puoi specificare un ID progetto oppure puoi consentire a GoogleAuth di trovarlo automaticamente. Per trovare l'ID progetto automaticamente, l'account di servizio nel file di configurazione deve avere Ruolo del browser (roles/browser) o con autorizzazioni equivalenti, nel tuo progetto. Per maggiori dettagli, consulta README per il pacchetto google-auth-library.

    Python

    Le librerie client per Python supportano la federazione delle identità per i carichi di lavoro se utilizzano la versione 1.27.0 o versioni successive del Pacchetto google-auth.

    Per controllare quale versione di questo pacchetto utilizza la tua libreria client, esegui il seguente comando nell'ambiente in cui è installato il pacchetto:

    pip show google-auth
    

    Per specificare un ID progetto per il client di autenticazione, puoi impostare la variabile di ambienteGOOGLE_CLOUD_PROJECT o consentire al client di trovare automaticamente l'ID progetto. Per trovare automaticamente l'ID progetto, nel file di configurazione deve avere il ruolo Browser (roles/browser), o un ruolo con autorizzazioni equivalenti, nel tuo progetto. Per maggiori dettagli, consulta guida dell'utente per il pacchetto google-auth.

    gcloud

    Per eseguire l'autenticazione mediante la federazione delle identità per i carichi di lavoro, utilizza Comando gcloud auth login:

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

    Sostituisci FILEPATH con il percorso della di configurazione delle credenziali.

    Il supporto della federazione delle identità per i carichi di lavoro in gcloud CLI è disponibile nella versione 363.0.0 e successive di gcloud CLI.

    Terraform

    Il provider Google Cloud supporta la federazione delle identità di carico di lavoro se utilizzi la versione 3.61.0 o successive:

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

    bq

    Per eseguire l'autenticazione utilizzando la federazione di Workload Identity, utilizza il comando gcloud auth login, come segue:

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

    Sostituisci FILEPATH con il percorso del file di configurazione delle credenziali.

    Il supporto per la federazione delle identità per i carichi di lavoro in bq è disponibile in versione 390.0.0 e successive di gcloud CLI.

    Se non puoi utilizzare una libreria client che supporta la federazione delle identità di carico di lavoro, puoi eseguire l'autenticazione in modo programmatico utilizzando l'API REST.

Scenari avanzati

Autenticare un carico di lavoro utilizzando l'API REST

Se non puoi utilizzare le librerie client, puoi seguire questi passaggi per un carico di lavoro esterno ottiene un token di accesso di breve durata utilizzando l'API REST:

  1. Ottieni le credenziali dal tuo provider di identità esterno:

    AWS

    Crea un documento JSON contenente le informazioni che normalmente includeresti in una richiesta all'endpoint GetCallerIdentity() di AWS, inclusa una firma della richiesta valida.

    La federazione delle identità per i carichi di lavoro fa riferimento a questo documento JSON come GetCallerIdentity token. Il token consente la federazione delle identità per i carichi di lavoro Verificare l'identità senza rivelare la chiave di accesso segreta AWS.

    Un token GetCallerIdentity è simile al seguente:

    {
      "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="
        }
      ]
    }
    

    Il token contiene i seguenti campi:

    • url: l'URL dell'endpoint AWS STS per GetCallerIdentity(), con il corpo di una richiesta GetCallerIdentity() standard aggiunto come parametri di ricerca. Ad esempio, https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15. Ti consigliamo di utilizzare gli endpoint STS a livello di regione e di progettare un'infrastruttura affidabile per i tuoi carichi di lavoro. Per ulteriori informazioni, consulta Endpoint AWS STS regionali.
    • method: il metodo di richiesta HTTP: POST.
    • headers: le intestazioni delle richieste HTTP, che devono includere:
      • Authorization: la firma della richiesta.
      • host: il nome host del campo url, ad esempio sts.amazonaws.com.
      • x-amz-date: l'ora in cui invii la richiesta, formattata come stringa ISO 8601 di base. Questo valore è generalmente impostato sull'ora corrente ed è per prevenire gli attacchi di ripetizione.
      • x-goog-cloud-target-resource: il nome completo della risorsa provider di identità senza prefisso https:. Ad esempio:
        //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
        
      • x-amz-security-token: token di sessione. Obbligatorio solo se utilizzando credenziali di sicurezza temporanee.

    L'esempio seguente crea un token GetCallerIdentity con codifica URL. Estrai il token con codifica URL per utilizzarlo in un secondo momento. Viene anche creato un token leggibile da una persona solo per riferimento futuro:

    import json
    import urllib
    
    import boto3
    from botocore.auth import SigV4Auth
    from botocore.awsrequest import AWSRequest
    
    
    def create_token_aws(project_number: str, pool_id: str, provider_id: str) -> None:
        # Prepare a GetCallerIdentity request.
        request = AWSRequest(
            method="POST",
            url="https://sts.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15",
            headers={
                "Host": "sts.amazonaws.com",
                "x-goog-cloud-target-resource": f"//iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/providers/{provider_id}",
            },
        )
    
        # Set the session credentials and Sign the request.
        # get_credentials loads the required credentials as environment variables.
        # Refer:
        # https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html
        SigV4Auth(boto3.Session().get_credentials(), "sts", "us-east-1").add_auth(request)
    
        # Create token from signed request.
        token = {"url": request.url, "method": request.method, "headers": []}
        for key, value in request.headers.items():
            token["headers"].append({"key": key, "value": value})
    
        # The token lets workload identity federation verify the identity without revealing the AWS secret access key.
        print("Token:\n%s" % json.dumps(token, indent=2, sort_keys=True))
        print("URL encoded token:\n%s" % urllib.parse.quote(json.dumps(token)))
    
    
    def main() -> None:
        # TODO(Developer): Replace the below credentials.
        # project_number: Google Project number (not the project id)
        project_number = "my-project-number"
        pool_id = "my-pool-id"
        provider_id = "my-provider-id"
    
        create_token_aws(project_number, pool_id, provider_id)
    
    
    if __name__ == "__main__":
        main()

    Inizializza le seguenti variabili:

    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"
    

    Dove TOKEN è l'URL codificato GetCallerIdentity token generato dallo script.

    Azure

    Connettiti a una VM Azure con un'identità gestita assegnata e ottieni un token di accesso dal servizio Azure Instance Metadata Service (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
    

    Questo comando utilizza lo strumento jq. jq è disponibile per impostazione predefinita in 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 $SubjectToken
    

    Dove APP_ID_URI è l'URI dell'ID applicazione dell'applicazione configurato per la federazione delle identità per i carichi di lavoro.

  2. Utilizza l'API Security Token Service per scambiare la credenziale con un token di accesso di breve durata:

    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_TOKEN
    

    PowerShell

    [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 $StsToken
    

    Sostituisci i seguenti valori:

    • PROJECT_NUMBER: numero del progetto che contiene il pool di identità per i carichi di lavoro
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro
    • PROVIDER_ID: ID del provider del pool di identità per i carichi di lavoro
  3. Se utilizzi l'impersonificazione degli account di servizio, usa il token Security Token Service per richiamare il metodo generateAccessToken dell'API IAM Service Account Credentials per ottenere un token di accesso.

Token per i servizi Cloud Run

Quando accedi a un servizio Cloud Run, devi utilizzare un token ID.

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

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account di servizio.
  • SERVICE_URL: l'URL del servizio, ad esempio https://my-service-12345-us-central1.run.app. Puoi anche impostarlo sul tuo endpoint di servizio personalizzato. Per saperne di più, consulta Informazioni sui segmenti di pubblico personalizzati.

Token per altre piattaforme

Quando accedi a un altro servizio, devi utilizzare un token di accesso.

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

Sostituisci quanto segue:

  • SERVICE_ACCOUNT_EMAIL: l'indirizzo email dell'account di servizio.

Passaggi successivi