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

Questa guida descrive come utilizzare la federazione Workload Identity per consentire ai carichi di lavoro in esecuzione su Azure Kubernetes Service (AKS), Amazon Elastic Kubernetes Service o su un cluster Kubernetes auto-inserito di autenticarsi su Google Cloud.

Kubernetes ti consente di configurare un cluster in modo che i carichi di lavoro possano ottenere token Kubernetes ServiceAccount da un volume proiettato. Configurando la federazione delle identità per i carichi di lavoro, puoi consentire ai carichi di lavoro di utilizzare di Kubernetes ServiceAccount per l'autenticazione in Google Cloud.

Se usi GKE, usa la Federazione delle identità dei carichi di lavoro per GKE. anziché configurare la federazione delle identità per i carichi di lavoro.

Prima di iniziare

Prima di configurare la federazione delle identità per i carichi di lavoro, assicurati che Il cluster Kubernetes soddisfa i seguenti criteri:

GKE

Per gli utenti di Google Kubernetes Engine (GKE), consulta Eseguire l'autenticazione per le API Google Cloud dai carichi di lavoro GKE.

AKS

Assicurati che il cluster soddisfi i seguenti criteri:

  • Hai abilitato l'emittente OIDC funzionalità.

    Devi abilitare questa funzionalità per fare in modo che la federazione delle identità per i carichi di lavoro accedere ai metadati OpenID Connect e al set di chiavi web JSON (JWKS) per nel cluster.

EKS

Non è necessario apportare modifiche alla configurazione di EKS.

Kubernetes

Assicurati che il cluster soddisfi i seguenti criteri:

  • Stai eseguendo Kubernetes 1.20 o una versione successiva.

    Le versioni precedenti di Kubernetes utilizzavano un formato diverso per i token ServiceAccount che non è compatibile con le istruzioni riportate in questo documento.

  • Hai configurato kube-apiserver in modo che supporti le proiezioni dei volumi di token ServiceAccount.

Non è necessario che il cluster sia accessibile su internet.

Configurare la federazione delle identità per i carichi di lavoro

Devi eseguire questi passaggi una sola volta per ogni cluster Kubernetes. Puoi quindi utilizzare lo stesso provider e lo stesso pool di identità di carico di lavoro per più pod Kubernetes 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. Ti consigliamo di 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

Definire una mappatura degli attributi e una condizione

I token ServiceAccount di Kubernetes contengono più attestazioni, tra cui:

  • sub: contiene lo spazio dei nomi e il nome dell'account ServiceAccount, ad esempio system:serviceaccount:NAMESPACE:KSA_NAME, dove NAMESPACE è lo spazio dei nomi dell'account ServiceAccount e KSA_NAME è il nome dell'account ServiceAccount.
  • "kubernetes.io".namespace: contiene lo spazio dei nomi di ServiceAccount.
  • "kubernetes.io".serviceaccount.name: contiene il nome dell'account di servizio.
  • "kubernetes.io".pod.name: contiene il nome del pod.

Per utilizzare sub come identificatore del soggetto (google.subject) in Google Cloud, utilizza la mappatura seguente:

google.subject=assertion.sub

Facoltativamente, puoi mappare attributi aggiuntivi. Puoi quindi fare riferimento a questi attributi quando concedi l'accesso alle risorse. Ad esempio:

google.subject=assertion.sub,
attribute.namespace=assertion['kubernetes.io']['namespace'],
attribute.service_account_name=assertion['kubernetes.io']['serviceaccount']['name'],
attribute.pod=assertion['kubernetes.io']['pod']['name']

(Facoltativo) Definisci una condizione dell'attributo. Le condizioni degli attributi sono espressioni CEL che possono verificare gli attributi di asserzione e attributi target. Se la condizione dell'attributo restituisce true per un determinato credenziale, la credenziale è accettata. In caso contrario, la credenziale viene rifiutata.

Puoi utilizzare una condizione dell'attributo per limitare gli account di servizio Kubernetes che possono utilizzare la federazione delle identità per i carichi di lavoro per ottenere token Google Cloud di breve durata. Ad esempio, la seguente condizione limita l'accesso ai service account Kubernetes dagli spazi dei nomi backend e monitoring:

assertion['kubernetes.io']['namespace'] in ['backend', 'monitoring']

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

Per creare un provider e un pool di identità per i carichi di lavoro:

