Configurare la federazione delle identità per i carichi di lavoro con altri provider di identità

Questa guida descrive come utilizzare la federazione Workload Identity con altri provider di identità (IdP).

I carichi di lavoro in esecuzione all'esterno di Google Cloud potrebbero avere accesso a credenziali esistenti specifiche per l'ambiente, ad esempio:

  • Un carico di lavoro potrebbe essere in grado di ottenere un'affermazione SAML o un token OpenID Connect (OIDC) da un provider di identità (IdP) che funziona nello stesso ambiente.

    Per autenticarti su Google Cloud, puoi consentire al carico di lavoro di scambiare le sue credenziali specifiche dell'ambiente con credenziali Google Cloud di breve durata utilizzando la federazione delle identità di carico di lavoro.

  • Un carico di lavoro potrebbe avere un certificato X.509. Per ulteriori dettagli, consulta Configurare la federazione di Workload Identity con il certificato X.509 (anteprima). I requisiti delle chiavi di firma X.509 SAML includono quanto segue:

    • Una chiave pubblica RSA inserita in un certificato X.509 v3.

    • Requisiti di validità del certificato:

      • notBefore: un timestamp non più lontano di 7 giorni nel futuro
      • notAfter: un timestamp non più lontano di 20 anni nel futuro
    • Algoritmi consigliati:

    Un fornitore di pool di identità del workload può essere configurato con un massimo di tre chiavi di firma alla volta. Quando esistono più chiavi, Google Cloud le analizza e tenta di utilizzare ogni chiave non scaduta per soddisfare una richiesta di scambio di token.

    Come best practice per la sicurezza, ti consigliamo vivamente di non riutilizzare la stessa coppia di chiavi con altri servizi.

  • Un carico di lavoro potrebbe avere altri tipi di credenziali.

    Combinando la federazione delle identità per i carichi di lavoro con un broker di token personalizzato, puoi consentire ai carichi di lavoro di utilizzare altri tipi di credenziali per ottenere credenziali Google Cloud di breve durata.

L'utilizzo della federazione delle identità per i carichi di lavoro può aiutarti a ridurre il numero di credenziali che richiedono la rotazione.

Le sezioni seguenti descrivono come utilizzare la federazione delle identità del carico di lavoro con IdP che supportano i protocolli di autenticazione OpenID Connect (OIDC) o SAML.

Prepara l'IdP esterno

Questa procedura deve essere eseguita una sola volta per ogni IdP.

Prima di iniziare, verifica che la tua IdP esterna soddisfi i seguenti requisiti:

OIDC

  • L'IdP supporta OpenID Connect 1.0.

  • L'IdP ha un URI emittente.

  • I metadati OIDC dell'IdP vengono forniti in uno dei seguenti modi:

    • Endpoint JWKS protetti con SSL e TLS. Gli URL degli endpoint devono iniziare con https:// e gli endpoint devono essere accessibili pubblicamente su internet.

      Google Cloud utilizza questi endpoint per scaricare il set di chiavi dell'identità provider e per convalidare i token.

      Gli endpoint protetti con certificati autofirmati non sono supportati da Google Cloud. In particolare, i campi x5c e x5t non sono supportati e devono essere rimossi dal JWK OIDC.

    • Un file JWKS OIDC caricato su Google Cloud. Se utilizzi questo metodo, l'endpoint non deve essere pubblico.

SAML

  • L'IdP supporta SAML 2.0.

  • L'IdP fornisce un documento di metadati del fornitore di servizi SAML che descrive la configurazione del fornitore di servizi SAML e contiene il certificato di firma dell'IdP.

    Google Cloud utilizza questo certificato per convalidare le asserzioni e le risposte SAML.

Se la tua IdP soddisfa questi criteri, svolgi i seguenti passaggi:

OIDC

