Esegui l'autenticazione per gcloud CLI

Questo documento riguarda solo l'autenticazione per Google Cloud CLI per accedere alle risorseGoogle Cloud . Se devi autenticare i workload utilizzando le librerie client Cloud o le librerie client delle API di Google, consulta Come funzionano le credenziali predefinite dell'applicazione.

Prima di iniziare

Se non hai mai utilizzato Google Cloud e vuoi solo iniziare a utilizzare i comandi gcloud CLI nel tuo ambiente di sviluppo locale, puoi inizializzare gcloud CLI con il seguente comando:

gcloud init

L'inizializzazione ti guida attraverso un flusso di autenticazione, configura una configurazione gcloud CLI e autorizza gcloud CLI ad agire per tuo conto. Non è necessario eseguire un passaggio di autenticazione separato.

Il resto di questo documento tratta scenari più complessi, come l'utilizzo di gcloud CLI con diversi tipi di principal, metodi di autenticazione appropriati per ambienti diversi, cambio di principal e gestione delle credenziali memorizzate.

Metodi di autenticazione

Tutti i comandi gcloud CLI devono autenticarsi alle Google Cloud API. Puoi autenticarti nei seguenti modi:

  • Autorizza e memorizza le credenziali: adatto per l'utilizzo da parte di persone in un ambiente di sviluppo locale. Puoi autorizzare gcloud CLI ad agire per conto di un principal utilizzando il comando gcloud auth login. Dopo l'autenticazione iniziale, questo comando memorizza le credenziali nella directory di configurazione di gcloud CLI. gcloud CLI utilizza queste credenziali archiviate per l'autenticazione automatica per i comandi successivi fino alla scadenza della sessione o alla revoca dell'autorizzazione.

  • Autenticati con un file delle credenziali: adatto ai workload in esecuzione al di fuori di Google Cloud. Puoi utilizzare le variabili di ambiente o le proprietà di configurazione di gcloud CLI per specificare un file di credenziali per l'autenticazione automatica. Questo file può essere uno dei seguenti:

    • Un file di configurazione delle credenziali della federazione delle identità per i workload.

    • Una chiave del account di servizio.

  • Fornisci un token di accesso: adatto per workflow automatizzati altamente isolati o sessioni stateless su macchine condivise. Puoi ignorare l'archivio credenziali fornendo un token di accesso direttamente a gcloud CLI. Puoi farlo impostando una variabile di ambiente specifica sulla stringa del token di accesso non elaborato o indirizzando gcloud CLI a un file contenente il token di accesso.

Dopo l'autenticazione, puoi facoltativamente consentire a gcloud CLI di simulare l'identità di un service account fornendo l'indirizzo email del service account.

Puoi utilizzare più metodi di autenticazione in un unico ambiente. Tuttavia, per qualsiasi comando gcloud viene utilizzato un solo principal. Per determinare quale principal utilizzare, gcloud CLI segue un ordine di priorità.

Quando non è necessario autenticarsi

Non è necessario eseguire l'autenticazione per gcloud CLI nelle seguenti situazioni:

  • Subito dopo aver inizializzato gcloud CLI. L'autenticazione e l'autorizzazione di gcloud CLI ad agire per tuo conto sono incluse nel processo di inizializzazione. Potresti comunque dover eseguire di nuovo l'autenticazione se devi accedere a risorse diverse utilizzando un principal diverso o se devi eseguire di nuovo l'autenticazione del principal.
  • Quando utilizzi gcloud CLI da una risorsa che espone un server di metadati di Compute Engine. Sono incluse risorse come le istanze VM di Compute Engine, i servizi Cloud Run e le build Cloud Build. gcloud CLI esegue l'autenticazione utilizzando il account di servizio collegato alla VM e può accedere alle stesse risorse del account di servizio entro i limiti di eventuali ambiti di accesso applicati.
  • Quando utilizzi Cloud Shell. gcloud CLI esegue automaticamente l'autenticazione utilizzando l'entità con cui hai eseguito l'accesso alla console Google Cloud . Quando esegui un comando dell'interfaccia a riga di comando gcloud per la prima volta in una nuova sessione di Cloud Shell, ti viene chiesto di autorizzare Cloud Shell utilizzando questa entità.