AKS

  1. Determina l'URL dell'emittente del tuo cluster AKS:

    az aks show -n NAME -g RESOURCE_GROUP --query "oidcIssuerProfile.issuerUrl" -otsv
    

    Sostituisci quanto segue:

    • NAME: il nome del cluster
    • RESOURCE_GROUP: il gruppo di risorse del cluster

    Il comando restituisce l'URL dell'emittente. L'URL dell'emittente ti servirà in uno dei passaggi successivi.

    Se il comando non restituisce un URL dell'emittente, verifica di avere abilitato l'emittente OIDC funzionalità.

  2. 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 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.
  3. Aggiungi il cluster AKS come provider di pool di identità per i carichi di lavoro:

    gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Sostituisci quanto segue:

    • PROVIDER_ID: un'identità del carico di lavoro univoca con l'ID provider di pool che preferisci.
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro che hai creato in precedenza.
    • ISSUER: l'URI dell'emittente che hai determinato in precedenza.
    • MAPPINGS: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza in questa guida.
    • CONDITIONS: un'condizione dell'attributo facoltativa creata in precedenza in questa guida. Rimuovi il parametro se non hai una condizione dell'attributo.

EKS

  1. Determina l'URL dell'emittente del tuo cluster EKS:

    aws eks describe-cluster --name NAME --query "cluster.identity.oidc.issuer" --output text
    

    Sostituisci NAME con il nome del cluster.

    Il comando restituisce l'URL dell'emittente. Devi conoscere l'URL dell'emittente in uno dei seguenti passaggi.

  2. 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 del pool.
    • DISPLAY_NAME: il nome del pool.
    • DESCRIPTION: una descrizione del pool scelto. Questa descrizione viene visualizzata quando concedi l'accesso al pool le identità di altro tipo.
  3. Aggiungi il cluster EKS come provider del pool di identità di lavoro:

    gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Sostituisci quanto segue:

    • PROVIDER_ID: un'identità del carico di lavoro univoca con l'ID provider di pool che preferisci.
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro che hai creato in precedenza.
    • ISSUER: l'URI dell'emittente che hai determinato in precedenza.
    • MAPPINGS: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza.
    • CONDITIONS: un'condizione dell'attributo facoltativa creata in precedenza in questa guida. Rimuovi il parametro se non hai una condizione dell'attributo.

Kubernetes

  1. Connettiti al cluster Kubernetes e utilizza kubectl per determinare l'URL dell'emittente del cluster:

    kubectl get --raw /.well-known/openid-configuration | jq -r .issuer
    

    L'URL dell'emittente ti servirà in uno dei passaggi successivi.

  2. Scarica l'insieme di chiavi web JSON (JWKS) del cluster:

    kubectl get --raw /openid/v1/jwks > cluster-jwks.json
    

    In uno dei passaggi successivi, carichi il file JWKS in modo che la federazione delle identità per i carichi di lavoro possa verificare l'autenticità dei token dell'account di servizio Kubernetes emessi dal tuo cluster.

  3. 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 del pool.
    • DISPLAY_NAME: il nome del pool.
    • DESCRIPTION: una descrizione del pool scelto. Questa descrizione viene visualizzata quando concedi l'accesso al pool le identità di altro tipo.
  4. Aggiungi il cluster Kubernetes come provider del pool di identità di carico di lavoro e carica la chiave JWKS del cluster:

    gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --issuer-uri="ISSUER" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS" \
        --jwk-json-path="cluster-jwks.json"
    

    Sostituisci quanto segue:

    • PROVIDER_ID: un'identità del carico di lavoro univoca con l'ID provider di pool che preferisci.
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro che hai creato in precedenza.
    • ISSUER: l'URI emittente che hai determinato in precedenza.
    • MAPPINGS: un elenco separato da virgole di mappature degli attributi che hai creato in precedenza.
    • CONDITIONS: un'condizione dell'attributo facoltativa creata in precedenza in questa guida. Rimuovi il parametro se non hai una condizione dell'attributo.

Concedi l'accesso a un carico di lavoro Kubernetes

Questa sezione descrive come configurare un carico di lavoro Kubernetes per accedere Le API Google Cloud utilizzando la federazione delle identità per i carichi di lavoro diretta l'accesso alle risorse o la rappresentazione degli account di servizio.

Devi eseguire questi passaggi una volta per ogni carico di lavoro Kubernetes che richiede l'accesso a Google Cloud.

Ti consigliamo di utilizzare la federazione di Workload Identity. Tuttavia, quando utilizzi la federazione delle identità, alcuni metodi API potrebbero avere limitazioni. Per un elenco delle limitazioni, consulta Federazione delle identità: prodotti e limitazioni.

Se i metodi utilizzati dal tuo carico di lavoro presentano queste limitazioni, puoi utilizzare la sostituzione dell'identità IAM.

Utilizza la federazione delle identità per i carichi di lavoro per concedere l'accesso diretto alle risorse

In questa sezione utilizzi la federazione delle identità di lavoro per concedere un ruolo IAM a un servizio account Kubernetes in modo che possa accedere direttamente alle risorse Google Cloud.