Configura l'IdP in modo che il tuo carico di lavoro possa ottenere token ID che soddisfino i seguenti criteri:

  • I token vengono firmati utilizzando l'algoritmo RS256 o ES256.
  • I token contengono un claim aud con il seguente valore:

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

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero di progetto del progetto Google Cloud che utilizzi per creare il pool di identità del carico di lavoro.
    • POOL_ID: un ID a tua scelta che identifica il pool di identità del workload. Devi utilizzare lo stesso ID quando crei il pool di identità di carico di lavoro in un secondo momento.
    • WORKLOAD_PROVIDER_ID: un ID a tua scelta che identifica il fornitore del pool di identità del workload. Devi utilizzare lo stesso ID quando crei il fornitore del pool di identità del workload in un secondo momento.

    In alternativa, puoi configurare il fornitore del pool di identità del workload in modo che preveda un segmento di pubblico personalizzato.

  • I token contengono una rivendicazione exp nel futuro e una rivendicazione iat nel passato.

    Il valore di exp deve essere maggiore del valore di iat per un massimo di 24 ore.

In genere, è meglio utilizzare i token ID quando si esegue uno scambio di token, poiché riflettono l'identità dell'utente. Se decidi di utilizzare i token di accesso, assicurati che soddisfino i seguenti requisiti aggiuntivi:

  • I token di accesso sono in formato JSON Web Token
  • I token di accesso contengono un claim ISSUER in modo che l'URL ISSUER/.well-known/openid-configuration indichi l'endpoint dei metadati OIDC dell'IDP.

  • Per caricare le chiavi JWK locali, vedi Gestire le chiavi JWK OIDC.

SAML

Configura l'IdP in modo che le asserzioni SAML contengano elementi che soddisfano i seguenti criteri:

  • Un elemento Issuer impostato sull'ID entità configurato nel fornitore del pool di identità del workload. Il formato dell'emittente deve essere omesso o impostato su urn:oasis:names:tc:SAML:2.0:nameid-format:entity.
  • Un elemento Subject con:
    • un elemento NameID.
    • Esatto un elemento SubjectConfirmation con Method impostato su urn:oasis:names:tc:SAML:2.0:cm:bearer.
    • Un elemento SubjectConfirmationData con NotOnOrAfter impostato su un timestamp che si verifica in futuro e nessun valore NotBefore.
  • Un elemento Conditions con:

    • NotBefore omesso o nel passato.
    • NotOnOrAfter omesso o in futuro.
    • Un Audience formattato come segue:

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

      Sostituisci quanto segue:

      • PROJECT_NUMBER: il numero di progetto del progetto Google Cloud che utilizzi per creare il pool di identità del carico di lavoro.
      • POOL_ID: un ID a tua scelta che identifica il pool di identità del workload. Devi utilizzare lo stesso ID quando crei il pool di identità di carico di lavoro in un secondo momento.
      • WORKLOAD_PROVIDER_ID: un ID scelto da te che identifica il provider del pool di identità del workload. Devi utilizzare lo stesso ID quando crei il provider del pool di identità di carico di lavoro in un secondo momento.
  • almeno un elemento AuthnStatement.

  • Un elemento SessionNotOnOrAfter con un timestamp che si verifica in futuro. In alternativa, ometti l'elemento.

Per le asserzioni SAML racchiuse in una risposta SAML, la risposta deve contenere:

  • esattamente un'affermazione che soddisfi i criteri di affermazione SAML descritti in precedenza in questa sezione.
  • Un attributo IssueInstant con un valore inferiore a 1 ora nel passato.
  • il StatusCode urn:oasis:names:tc:SAML:2.0:status:Success.

L'affermazione SAML, la risposta o entrambe devono essere firmate.

Configurare la federazione delle identità per i carichi di lavoro

Questa procedura deve essere eseguita una sola volta per ogni IdP. Puoi quindi utilizzare lo stesso provider e lo stesso pool Workload Identity 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. È preferibile utilizzare 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

(Facoltativo) Gestire i JWK OIDC

Questa sezione mostra come gestire i JWK OIDC caricati autonomamente nei fornitori OIDC del pool di identità del workload.

Crea un provider e carica i JWK OIDC

Per creare JWK OIDC, consulta la sezione Implementazioni di JWT, JWS, JWE, JWK e JWA.

Per caricare un file JWK OIDC quando crei un provider pool di identità del workload, esegui il comando gcloud iam workload-identity-pools providers create-oidc con --jwk-json-path="JWK_JSON_PATH". Sostituisci JWK_JSON_PATH con il percorso del file JSON JWK.

Questa operazione crea le chiavi caricate con quelle nel file.

Aggiornare i JWK OIDC

Per aggiornare i JWK OIDC, esegui il comando gcloud iam workload-identity-pools providers update-oidc con --jwk-json-path="JWK_JSON_PATH". Sostituisci JWK_JSON_PATH con il percorso del file JSON JWK.

