Autenticazione per Terraform

Questo documento descrive come autenticarsi in Google Cloud quando si utilizza Terraform.

Le credenziali predefinite dell'applicazione sono il modo consigliato per autenticarsi su Google Cloud quando si utilizza Terraform. ADC è una strategia utilizzata dalle librerie di autenticazione per trovare automaticamente le credenziali in base all'ambiente dell'applicazione. Quando utilizzi l'ADC, Terraform può essere eseguito in un ambiente di sviluppo o di produzione senza modificare il modo in cui si autentica nei servizi e nelle API Google Cloud. Per informazioni su dove ADC cerca le credenziali e in quale ordine, vedi Come funzionano le credenziali predefinite dell'applicazione.

Eseguire l'autenticazione quando si utilizza Terraform in un ambiente di sviluppo locale

Quando utilizzi Terraform in un ambiente di sviluppo locale, ad esempio una workstation di sviluppo, puoi autenticarti utilizzando le credenziali associate al tuo account utente o al tuo account di servizio.

Eseguire l'autenticazione utilizzando un 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.

Eseguire l'autenticazione utilizzando un account esterno

Per configurare l'ADC per un account utente gestito da un provider di identità esterno:

  1. Configura la federazione delle identità della forza lavoro.

  2. Configura gcloud CLI per utilizzare Workforce Identity Federation.

  3. Configura l'ADC eseguendo il seguente comando:

    gcloud auth application-default login

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

Autenticazione con l'impersonificazione dell'account di servizio

Puoi utilizzare l'usurpazione dell'identità dell'account di servizio per configurare un file ADC locale. Terraform le utilizza automaticamente.

  1. Assicurati di disporre del ruolo IAM Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) sull'account di servizio di cui stai assumendo il ruolo. Per ulteriori informazioni, consulta Ruoli obbligatori.

  2. Utilizza l'usurpazione dell'identità dell'account di servizio per creare un file ADC locale eseguendo il seguente comando:

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

Se vuoi consentire agli utenti di utilizzare un'origine di autenticazione principale condivisa e un account di servizio variabile per ambiente, imposta il campo impersonate_service_account nel file di configurazione di Terraform:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Eseguire l'autenticazione quando esegui Terraform su Google Cloud

Quando esegui Terraform in un ambiente di sviluppo basato su cloud Google Cloud come Cloud Shell, lo strumento utilizza le credenziali che hai fornito quando hai eseguito l'accesso per l'autenticazione.

Quando utilizzi Terraform con servizi Google Cloud come Compute Engine, App Engine e Cloud Run, puoi collegare un account di servizio gestito dall'utente alle risorse. In genere, l'attacco di un account di servizio è supportato quando le risorse del servizio possono essere eseguite o includere il codice dell'applicazione. Quando colleghi un account di servizio a una risorsa, il codice in esecuzione sulla risorsa può utilizzare l'account di servizio come 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 di 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

Eseguire l'autenticazione quando si esegue Terraform on-premise o su 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.

Eseguire l'autenticazione utilizzando la federazione delle identità per i carichi di lavoro

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. Puoi creare un file di configurazione delle credenziali e impostare la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che rimandi al file. Questo approccio è più sicuro rispetto alla creazione di una chiave dell'account di servizio. Per istruzioni sulla configurazione della federazione delle identità per i carichi di lavoro per ADC, consulta Federazione delle identità per i carichi di lavoro con altri cloud.

Eseguire l'autenticazione utilizzando le chiavi dell'account di servizio

Quando esegui Terraform in un ambiente di sviluppo locale, on-premise o con un altro provider cloud, puoi 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.

Eseguire l'autenticazione ai backend Cloud Storage

Terraform ti consente di configurare Cloud Storage come backend per archiviare i file di stato Terraform. Per autenticarti in un backend Cloud Storage, utilizza uno dei metodi descritti in questa pagina. Per informazioni sulle variabili di configurazione relative all'autenticazione per i backend Cloud Storage, consulta la pagina dei backend Terraform per Cloud Storage.

Passaggi successivi