Per creare un account di servizio Kubernetes e assegnargli un ruolo:

  1. Crea un ServiceAccount per Kubernetes:

    kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
    

    Sostituisci quanto segue:

    • KSA_NAME: un nome del servizio account.
    • NAMESPACE: lo spazio dei nomi in cui creare l'account di servizio.
  2. Concedi l'accesso IAM all'account di servizio Kubernetes per un risorsa Google Cloud.

    Secondo il principio del privilegio minimo, ti consigliamo di concedere solo i ruoli specifici delle risorse a cui deve accedere la tua applicazione.

    Nell'esempio seguente, il comando concede il ruolo Visualizzatore cluster Kubernetes Engine (roles/container.clusterViewer) all'account di servizio che hai creato. Il comando utilizza il soggetto che hai mappato in precedenza in documento.

    gcloud projects add-iam-policy-binding projects/PROJECT_ID \
        --role=roles/container.clusterViewer \
        --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/MAPPED_SUBJECT \
        --condition=None
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il valore numerico Il numero del progetto Google Cloud associato al tuo progetto. ID.

    • POOL_ID: l'ID del pool di identità per i carichi di lavoro.

    • MAPPED_SUBJECT: l'account di servizio Kubernetes dall'affermazione nel token di identità che hai mappato a google.subject. Ad esempio, se hai mappato google.subject=assertions.sub e il tuo token ID contiene "sub": "system:serviceaccount:default:my-kubernetes-serviceaccount", MAPPED_SUBJECT è system:serviceaccount:default:my-kubernetes-serviceaccount.

    Puoi concedere ruoli a qualsiasi risorsa Google Cloud che supporta i criteri di autorizzazione IAM. La sintassi dell'identificatore dell'entità dipende dalla risorsa Kubernetes. Per un elenco degli identificatori supportati, consulta Identificatori principali per la federazione delle identità per i carichi di lavoro per GKE.

Ora puoi eseguire il deployment di un carico di lavoro che utilizza il service account Kubernetes per accedere alle risorse Google Cloud a cui hai concesso l'accesso.

Alternativa: utilizza la simulazione dell'identità dell'account di servizio IAM per concedere l'accesso

Per configurare l'account di servizio Kubernetes in modo da utilizzare l'usurpazione di identità dell'account di servizio IAM, segui questi passaggi:

  1. Se non l'hai ancora fatto, crea un account di servizio Kubernetes:

    kubectl create serviceaccount KSA_NAME --namespace NAMESPACE
    

    Sostituisci quanto segue:

    • KSA_NAME: un nome per l'account di servizio
    • NAMESPACE: lo spazio dei nomi in cui creare l'account di servizio
  2. Creare un account di servizio IAM che rappresenta il carico di lavoro.

    Non è necessario che l'account di servizio si trovi nello stesso progetto del carico di lavoro di identità, ma devi specificare il progetto che contiene il servizio account quando vi riferite.

    gcloud iam service-accounts create IAM_SA_NAME \
        --project=IAM_SA_PROJECT_ID
    

    Sostituisci quanto segue:

    • IAM_SA_NAME: il nome dell'account di servizio
    • IAM_SA_PROJECT_ID: l'ID progetto del servizio account
  3. Concedi all'account di servizio IAM l'accesso alle risorse Google Cloud specifiche a cui vuoi che acceda il carico di lavoro Kubernetes.

    gcloud projects add-iam-policy-binding IAM_SA_PROJECT_ID \
        --member="serviceAccount:IAM_SA_NAME@IAM_SA_PROJECT_ID.iam.gserviceaccount.com" \
        --role="ROLE"
    

    Sostituisci quanto segue:

    • IAM_SA_PROJECT_ID: l'ID del progetto in cui hai creato il tuo account di servizio
    • IAM_SA_NAME: il nome dell'account di servizio
    • ROLE: con il nome del ruolo, ad esempio roles/container.clusterViewer
  4. Concedi a Kubernetes ServiceAccount l'accesso per impersonare il Account di servizio IAM:

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

    Sostituisci quanto segue:

    • IAM_SA_NAME: il nome dell'account di servizio
    • PROJECT_ID: l'ID del progetto in cui esegui Kubernetes
    • IAM_SA_PROJECT_NUMBER: il numero del progetto del progetto in cui hai creato l'account di servizio.
    • POOL_ID: l'ID del pool di identità per i carichi di lavoro.
    • MAPPED_SUBJECT: l'account di servizio Kubernetes dall'affermazione nel token di identità che hai mappato a google.subject. Ad esempio, se hai mappato google.subject=assertions.sub e il tuo token ID contiene "sub": "system:serviceaccount:default:my-kubernetes-serviceaccount", MAPPED_SUBJECT è system:serviceaccount:default:my-kubernetes-serviceaccount.

    Per informazioni sull'autorizzazione degli account di servizio IAM ad accedere alle API Google Cloud, consulta Informazioni sugli account di servizio.

