Configurare le Credenziali predefinite dell'applicazione

Questa pagina descrive come configurare le credenziali predefinite per le applicazioni (ADC) da utilizzare dalle librerie client Cloud, dalle librerie client delle API Google e dalle API REST e RPC in vari ambienti. Configura ADC fornendo le credenziali ad ADC nell'ambiente in cui è in esecuzione il codice.

Application Default Credentials (ADC) è una strategia utilizzata dalle librerie di autenticazione per trovare automaticamente le credenziali in base all'ambiente dell'applicazione. Le librerie di autenticazione rendono queste credenziali disponibili per le librerie client Cloud e le librerie client delle API di Google. Quando utilizzi ADC, il codice può essere eseguito in un ambiente di sviluppo o di produzione senza dover cambiare il modo in cui l'applicazione si autentica nei servizi e nelle API di Google Cloud.

Per informazioni su dove e in quale ordine ADC cerca le credenziali, consulta Come funzionano le credenziali predefinite dell'applicazione.

Se utilizzi le chiavi API, non devi configurare l'ADC. Per ulteriori informazioni, consulta la sezione Utilizzare le chiavi API.

Come fornire le credenziali all'ADC

Scegli l'ambiente in cui viene eseguito il codice:

Ambiente di sviluppo locale

Puoi fornire le credenziali utente o le credenziali dell'account di servizio all'ADC in un ambiente di sviluppo locale.

Credenziali utente

Quando il codice viene eseguito in un ambiente di sviluppo locale, ad esempio una stazione di lavoro di sviluppo, l'opzione migliore è utilizzare le credenziali associate al tuo account utente.

Quando configuri l'ADC con il tuo account utente, devi tenere conto dei seguenti aspetti:

  • La configurazione dell'ADC con un account utente potrebbe non funzionare per alcuni metodi e API, come l'API Cloud Translation o l'API Cloud Vision, senza parametri o configurazione aggiuntivi. Se viene visualizzato un messaggio di errore relativo alla mancata attivazione dell'API nel progetto o alla mancata disponibilità di un progetto quota, consulta Credenziali utente non funzionanti.

  • Il file ADC locale contiene il token di aggiornamento. Qualsiasi utente con accesso al tuo sistema di file può utilizzarlo per ottenere un token di accesso valido. Se non hai più bisogno di queste credenziali locali, puoi revocarle utilizzando il comando gcloud auth application-default revoke.

  • Il file ADC locale è associato al tuo account utente, non alla configurazione gcloud CLI. Il passaggio a un'altra configurazione dell'interfaccia alla gcloud CLI potrebbe modificare l'identità utilizzata dall'interfaccia a riga di comando gcloud, ma non influisce sul file ADC locale o sulla configurazione dell'ADC.

Il modo in cui configuri l'ADC con il tuo account utente dipende dal fatto che il tuo account utente sia gestito da Google, in altre parole se si tratta di un Account Google, o da un altro provider di identità (IdP) e sia federato tramite l'utilizzo di Workforce Identity Federation.

Configurare l'ADC con il tuo Account Google

Per configurare l'ADC con un Account Google, utilizza Google Cloud CLI:

  1. Install the Google Cloud CLI, then initialize it by running the following command:

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

    gcloud auth application-default login

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

    Viene visualizzata una schermata di accesso. Dopo l'accesso, le credenziali vengono memorizzate nel file delle credenziali locali utilizzato da ADC.

Configurare l'ADC con un account gestito da un IdP esterno

Per configurare l'ADC per un account utente gestito da un IdP esterno e federato con la Federazione delle identità per la forza lavoro:

  1. After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:

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

    gcloud auth application-default login

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

    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

    Viene visualizzata una schermata di accesso. Dopo l'accesso, le credenziali vengono memorizzate nel file delle credenziali locali utilizzato da ADC.

Credenziali dell'account di servizio

Puoi configurare l'ADC con le credenziali di un account di servizio utilizzando la simulazione dell'identità dell'account di servizio o una chiave dell'account di servizio.

Rappresentazione dell'identità dell'account di servizio

Puoi utilizzare l'usurpazione dell'identità dell'account di servizio per configurare un file delle credenziali predefinite per l'applicazione (ADC) locale. Le librerie client che supportano l'uso improprio possono utilizzare automaticamente queste credenziali. I file ADC locali creati utilizzando la sostituzione di identità sono supportati nelle seguenti lingue:

  • C#
  • Vai
  • Java
  • Node.js
  • Python

Devi disporre del ruolo IAM Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) per l'account di servizio di cui stai usurpando l'identità. Per ulteriori informazioni, consulta Ruoli richiesti.