Questa operazione sostituisce le eventuali chiavi caricate esistenti con quelle nel file. Non puoi ripristinare le chiavi sostituite.

Elimina tutti i JWK OIDC caricati

Per eliminare tutti i JWK OIDC caricati e tornare a utilizzare l'URI issuer per recuperare le chiavi, esegui il comando gcloud iam workload-identity-pools providers update-oidc con --jwk-json-path="JWK_JSON_PATH". Sostituisci JWK_JSON_PATH con il percorso di un file vuoto. Utilizza il flag --issuer-uri per impostare l'URI dell'emittente.

Questa operazione elimina tutte le chiavi caricate esistenti con quelle nel file. Non puoi ripristinare le chiavi eliminate.

Definire una mappatura degli attributi e una condizione

I token OIDC o le asserzioni SAML emessi dal tuo IdP potrebbero contenere più attributi e devi decidere quale attributo utilizzare come identificatore soggetto (google.subject) in Google Cloud.

Se vuoi, puoi mappare altri attributi. Puoi quindi fare riferimento a questi attributi quando concedi l'accesso alle risorse.

OIDC

Le mappature degli attributi possono utilizzare le rivendicazioni incorporate nel token ID o nel token di accesso emessi dall'IdP esterno.

Devi mappare uno di questi claim a google.subject per identificare in modo univoco l'utente. Per proteggerti dalle minacce di spoofing, scegli un reclamo con un valore unico che non può essere modificato.

Molti provider di identità compilano l'affermazione sub con un ID univoco e immutabile. Per queste IdP, ti consigliamo di mappare l'affermazione sub a google.subject:

google.subject=assertion.sub

Evita di utilizzare una dichiarazione come email per questo scopo. Gli indirizzi email in genere possono essere riassegnati o modificati, pertanto non identificano un utente in modo univoco e permanente.

SAML

Le mappature degli attributi possono utilizzare gli elementi <Subject> e <Attribute> integrati nell'affermazione rilasciata dall'IdP esterno. È possibile fare riferimento agli attributi SAML utilizzando le seguenti parole chiave:

  • assertion.subject contiene il NameID dell'utente autenticato trovato nell'elemento <Subject>.
  • assertion.attributes['ATTRIBUTE_NAME'] contiene un elenco di valori per <Attribute> con lo stesso nome.

Devi mappare uno di questi claim a google.subject per identificare in modo univoco l'utente. Per proteggerti dalle minacce di spoofing, scegli un reclamo con un valore univoco che non può essere modificato.

Molti provider di identità compilano il campo NameId con un ID univoco e immutabile. Per queste IdP, ti consigliamo di mappare l'attributo NameId a google.subject:

google.subject=assertion.subject

Evita di utilizzare un attributo come http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress per questo scopo. In genere, gli indirizzi email possono essere riassegnati o modificati, pertanto non identificano in modo univoco e permanente un utente.

Se vuoi, definisci una condizione dell'attributo. Le condizioni degli attributi sono espressioni CEL che possono controllare gli attributi di asserzione e gli attributi di destinazione. Se la condizione dell'attributo ha valore true per una determinata credenziale, la credenziale viene accettata. In caso contrario, le credenziali vengono rifiutate.

OIDC

Puoi utilizzare una condizione dell'attributo per limitare gli utenti che possono utilizzare la federazione delle identità per il carico di lavoro per ottenere token Google Cloud di breve durata.

Ad esempio, la seguente condizione limita l'accesso ai token che contengono un claim service_account personalizzato con un valore true:

assertion.service_account==true

SAML

Puoi utilizzare una condizione dell'attributo per limitare gli utenti che possono utilizzare la federazione delle identità per il carico di lavoro per ottenere token Google Cloud di breve durata.

Ad esempio, la seguente condizione limita l'accesso alle asserzioni che contengono un attributo https://example.com/SAML/Attributes/AllowGcpFederation personalizzato con un valore true:

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

Crea il provider e il pool di identità del workload

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare la federazione di Workload Identity, chiedi all'amministratore di concederti i seguenti ruoli IAM nel 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 i ruoli personalizzati o altri ruoli predefiniti.

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

Ora hai raccolto tutte le informazioni necessarie per creare un fornitore e un pool di identità del workload:

Console

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

    Vai a Nuovo provider e pool di workload

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

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

  4. Configura le impostazioni del provider nel seguente modo:

    OIDC

    • In Seleziona un provider, seleziona OpenID Connect (OIDC).
    • In Nome fornitore, inserisci un nome per il fornitore. Il nome viene utilizzato anche come ID provider. Non puoi modificare l'ID fornitore dopo la creazione del fornitore.
    • In URL emittente, inserisci l'URL emittente del tuo IdP. L'URL deve iniziare con https://
    • (Facoltativo) In File JWK (JSON), scegli un file JWK da caricare. Se questo campo non viene fornito, Google Cloud tenta di recuperare un JWK dall'emittente.
    • Segmenti di pubblico consentiti: il segmento di pubblico previsto per i token ID.

    SAML

    • In Select a provider (Seleziona un provider), seleziona SAML.
    • In Nome fornitore, inserisci un nome per il fornitore. Il nome viene utilizzato anche come ID provider. Non puoi modificare l'ID fornitore dopo la creazione del fornitore.
    • In File di metadati IDP (XML), carica il documento XML dei metadati SAML fornito dal tuo provider di identità.
  5. Fai clic su Continua.

  6. In Configura gli attributi del provider, aggiungi le mappature degli attributi che hai identificato in precedenza in questa guida.

  7. In Condizioni degli attributi, inserisci la condizione dell'attributo che hai identificato in precedenza in questa guida. Lascia vuoto il campo se non hai una condizione dell'attributo.

  8. Per creare il pool di identità e il provider del workload, fai clic su Salva.