Ora puoi eseguire il deployment di un carico di lavoro che utilizza Kubernetes ServiceAccount e l'account di servizio IAM per accedere a Google Cloud le risorse a cui hai concesso l'accesso.

esegui il deployment del carico di lavoro Kubernetes

Per eseguire il deployment di un carico di lavoro Kubernetes in grado di accedere alle risorse Google Cloud, procedi nel seguente modo: le seguenti:

  1. Crea un file di configurazione delle credenziali:

    gcloud iam workload-identity-pools create-cred-config \
        projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --credential-source-file=/var/run/service-account/token \
        --credential-source-type=text \
        --output-file=credential-configuration.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 dell'identità del carico di lavoro fornitore di pool
    • SERVICE_ACCOUNT_EMAIL: indirizzo email dell'account di servizio, se hai configurato il tuo account di servizio Kubernetes per utilizzare l'usurpazione dell'identità dell'account di servizio IAM. Ometti questo flag se hai configurato l'account di servizio Kubernetes per utilizzare l'accesso diretto alle risorse.

    Il file di configurazione delle credenziali consente Librerie client di Cloud, gcloud CLI e Terraform determinano 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 rappresentare
  2. Importa il file di configurazione delle credenziali come ConfigMap.

    kubectl create configmap CONFIGMAP_NAME \
      --from-file credential-configuration.json \
      --namespace NAMESPACE
    

    Sostituisci quanto segue:

    • CONFIGMAP_NAME: il nome del ConfigMap.
    • NAMESPACE: lo spazio dei nomi in cui creare il ConfigMap.
  3. Eseguire il deployment di un carico di lavoro e consentirgli di utilizzare Kubernetes ServiceAccount e ConfigMap.

    Crea un manifest e configuralo come segue:

    • Monta un volume di token proiettato in modo che il carico di lavoro possa ottenere un token dell'account di servizio Kubernetes da un file locale. Configura il volume in modo che il token dell'account di servizio Kubernetes utilizzi il segmento di pubblico previsto dal provider del pool di identità del tuo carico di lavoro.
    • Monta il ConfigMap contenente il file di configurazione delle credenziali in modo che il carico di lavoro possa accedere alla configurazione necessaria per utilizzare la federazione delle identità per i carichi di lavoro.
    • Aggiungi una variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS che contiene il percorso del file di configurazione delle credenziali carichi di lavoro in grado di trovare il file.

    Di seguito è riportato un esempio di manifest che utilizza l'account di servizio Kubernetes e ConfigMap per consentire a Google Cloud CLI di eseguire l'autenticazione in Google Cloud:

    apiVersion: v1
    kind: Pod
    metadata:
      name: example
      namespace: NAMESPACE
    spec:
      containers:
      - name: example
        image: google/cloud-sdk:alpine
        command: ["/bin/sh", "-c", "gcloud auth login --cred-file $GOOGLE_APPLICATION_CREDENTIALS && gcloud auth list && sleep 600"]
        volumeMounts:
        - name: token
          mountPath: "/var/run/service-account"
          readOnly: true
        - name: workload-identity-credential-configuration
          mountPath: "/etc/workload-identity"
          readOnly: true
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: "/etc/workload-identity/credential-configuration.json"
    
      serviceAccountName: KSA_NAME
      volumes:
      - name: token
        projected:
          sources:
          - serviceAccountToken:
              audience: https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
              expirationSeconds: 3600
              path: token
      - name: workload-identity-credential-configuration
        configMap:
          name: CONFIGMAP_NAME

    Puoi seguire lo stesso approccio per consentire agli strumenti e ai carichi di lavoro che utilizzano uno dei seguenti librerie client trovano automaticamente le credenziali:

    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à per i carichi di lavoro se utilizzano la versione v0.0.0-20210218202405-ba52d332ba99 o versioni 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 la versione di questo pacchetto utilizzata dalla 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 il valore GOOGLE_CLOUD_PROJECT o puoi 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 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 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à per i carichi di lavoro se utilizzi la versione 3.61.0 o successiva:

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

    bq

    Per eseguire l'autenticazione mediante la federazione delle identità per i carichi di lavoro, utilizza 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.

  4. Se vuoi, verifica che l'autenticazione funzioni correttamente eseguendo il seguente comando:

    kubectl exec example --namespace NAMESPACE -- gcloud auth print-access-token

Passaggi successivi