Utilizza l'usurpazione dell'identità dell'account di servizio per creare un file ADC locale:

gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL

Ora puoi utilizzare le librerie client che utilizzano i linguaggi supportati nello stesso modo in cui faresti dopo aver configurato un file ADC locale con le credenziali utente. Le credenziali vengono trovate automaticamente dalle librerie di autenticazione. Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo delle librerie client.

Chiavi account di servizio

Se non puoi utilizzare l'usurpazione di identità di un account utente o di un account di servizio per lo sviluppo locale, puoi utilizzare una chiave dell'account di servizio.

Per creare una chiave dell'account di servizio e renderla disponibile per l'ADC:

  1. Crea un account di servizio con i ruoli necessari per la tua applicazione e una chiave per quell'account di servizio seguendo le istruzioni riportate in Creare una chiave dell'account di servizio.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Ambienti di sviluppo basati su cloud di Google Cloud

Quando utilizzi un ambiente di sviluppo basato su cloud di Google Cloud come Cloud Shell o Cloud Code, lo strumento utilizza le credenziali che hai fornito quando hai eseguito l'accesso e gestisce le autorizzazioni richieste. Non puoi utilizzare gcloud CLI per configurare ADC in questi ambienti. Se devi utilizzare un account utente diverso per configurare ADC o configurare ADC utilizzando un account di servizio, utilizza un ambiente di sviluppo locale o una risorsa di calcolo Google Cloud come ambiente di sviluppo.

Servizi Google Cloud che supportano l'attacco di un account di servizio

Alcuni servizi Google Cloud, come Compute Engine, App Engine e le funzioni Cloud Run, supportano l'attacco di un account di servizio gestito dall'utente ad alcuni tipi di risorse. In genere, l'attacco di un account di servizio è supportato quando le risorse del servizio possono eseguire o includere codice dell'applicazione. Quando colleghi un account di servizio a una risorsa, il codice in esecuzione sulla risorsa può utilizzare quell'account di servizio come la sua identità.

L'attacco di un account di servizio gestito dall'utente è il modo migliore per fornire le credenziali all'ADC per il codice di produzione in esecuzione su Google Cloud.

Per sapere quali ruoli devi fornire al tuo account di servizio, consulta Scegliere i ruoli predefiniti.

Per informazioni sulle risorse a cui puoi collegare un account di servizio e assistenza per il collegamento dell'account di servizio alla risorsa, consulta la documentazione IAM sull'attacco di un account di servizio.

Set up authentication:

  1. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  2. To provide access to your project and your resources, grant a role to the service account:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • ROLE: the role to grant
  3. To grant another role to the service account, run the command as you did in the previous step.
  4. Grant the required role to the principal that will attach the service account to other resources.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • USER_EMAIL: the email address for a Google Account

GKE

L'autenticazione per le applicazioni containerizzate in esecuzione su GKE o GKE Enterprise viene gestita in modo diverso tra gli ambienti di test locali e gli ambienti Google Cloud.

Testare le applicazioni containerizzate in locale

Per testare l'applicazione containerizzata sulla tua workstation locale, puoi configurare i contenitori in modo che si autentichino con il tuo file di credenziali locale. Per testare i container, utilizza un'implementazione Kubernetes locale come minikube e il componente aggiuntivo gcp-auth.

Esegui applicazioni containerizzate su Google Cloud

L'autenticazione per gli ambienti containerizzati Google Cloud viene configurata in modo diverso a seconda dell'ambiente:

On-premise o un altro provider cloud

Se esegui l'applicazione al di fuori di Google Cloud, devi fornire le credenziali riconosciute da Google Cloud per utilizzare i servizi Google Cloud.

Federazione delle identità per i workload

Il modo migliore per autenticarsi in Google Cloud utilizzando le credenziali di un IdP esterno è utilizzare la Federazione delle identità per i carichi di lavoro: crea un file di configurazione delle credenziali e imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che rimandi a questo file. Questo approccio è più sicuro rispetto alla creazione di una chiave dell'account di servizio.

Per assistenza con la configurazione di Workload Identity Federation per ADC, consulta Workload Identity Federation con altri cloud.

Chiave account di servizio

Se non riesci a configurare la federazione delle identità per i carichi di lavoro, devi creare un account di servizio, concedergli i ruoli IAM richiesti dalla tua applicazione e creare una chiave per l'account di servizio.

Per creare una chiave dell'account di servizio e renderla disponibile per l'ADC:

  1. Crea un account di servizio con i ruoli necessari per la tua applicazione e una chiave per quell'account di servizio seguendo le istruzioni riportate in Creare una chiave dell'account di servizio.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Passaggi successivi