gcloud

  1. Per creare un nuovo pool di identità per i carichi di lavoro, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • POOL_ID: l'ID univoco del pool.
    • DISPLAY_NAME: il nome del pool.
    • DESCRIPTION: una descrizione del pool scelto. Questa descrizione viene visualizzata quando concedi l'accesso alle identità del pool.
  2. Per aggiungere un provider del pool di identità del workload, segui questi passaggi:

    OIDC

    Per aggiungere un provider del pool di identità del workload OIDC, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • WORKLOAD_PROVIDER_ID: un ID fornitore del pool di identità del workload univoco a tua scelta.
    • POOL_ID: l'ID del pool di identità del workload che hai creato in precedenza.
    • ISSUER: un URI emittente come definito nei metadati OIDC.
    • AUDIENCE: il pubblico previsto dei token ID, che per molti fornitori corrisponde all'ID client.
    • MAPPINGS: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza in questa guida.
    • CONDITIONS: un'condizione dell'attributo facoltativa che hai creato in precedenza in questa guida. Rimuovi il parametro se non hai una condizione dell'attributo.
    • JWK_JSON_PATH: un percorso facoltativo a un JWK OIDC caricato localmente. Se questo parametro non viene fornito, Google Cloud utilizza il percorso /.well-known/openid-configuration della tua IdP per recuperare le JWK contenenti le chiavi pubbliche.

    SAML

    Per aggiungere un provider del pool di identità del workload SAML, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • POOL_ID: l'ID del pool
    • IDP_METADATA_PATH: il percorso locale al documento dei metadati dell'IdP SAML
    • MAPPINGS: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza in questa guida
    • CONDITIONS: facoltativo: la condizione dell'attributo che hai creato in precedenza in questa guida

    Il prefisso gcp- è riservato e non può essere utilizzato in un pool di identità per la forza lavoro o nell'ID provider di pool di identità per la forza lavoro.

    (Facoltativo) Accetta le asserzioni SAML criptate dal tuo IdP

    Per consentire al tuo provider di identità SAML 2.0 di produrre assertivi SAML criptati che possono essere accettati dalla federazione delle identità per i carichi di lavoro, svolgi i seguenti passaggi:

    • Nella federazione delle identità per i carichi di lavoro, segui questi passaggi:
      • Crea una coppia di chiavi asimmetriche per il provider del pool di identità del workload.
      • Scarica un file del certificato contenente la chiave pubblica.
      • Configura l'IdP SAML in modo che utilizzi la chiave pubblica per criptare le asserzioni SAML che emette.
    • Nell'IdP:
      • Attiva la crittografia delle asserzioni, nota anche come crittografia dei token.
      • Carica la chiave pubblica che hai creato nella federazione delle identità per i carichi di lavoro.
      • Verifica che il tuo IdP produca asserzioni SAML criptate.
    Tieni presente che, anche con le chiavi del provider di crittografia SAML configurate, la federazione delle identità per i carichi di lavoro può comunque elaborare un'affermazione in chiaro.

    Crea le chiavi di crittografia dell'affermazione SAML per la federazione delle identità per i carichi di lavoro

    Questa sezione descrive la procedura per creare una coppia di chiavi asimmetriche che consenta alla federazione delle identità per i carichi di lavoro di accettare asserzioni SAML criptate.

    Google Cloud utilizza la chiave privata per decriptare le asserzioni SAML emesse dall'IdP. Per creare una coppia di chiavi asimmetriche da utilizzare con la crittografia SAML, esegui il seguente comando. Per saperne di più, consulta Algoritmi di crittografia SAML supportati.

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

    Sostituisci quanto segue:

    • KEY_ID: un nome della chiave a tua scelta
    • WORKLOAD_POOL_ID: l'ID pool
    • WORKLOAD_PROVIDER_ID: l'ID del provider del pool di identità della forza lavoro
    • KEY_SPECIFICATION: la specifica della chiave, che può essere rsa-2048, rsa-3072 e rsa-4096.

    Dopo aver creato la coppia di chiavi, per scaricare la chiave pubblica in un file del certificato, esegui il seguente comando. Solo la federazione delle identità per i carichi di lavoro ha accesso alla chiave privata.

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

    Sostituisci quanto segue:

    • KEY_ID: il nome della chiave
    • WORKLOAD_POOL_ID: l'ID pool
    • WORKLOAD_PROVIDER_ID: l'ID del provider del pool di identità della forza lavoro
    • CERTIFICATE_PATH: il percorso in cui scrivere il certificato, ad esempio saml-certificate.cer o saml-certificate.pem

    Configurare l'IdP conforme a SAML 2.0 per emettere asserzioni SAML criptate

    Configura l'IdP SAML in modo che utilizzi il certificato pubblico scaricato dall'ultimo passaggio per criptare le asserzioni SAML che emette. Rivolgiti al team della tua IdP per istruzioni specifiche.

    Dopo aver configurato l'IdP per criptare le asserzioni SAML, ti consigliamo di verificare che le asserzioni generate siano effettivamente criptate. Anche con la crittografia delle asserzioni SAML configurata, la federazione delle identità per i carichi di lavoro può comunque elaborare le asserzioni in chiaro.

    Eliminare le chiavi di crittografia della federazione delle identità per i carichi di lavoro

    Per eliminare le chiavi di crittografia SAML, esegui il seguente comando:
      gcloud iam workload-identity-pools providers keys delete KEY_ID \
          --workload-identity-pool WORKLOAD_POOL_ID \
          --provider WORKLOAD_PROVIDER_ID \
          --location global

    Sostituisci quanto segue:

    • KEY_ID: il nome della chiave
    • WORKLOAD_POOL_ID: l'ID pool
    • WORKLOAD_PROVIDER_ID: l'ID del provider del pool di identità della forza lavoro

    Algoritmi di crittografia SAML supportati

    La federazione delle identità per i carichi di lavoro supporta i seguenti algoritmi di trasporto principali:

    La federazione delle identità per i carichi di lavoro supporta i seguenti algoritmi di crittografia a blocchi:

Autentica un carico di lavoro

Devi eseguire questi passaggi una volta per ogni carico di lavoro.

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

Per fornire al tuo carico di lavoro l'accesso alle risorse Google Cloud, consigliamo di concedere l'accesso diretto alle risorse al principale. In questo caso, l'entità è l'utente federato. Alcuni prodotti Google Cloud presentano limitazioni dell'API Google Cloud. Se il tuo carico di lavoro chiama un endpoint API con una limitazione, puoi utilizzare la simulazione dell'identità dell'account di servizio. In questo caso, l'entità è l'account di servizio Google Cloud, che funge da identità. Concedi l'accesso all'account di servizio nella 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 poi 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: l'ID del pool di workload
    • SUBJECT: il soggetto singolo mappato dal tuo IdP, ad esempioadministrator@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: l'ID del pool di workload
    • GROUP: il gruppo mappato dall'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 workload
    • ATTRIBUTE_NAME: uno degli attributi mappati dal tuo provider di identità
    • ATTRIBUTE_VALUE: il valore dell'attributo
  6. Seleziona un ruolo 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. Ottieni il numero del progetto in cui è definita la risorsa.

    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 argomento

    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à del workload
    • POOL_ID: l'ID del pool di identità del workload
    • 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 nella 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.