Scegliere l'entità giusta per l'attività

Esistono diversi tipi di principal per l'utilizzo umano e i carichi di lavoro automatizzati. Il tipo di entità di servizio da utilizzare influisce sul modo in cui esegui l'autenticazione.

  • Account utente: si tratta di Account Google destinati a persone che svolgono attività interattive, come attività amministrative incidentali, configurazione non programmatica di servizi, test, sperimentazione e osservabilità. Google Cloud

    L'autenticazione avviene come account utente con credenziali utente, ad esempio una password e un codice monouso.

  • Service account: si tratta di account specifici per Google Cloud che i workload possono utilizzare per accedere a servizi o risorse. In genere non esegui l'autenticazione direttamente come account di servizio. In alternativa, puoi collegare un account di servizio a una risorsa come una VM Compute Engine o utilizzare la simulazione dell'identità dei account di servizio.

  • Entità federate: si tratta di identità che fanno riferimento a utenti o service account in un provider di identità esterno. Esistono due tipi di entità federate supportate da Google Cloud, che hanno nomi simili:

Utilizzare gcloud CLI come utente

Per le attività interattive, in genere l'autenticazione avviene con uno dei seguenti metodi:

  • Un account utente

  • Un'identità utente federata, che utilizza la federazione delle identità per la forza lavoro

Account utente

La modalità di autenticazione con un account utente per gcloud CLI dipende dall'installazione o meno di un browser web sul tuo dispositivo.

Il mio dispositivo ha un browser web

Per eseguire l'autenticazione con un account utente su un dispositivo con un browser web, completa i seguenti passaggi:

  1. Esegui questo comando per avviare il processo:

    gcloud auth login
    
  2. Segui il flusso basato sul browser per autenticare e autorizzare gcloud CLI ad accedere alle risorse per tuo conto per i comandi futuri.

Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

Il mio dispositivo non ha un browser web

Se il dispositivo su cui devi utilizzare gcloud CLI non ha un browser web, puoi autenticarti con il tuo account utente su un altro dispositivo attendibile. Questa procedura varia a seconda del software installato sull'altro dispositivo attendibile.

Eseguire l'autenticazione utilizzando un altro dispositivo attendibile

Seleziona il software disponibile sull'altro dispositivo attendibile.

gcloud CLI e un browser web

Utilizza il flag --no-browser per completare la procedura di autenticazione su un altro dispositivo con un browser web e gcloud CLI installato:

  1. Esegui il seguente comando sul dispositivo originale su cui vuoi utilizzare gcloud CLI:

    Linux e macOS

    gcloud auth login \
        --no-browser
    

    Windows (PowerShell)

    gcloud auth login `
        --no-browser
    
  2. Copia il comando gcloud che inizia con gcloud auth login --remote-bootstrap=" da utilizzare sull'altro dispositivo.

  3. Vai a un altro dispositivo attendibile su cui sono installati sia un browser web sia gcloud CLI versione 372.0.0 o successive.

  4. Nel terminale, esegui il comando che hai copiato in precedenza che inizia con gcloud auth login --remote-bootstrap=" e completa il flusso basato sul browser.

  5. Nel terminale, copia l'URL che inizia con https://localhost da utilizzare sul dispositivo originale.

  6. Torna al dispositivo originale.

  7. Nel terminale, al prompt, incolla l'URL https://localhost che hai copiato in precedenza. Premi Invio sulla tastiera per completare la procedura.

Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

Solo browser web

Utilizza il flag --no-launch-browser per completare la procedura di autenticazione utilizzando il browser web di un altro dispositivo:

  1. Esegui il seguente comando sul dispositivo originale su cui vuoi utilizzare gcloud CLI:

    Linux e macOS

    gcloud auth login \
        --no-launch-browser
    

    Windows (PowerShell)

    gcloud auth login `
        --no-launch-browser
    
  2. Copia l'URL che inizia con https://accounts.google.com/o/oauth2/auth da utilizzare sull'altro dispositivo.

  3. Vai a un altro dispositivo attendibile su cui è installato un browser web.

  4. Apri un browser web, vai all'URL che hai copiato in precedenza e completa il flusso basato sul browser.

  5. Copia il codice di verifica da utilizzare sul dispositivo originale.

  6. Torna al dispositivo originale.

  7. Nel terminale, al prompt, incolla il codice di verifica che hai copiato in precedenza. Premi Invio sulla tastiera per completare la procedura.

Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

