Autenticação para o Terraform

Este documento descreve como fazer a autenticação no Google Cloud quando usar o Terraform.

As credenciais padrão da aplicação (ADC) são a forma recomendada de autenticação no Google Cloud quando usa o Terraform. O ADC é uma estratégia usada pelas bibliotecas de autenticação para encontrar automaticamente credenciais com base no ambiente da aplicação. Quando usa o ADC, o Terraform pode ser executado num ambiente de desenvolvimento ou de produção sem alterar a forma como se autentica nosGoogle Cloud serviços e APIs. Para ver informações sobre onde as ADC procuram credenciais e por que ordem, consulte o artigo Como funcionam as Credenciais padrão da aplicação.

Autentique quando usar o Terraform num ambiente de desenvolvimento local

Quando usa o Terraform num ambiente de desenvolvimento local, como uma estação de trabalho de desenvolvimento, pode autenticar-se através das credenciais associadas à sua conta de utilizador ou conta de serviço.

Autentique com uma conta de utilizador

Para configurar o ADC com uma conta de utilizador, usa a Google Cloud CLI:

  1. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    É apresentado um ecrã de início de sessão. Depois de iniciar sessão, as suas credenciais são armazenadas no ficheiro de credenciais local usado pelo ADC.

Faça a autenticação através da simulação de contas de serviço

Pode usar a representação da conta de serviço para configurar um ficheiro ADC local. O Terraform usa essas credenciais automaticamente.

  1. Certifique-se de que tem a função IAM de criador de tokens de conta de serviço (roles/iam.serviceAccountTokenCreator) na conta de serviço que está a roubar a identidade. Para mais informações, consulte a secção Funções obrigatórias.

  2. Use a representação da conta de serviço para criar um ficheiro ADC local executando o seguinte comando:

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

Se quiser permitir que os utilizadores usem uma origem de autenticação primária partilhada e uma conta de serviço variável por ambiente, defina o campo impersonate_service_account no ficheiro de configuração do Terraform:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Autentique ao executar o Terraform em Google Cloud

Quando executa o Terraform num ambiente de desenvolvimento baseado na nuvem, como o Cloud Shell, a ferramenta usa as credenciais que forneceu quando iniciou sessão para autenticação. Google Cloud

Quando usa o Terraform com Google Cloud serviços como o Compute Engine, o App Engine e as funções do Cloud Run, pode anexar uma conta de serviço gerida pelo utilizador aos recursos. Geralmente, a associação de uma conta de serviço é suportada quando os recursos desse serviço podem ser executados ou incluem código de aplicação. Quando anexa uma conta de serviço a um recurso, o código em execução no recurso pode usar essa conta de serviço como a respetiva identidade.

Anexar uma conta de serviço gerida pelo utilizador é a forma preferencial de fornecer credenciais ao ADC para código de produção executado no Google Cloud.

Para obter ajuda na determinação das funções que tem de fornecer à sua conta de serviço, consulte o artigo Escolha funções predefinidas.

Para obter informações sobre os recursos aos quais pode anexar uma conta de serviço e ajuda para anexar a conta de serviço ao recurso, consulte a documentação do IAM sobre como anexar uma conta de serviço.

Set up authentication:

  1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
  2. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  3. 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
  4. To grant another role to the service account, run the command as you did in the previous step.
  5. 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

Autentique quando executar o Terraform nas instalações ou num fornecedor de nuvem diferente

Se estiver a executar a sua aplicação fora de Google Cloud, tem de fornecer credenciais reconhecidas por Google Cloud para usar os serviçosGoogle Cloud .

Autentique com a federação de identidades de cargas de trabalho

A forma preferencial de autenticar com o Google Cloud utilizador de credenciais de um IdP externo é usar a Workload Identity Federation. Pode criar um ficheiro de configuração de credenciais e definir a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para apontar para o mesmo. Esta abordagem é mais segura do que criar uma chave de conta de serviço. Para obter instruções sobre a configuração da federação de identidades da carga de trabalho para o ADC, consulte o artigo Federação de identidades da carga de trabalho com outras nuvens.

Faça a autenticação através de chaves de contas de serviço

Quando executa o Terraform num ambiente de desenvolvimento local, no local ou num fornecedor de nuvem diferente, pode criar uma conta de serviço, conceder-lhe as funções do IAM de que a sua aplicação precisa e criar uma chave para a conta de serviço.

Para criar uma chave de conta de serviço e disponibilizá-la ao ADC:

  1. Crie uma conta de serviço com as funções de que a sua aplicação precisa e uma chave para essa conta de serviço seguindo as instruções em Criar uma chave de conta de serviço.

    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.

Autentique-se nos back-ends do Cloud Storage

O Terraform permite-lhe configurar o Cloud Storage como um back-end para armazenar ficheiros de estado do Terraform. Para autenticar um backend do Cloud Storage, use qualquer um dos métodos descritos nesta página. Para obter informações sobre as variáveis de configuração relacionadas com a autenticação para back-ends do Cloud Storage, consulte a página de back-ends do Terraform para o Cloud Storage.

O que se segue?