Rappresentazione dell'identità dell'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 rappresenti il carico di lavoro. Ti consigliamo di utilizzare un account di servizio dedicato per ogni carico di lavoro. L'account di servizio non deve trovarsi nello stesso progetto del pool di identità del carico di lavoro, ma devi fare riferimento al progetto che contiene l'account di servizio.

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

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

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

Console

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

Account di servizio nello stesso progetto

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

    1. Vai alla pagina Pool Workload Identity.

      Vai a Pool Workload Identity

    2. Seleziona Concedi 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 l'account di servizio per le identità esterne da rubare e svolgi i seguenti passaggi:

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

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

      • Nell'elenco Nome attributo, seleziona l'attributo su cui vuoi applicare il 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 su Ignora.

Account di servizio in un altro progetto

  1. Per concedere l'accesso utilizzando la rappresentazione dell'account di servizio per un account di servizio in un progetto diverso:

    1. Vai alla pagina Service Accounts.

      Vai a Service account

    2. Seleziona l'account di servizio di cui vuoi assumere il ruolo.

    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 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: l'ID del pool di workload
      • SUBJECT: il soggetto singolo mappato dal tuo IdP, ad esempioadministrator@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: l'ID del pool di workload
      • GROUP: il gruppo mappato dall'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 workload
      • ATTRIBUTE_NAME: uno degli attributi mappati dal tuo provider di identità
      • ATTRIBUTE_VALUE: il valore dell'attributo

      Per 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: l'ID del pool di workload
    6. In Seleziona un ruolo, seleziona il ruolo Workload Identity User (roles/iam.workloadIdentityUser).

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

gcloud

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

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à del workload
  • POOL_ID: l'ID del pool di identità del workload
  • 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 nella mappatura degli attributi
  • ATTRIBUTE_VALUE: il valore dell'attributo personalizzato nella mappatura degli attributi

Scaricare una configurazione delle credenziali

Questa sezione descrive come scaricare la configurazione delle credenziali utilizzando la console Google Cloud.

Per consentire al tuo carico di lavoro di accedere alle librerie client, devi prima scaricare e configurare le credenziali predefinite dell'applicazione (ADC) come segue:

  1. Nella console Google Cloud, vai alla pagina Pool di identità di carico di lavoro.

    Vai a Pool Workload Identity
  2. Nella tabella, seleziona il pool per passare alla relativa pagina dei dettagli.

  3. Fai clic su Concedi accesso.

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

  5. Per scaricare le credenziali predefinite dell'applicazione (ADC) in modo che il tuo workload possa accedere alle librerie client:

    1. Fai clic su Scarica configurazione.

    2. Nella finestra di dialogo Configura l'applicazione, procedi nel seguente modo:

      1. Nell'elenco a discesa Provider, seleziona il tuo fornitore.

      2. In Percorso token OIDC o Percorso asserzione SAML, inserisci il percorso in cui si trova il token o l'asserzione.

      3. Nell'elenco a discesa Tipo di formato, seleziona il formato.

    3. Fai clic su Scarica configurazione e prendi nota del percorso in cui hai salvato il file.

Creare una configurazione delle credenziali

Le librerie client di Cloud, la gcloud CLI e Terraform possono ottenere automaticamente le credenziali esterne e utilizzarle per accedere a Google Cloud. Per consentire alle librerie e agli strumenti di completare questa procedura, devi fornire un file di configurazione delle credenziali. Questo file definisce quanto segue:

  • Da dove ottenere le credenziali esterne
  • Quale provider e pool di identità per i carichi di lavoro utilizzare
  • L'account di servizio da simulare, se utilizzi la simulazione dell'account di servizio