Identità utente federate

Puoi utilizzare gcloud CLI con un'identità utente federata gestita in un provider di identità (IdP) esterno. Puoi farlo con la federazione delle identità per la forza lavoro.

Le seguenti istruzioni presuppongono che tu abbia già configurato un pool e un provider di federazione delle identità per la forza lavoro per funzionare con il tuo IdP.

Per utilizzare gcloud CLI con un'identità utente federata, crea un file di configurazione di accesso, quindi accedi utilizzando un flusso basato sul browser:

  1. Esegui questo comando per creare un file di configurazione di accesso:

    Linux e macOS

    gcloud iam workforce-pools create-login-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --output-file=LOGIN_CONFIG_PATH

    Windows (PowerShell)

    gcloud iam workforce-pools create-login-config `
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID `
        --output-file=LOGIN_CONFIG_PATH

    Sostituisci quanto segue:

    • WORKFORCE_POOL_ID: l'ID del pool di Federazione delle identità della forza lavoro.
    • WORKFORCE_PROVIDER_ID: l'ID del provider di Federazione delle identità della forza lavoro.
    • LOGIN_CONFIG_PATH: il percorso in cui scrivere il file di configurazione di accesso. Ad esempio, login-config.json.

    Il file di configurazione dell'accesso contiene gli endpoint utilizzati da gcloud CLI per attivare il flusso di autenticazione basato su browser e impostare il pubblico sull'IdP configurato nel provider del pool di identità per la forza lavoro. Il file non contiene informazioni riservate.

    Il contenuto del file di configurazione di accesso è simile al seguente:

    {
      "universe_domain": "googleapis.com",
      "universe_cloud_web_domain": "cloud.google",
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.google/authorize",
      "token_url": "https://sts.googleapis.com/v1/oauthtoken",
      "token_info_url": "https://sts.googleapis.com/v1/introspect"
    }

  2. Indica il file di configurazione di accesso con una variabile di ambiente, una proprietà nella configurazione gcloud CLI attiva o utilizzalo direttamente con il comando gcloud auth login:

    Variabile di ambiente

    Per utilizzare il file di configurazione dell'accesso con una variabile di ambiente, completa le seguenti istruzioni:

    1. Imposta la variabile di ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE sul percorso del file di configurazione di accesso.
    2. Esegui questo comando:

      gcloud auth login
    3. gcloud CLI fa riferimento alla variabile di ambiente per trovare il file di configurazione di accesso, quindi avvia il processo di autenticazione. Segui il flusso basato sul browser per autenticare e autorizzare gcloud CLI ad accedere alle risorse per tuo conto per i comandi futuri.

    Per interrompere l'utilizzo del file di configurazione di accesso per i comandi gcloud auth login, cancella la variabile di ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.

    Configurazione di gcloud CLI

    Per utilizzare il file di configurazione dell'accesso con una proprietà di configurazione gcloud CLI, completa le seguenti istruzioni:

    1. Imposta la proprietà auth/login_config_file della configurazione gcloud CLI attiva sul percorso del file di configurazione di accesso con il seguente comando:

      gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
    2. Esegui questo comando:

      gcloud auth login
    3. gcloud CLI fa riferimento alla proprietà di configurazione per trovare il file di configurazione di accesso e poi avvia il processo di autenticazione. Segui il flusso basato sul browser per autenticare e autorizzare gcloud CLI ad accedere alle risorse per tuo conto per i comandi futuri.

    Per interrompere l'utilizzo del file di configurazione di accesso per i comandi gcloud auth login, annulla l'impostazione della proprietà con il seguente comando:

    gcloud config unset auth/login_config_file

    gcloud auth login

    Per utilizzare il file di configurazione di accesso direttamente con il comando gcloud auth login, segui queste istruzioni:

    • Se hai utilizzato il flag --activate durante la creazione del file di configurazione di accesso, esegui questo comando:

      gcloud auth login
    • Se non hai utilizzato il flag --activate quando hai creato il file di configurazione di accesso, esegui il seguente comando:

      Linux e macOS

      gcloud auth login \
          --login-config=LOGIN_CONFIG_PATH

      Windows (PowerShell)

      gcloud auth login `
          --login-config=LOGIN_CONFIG_PATH

      Sostituisci LOGIN_CONFIG_PATH con il percorso del file di configurazione di accesso.

    Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

Utilizzare gcloud CLI con i carichi di lavoro

Per i workload automatizzati, in genere l'autenticazione viene eseguita con uno dei seguenti metodi:

  • Un'identità federata per i Workload Identity, che utilizza la federazione delle identità per i workload

  • Un account di servizio, utilizzando la rappresentazione

Identità di workload federate

Puoi utilizzare gcloud CLI con un'identità federata per i carichi di lavoro. Puoi farlo con la federazione delle identità per i workload.

Un workload può accedere alle risorse Google Cloud direttamente agendo come un principal definito da un pool di identità del workload oppure assumere l'identità di un account di servizio collegato a un pool di identità del workload.

Ti consigliamo di utilizzare il metodo di accesso diretto per evitare account di servizio con autorizzazioni eccessive e per registrare l'accesso alle risorse utilizzando l'identificatore dell'entità federata. Utilizza la simulazione dell'identità del account di servizio solo quando le API Google Cloud non supportano la federazione delle identità per i workload.

Le seguenti istruzioni presuppongono che tu abbia già configurato un pool e un provider di federazione delle identità per i carichi di lavoro per funzionare con il tuo IdP.

  1. Crea un file di configurazione delle credenziali per la federazione delle identità per i carichi di lavoro seguendo le istruzioni per il provider di identità supportato.

  2. Definisci il percorso del file di configurazione delle credenziali in una variabile di ambiente, come proprietà nella configurazione di gcloud CLI attiva o con il comando gcloud auth login:

    Variabile di ambiente

    Imposta la variabile di ambiente CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE sul percorso del file di configurazione delle credenziali. La gcloud CLI fa riferimento al file ogni volta che esegue un comando e ottiene una credenziale dal tuo IdP. Questa credenziale viene scambiata con un token di accesso a Google Cloud.

    Per non utilizzare più il file di configurazione delle credenziali, cancella la variabile di ambiente CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE.

    Configurazione di gcloud CLI

    Imposta la proprietà auth/credential_file_override della configurazione dell'interfaccia a riga di comando gcloud attiva sul percorso del file di configurazione delle credenziali con il seguente comando:

    gcloud config set auth/credential_file_override CONFIGURATION_PATH
    

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

    Per interrompere l'utilizzo del file di configurazione delle credenziali per impostazione predefinita per i comandi gcloud, annulla l'impostazione della proprietà con il seguente comando:

    gcloud config unset auth/credential_file_override
    

    gcloud auth login

    Esegui questo comando utilizzando il flag --cred-file:

    Linux e macOS

    gcloud auth login \
        --cred-file=CONFIGURATION_PATH
    

    Windows (PowerShell)

    gcloud auth login `
        --cred-file=CONFIGURATION_PATH
    

    Sostituisci CONFIGURATION_PATH con il percorso di un file di configurazione delle credenziali.

    Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