Le librerie client Cloud ottengono le credenziali esterne da un file locale, un URL HTTP, eseguendo un file eseguibile locale:

  • Credenziali basate su file eseguibili: le librerie avviano un file eseguibile ogni volta che hanno bisogno di una nuova credenziale. Se l'eseguibile riesce a ottenere una nuova credenziale esterna, deve scrivere un documento JSON in STDOUT simile al seguente:

    OIDC

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

    Se l'eseguibile non riesce a ottenere una nuova credenziale, deve scrivere un documento JSON in STDOUT simile al seguente:

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

    I documenti JSON utilizzano i seguenti campi:

    • version: la versione dell'output JSON. È supportata solo la versione 1.
    • success: lo stato della risposta.

      Se true, la risposta deve contenere i campi id_token e token_type. L'eseguibile deve uscire con il codice di uscita 0.

      Se false, la risposta deve contenere i campi code e message ed uscire con un valore diverso da zero.

    • token_type: il tipo di token della credenziale esterna. I valori supportati sono

      • urn:ietf:params:oauth:token-type:id_token
      • urn:ietf:params:oauth:token-type:jwt
    • id_token: la credenziale esterna.

    • expiration_time: la scadenza del token OIDC in secondi (tempo Unix epoch). Questo campo è obbligatorio solo se nella configurazione delle credenziali è stato specificato un file di output.

    • code: la stringa del codice di errore.

    • message: il messaggio di errore.

    SAML

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

    Se l'eseguibile non riesce a ottenere una nuova credenziale, deve scrivere un documento JSON in STDOUT simile al seguente:

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

    I documenti JSON utilizzano i seguenti campi:

    • version: la versione dell'output JSON. È supportata solo la versione 1.
    • success: lo stato della risposta.

      Se true, la risposta deve contenere i campi id_token e token_type. L'eseguibile deve uscire con il codice di uscita 0.

      Se false, la risposta deve contenere i campi code e message ed uscire con un valore diverso da zero.

    • token_type: il tipo di token della credenziale esterna. Deve essere urn:ietf:params:oauth:token-type:saml2.

    • saml_response: la risposta SAML o l'affermazione SAML codificata in base64.

    • expiration_time: la scadenza della verifica in secondi (tempo Unix epoch). Questo campo è obbligatorio solo se nella configurazione delle credenziali è stato specificato un file di output.

    • code: la stringa del codice di errore.

    • message: il messaggio di errore.

    Al momento dell'avvio dell'eseguibile, le librerie client impostano le seguenti variabili di ambiente:

    • GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE: Pubblico dalla configurazione delle credenziali. Sempre presente.
    • GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE: tipo di token soggetto previsto. Sempre presente.
    • GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL: Indirizzo email dell'account di servizio. Presente solo quando viene utilizzata l'impersonificazione dell'account di servizio.
    • GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE: Posizione del file di output dalla configurazione delle credenziali. Presente solo se specificato nella configurazione delle credenziali.

    Per utilizzare le credenziali con origine file eseguibile, devi impostare la variabile di ambiente GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES su 1.

  • Credenziali ricavate da file: le librerie leggono le credenziali esterne da un file JSON o di testo normale locale. Ad esempio:

    JSON

    {
      "mytoken": "ey...
    }
    

    Testo

    ey...
    

    La credenziale esterna può essere:

    • un token OIDC
    • una risposta SAML
    • un'affermazione SAML con codifica Base64

    Devi aggiornare periodicamente il file in modo che contenga sempre un'autenticazione valida. Ad esempio, se il token OIDC o l'affermazione SAML è valido per un'ora, devi aggiornare il file almeno una volta ogni ora.

  • Credenziali basate su URL: le librerie eseguono una richiesta GET a un endpoint HTTP ogni volta che hanno bisogno di una nuova credenziale. L'endpoint deve restituire una risposta in testo normale o JSON equivalente al formato utilizzato dalle credenziali basate su file.

Per creare un file di configurazione delle credenziali:

Credenziali provenienti da file eseguibili

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

Sostituisci quanto segue:

  • PROJECT_NUMBER: il numero del progetto che contiene il pool di identità del workload.
  • POOL_ID: l'ID del pool di identità del workload.
  • WORKLOAD_PROVIDER_ID: l'ID del fornitore del pool di identità del workload.
  • SERVICE_ACCOUNT_EMAIL: se utilizzi la simulazione dell'identità del service account, sostituisci con l'indirizzo email del account di servizio. Ometti questo flag se non utilizzi l'impersonificazione degli 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 la simulazione dell'identità dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare il vincolo del criterio dell'organizzazione constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: il file in cui salvare la configurazione.
  • EXECUTABLE_COMMAND: il comando completo, inclusi gli argomenti, da eseguire per recuperare il token ID OIDC, ad esempio --executable-command="/path/to/command --foo=bar".
  • EXECUTABLE_TIMEOUT: la durata facoltativa in millisecondi da attendere per l'esecuzione dell'eseguibile (il valore predefinito è 30 secondi).
  • EXECUTABLE_OUTPUT_FILE: un percorso che rimanda alle credenziali 3PI generate dall'eseguibile. Questo è utile per memorizzare le credenziali nella cache. Se specifichi questo percorso, le librerie Auth verificheranno prima la sua esistenza prima di eseguire l'eseguibile.

Credenziali basate su file

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

Sostituisci quanto segue:

  • PROJECT_NUMBER: il numero del progetto che contiene il pool di identità del workload.
  • POOL_ID: l'ID del pool di identità del workload.
  • WORKLOAD_PROVIDER_ID: l'ID del fornitore del pool di identità del workload.
  • 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 la simulazione dell'identità dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare il vincolo del criterio dell'organizzazione constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: il file in cui salvare la configurazione.
  • TOKEN_FILEPATH: il percorso in cui sono memorizzati i token ID OIDC.
  • SOURCE_TYPE: il formato del file del token ID OIDC, impostato su text (valore predefinito) o json.
  • FIELD_NAME: il campo nel file di testo che contiene il token (se SOURCE_TYPE è json).

Credenziali basate su URL

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

Sostituisci quanto segue:

  • PROJECT_NUMBER: numero del progetto contenente il pool di identità del workload.
  • POOL_ID: l'ID del pool di identità del workload.
  • WORKLOAD_PROVIDER_ID: ID del fornitore del pool di identità del workload
  • SERVICE_ACCOUNT_EMAIL: se utilizzi la simulazione dell'identità dell'account di servizio, sostituisci con l'indirizzo email dell'account di servizio. 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 la simulazione dell'identità dell'account di servizio. Per specificare una durata superiore a un'ora, devi configurare il vincolo del criterio dell'organizzazione constraints/iam.allowServiceAccountCredentialLifetimeExtension.
  • FILEPATH: file in cui salvare la configurazione.
  • TOKEN_URL: URL da cui recuperare il token ID OIDC
  • KEY_n, VALUE_n: intestazioni personalizzate da includere nella richiesta HTTP a TOKEN_URL
  • SOURCE_TYPE: formato del file del token ID OIDC, impostato su text (valore predefinito) o json
  • FIELD_NAME: campo del file di testo che contiene il token (se SOURCE_TYPE è json)

Utilizzare la configurazione delle credenziali per accedere a Google Cloud

Per consentire agli strumenti e alle librerie client di utilizzare la configurazione delle credenziali, svolgi i seguenti passaggi:

  1. Inizializza una variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS e indirizzala al file di configurazione delle credenziali:

    Bash

      export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/FILEPATH.json
      
    dove FILEPATH è il percorso relativo al file 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 supporta la federazione delle identità per i carichi di lavoro e può trovare automaticamente le credenziali:

    C++

    Le librerie client di Google Cloud per C++ supportano 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 controllare quale versione di questo modulo utilizza la tua libreria client, esegui i 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 di Workload Identity se utilizzano la versione 0.24.0 o successive dell'elemento com.google.auth:google-auth-library-oauth2-http.

    Per controllare la versione di questo elemento utilizzato dalla libreria client, esegui il 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à del carico di lavoro se utilizzano la versione 7.0.2 o 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 automaticamente l'ID progetto, l'account di servizio nel file di configurazione deve disporre del ruolo Browser (roles/browser) o di un ruolo con autorizzazioni equivalenti nel progetto. Per maggiori dettagli, consulta il README per il pacchetto google-auth-library.

    Python

    Le librerie client per Python supportano la federazione di Workload Identity se utilizzano la versione 1.27.0 o 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, il service account nel file di configurazione deve disporre del ruolo Browser (roles/browser) o di un ruolo con autorizzazioni equivalenti nel progetto. Per maggiori dettagli, consulta la guida dell'utente per il pacchetto google-auth.

    gcloud

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

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

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

    Il supporto della federazione delle identità per i workload 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 della federazione delle identità per i carichi di lavoro in bq è disponibile nella versione 390.0.0 e successive della CLI gcloud.

Passaggi successivi