Service account

Puoi utilizzare gcloud CLI con un account di servizio nei seguenti modi:

  • Su una risorsa che espone un server di metadati Compute Engine, ad esempio un'istanza VM Compute Engine o un servizio Cloud Run. gcloud CLI utilizza per impostazione predefinita il account di servizio collegato alla risorsa per l'autenticazione.

  • Utilizzando un'altra entità per rappresentare un account di servizio.

  • Utilizzando una chiave del account di servizio.

Simulazione dell'identità dei service account

Per l'accesso alle risorse che normalmente non è disponibile per la tua entità, ti consigliamo di gestire l'escalation dei privilegi con Privileged Access Manager anziché utilizzare la simulazione dell'identità del service account.

Se Privileged Access Manager non è adatto al tuo caso d'uso, completa i seguenti passaggi per utilizzare gcloud CLI con un account di servizio:

  1. Per rappresentare un account di servizio, assicurati che l'API Service Account Credentials sia abilitata nel tuo progetto.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilitare l'API

  2. Scegli un'entità da utilizzare per simulare l'identità di un account di servizio.

  3. Per assicurarti che il principal disponga dell'autorizzazione necessaria per rappresentare un account di servizio, chiedi all'amministratore di concedere al principal il ruolo IAM Creatore token service account (roles/iam.serviceAccountTokenCreator) nel account di servizio. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Questo ruolo predefinito contiene l'autorizzazione iam.serviceAccounts.getAccessToken necessaria per assumere l'identità di un account di servizio.

    L'amministratore potrebbe anche essere in grado di concedere al principal questa autorizzazione tramite ruoli personalizzati o altri ruoli predefiniti.

  4. Esegui l'autenticazione per gcloud CLI con l'entità che hai scelto in precedenza, che si tratti di un account utente, identità utente federata, identità federata del workload o un altro account di servizio.

  5. Scegli un account di servizio da rappresentare. Trova un service account esistente o creane uno nuovo.

  6. Copia l'indirizzo Email del account di servizio.

  7. Scegli se simulare l'identità del account di servizio per tutti i comandi o solo per un singolo comando:

    Tutti i comandi

    Per utilizzare la simulazione dell'identità del account di servizio con gcloud CLI per i comandi futuri, puoi impostare una variabile di ambiente o una proprietà nella configurazione gcloud CLI attiva:

    • Variabile di ambiente: imposta la variabile di ambiente CLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT sull'indirizzo email del account di servizio.

      Per interrompere l'utilizzo del account di servizio, cancella la variabile di ambiente CLOUDSDK_AUTH_IMPERSONATE_SERVICE_ACCOUNT.

    • Configurazione di gcloud CLI: imposta la proprietà auth/impersonate_service_account della configurazione di gcloud CLI attiva con il seguente comando:

      gcloud config set auth/impersonate_service_account SERVICE_ACCOUNT_EMAIL
      

      Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email del account di servizio.

      Per interrompere l'utilizzo della simulazione dell'identità del account di servizio per impostazione predefinita per i comandi gcloud, annulla l'impostazione della proprietà con questo comando:

      gcloud config unset auth/impersonate_service_account
      

    Singolo comando

    Per utilizzare la simulazione dell'identità del account di servizio con gcloud CLI per un singolo comando, puoi aggiungere il flag --impersonate-service-account a un comando di servizio gcloud CLI.

    Ad esempio, per elencare le istanze VM di Compute Engine utilizzando la simulazione dell'identità deiaccount di serviziot, esegui questo comando:

    Linux e macOS

    gcloud compute instances list \
        --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
    

    Windows (PowerShell)

    gcloud compute instances list `
        --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
    

    Sostituisci SERVICE_ACCOUNT_EMAIL con l'indirizzo email del account di servizio.

Chiave service account

Ti consigliamo di utilizzare la federazione delle identità per i workload per la maggior parte dei workload eseguiti al di fuori di Google Cloud. Utilizza le chiavi degli account di servizio solo se il tuo workload viene eseguito in un ambiente esterno isolato che non supporta la federazione delle identità per i carichi di lavoro.

La federazione delle identità per i workload offre i seguenti vantaggi:

  • L'accesso alle risorse viene concesso tramite Identity and Access Management (IAM), con i carichi di lavoro trattati come entità individuali. Ciò significa che non devi concedere troppe autorizzazioni a unaccount di serviziot per più casi d'uso.

  • Puoi controllare quale workload esegue quale attività; le azioni non sono nascoste dietro un indirizzo email delaccount di serviziot.

  • La federazione delle identità per i workload utilizza token di accesso di breve durata per ridurre il rischio di esfiltrazione. Le chiavi del service account non scadono a meno che non vengano revocate manualmente.

Per utilizzare un account di servizio con gcloud CLI per i comandi futuri, svolgi le seguenti operazioni:

  1. Crea una chiave dell'account di servizio e salvala come file in una posizione sicura del tuo ambiente.

  2. Definisci il percorso del file delle chiavi del account di servizio in una variabile di ambiente, come proprietà nella configurazione attiva di gcloud CLI o con il comando gcloud auth login:

    • Variabile di ambiente: imposta la variabile di ambiente CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE sul percorso del file della chiave del account di servizio.