Este documento descreve como se autenticar no Google Cloud ao usar o Terraform.
O Application Default Credentials (ADC, na sigla em inglês) é a maneira recomendada de autenticação no Google Cloud ao usar o Terraform. O ADC é uma estratégia usada pelas bibliotecas de autenticação do Google para encontrar credenciais automaticamente com base no ambiente do aplicativo. Quando você usa o ADC, o Terraform pode ser executado em um ambiente de desenvolvimento ou produção sem alterar a forma como ele se autentica nos Google Cloud serviços e nas APIs. Para informações sobre onde o ADC procura credenciais e em que ordem, consulte Como o Application Default Credentials funciona.
Autenticar ao usar o Terraform em um ambiente de desenvolvimento local
Quando você usa o Terraform em um ambiente de desenvolvimento local, como uma estação de trabalho de desenvolvimento, é possível autenticar usando as credenciais associadas com a sua conta de usuário ou conta de serviço.
Autenticar usando uma conta de usuário
Para configurar o ADC com uma conta de usuário, use a Google Cloud CLI:
-
Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init -
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Uma tela de login será exibida. Após o login, suas credenciais são armazenadas no arquivo de credenciais local usado pelo ADC.
Autenticar usando a identidade temporária de conta de serviço
Você pode usar a identidade temporária de conta de serviço para configurar um arquivo ADC local. O Terraform usa essas credenciais automaticamente.
Verifique se você tem o papel do IAM de Criador de token da conta de serviço (
roles/iam.serviceAccountTokenCreator) na conta de serviço que está representando. Para mais informações, consulte Papéis necessários.Use a identidade temporária de conta de serviço para criar um arquivo ADC local executando o seguinte comando:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
Se você quiser permitir que os usuários usem uma fonte de autenticação primária compartilhada
e uma conta de serviço variável por ambiente, defina o
impersonate_service_account
campo no arquivo de configuração do Terraform:
provider "google" {
impersonate_service_account = "SERVICE_ACCT_EMAIL"
}
Autenticar ao executar o Terraform no Google Cloud
Ao executar o Terraform em um ambiente de desenvolvimento baseado na nuvem do Google Cloud , como o Cloud Shell, a ferramenta usa as credenciais fornecidas ao fazer login para autenticação.
Ao usar o Terraform com Google Cloud serviços do , como o Compute Engine, o App Engine e as funções do Cloud Run, é possível anexar uma conta serviço gerenciado pelo usuário aos recursos. Geralmente, a anexação de uma conta de serviço acontece quando os recursos desse serviço podem ser executados ou incluem o código do aplicativo. Quando você vincula uma conta de serviço a um recurso, o código em execução no recurso pode usar essa conta de serviço como identidade.
Anexar uma conta de serviço gerenciado pelo usuário é a maneira preferencial de fornecer credenciais ao ADC para códigos de produção em execução no Google Cloud.
Se precisar de ajuda para determinar os papéis que você precisa fornecer à conta de serviço, consulte Escolher papéis predefinidos.
Para informações sobre quais recursos podem ser anexados a 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.
Configure a autenticação:
-
Verifique se você tem o papel do IAM de Criador de contas de serviço
(
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis. -
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Substitua
SERVICE_ACCOUNT_NAMEpor um nome para a conta de serviço. -
Para conceder acesso ao projeto e aos recursos, conceda um papel à conta de serviço:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço.PROJECT_ID: o ID do projeto em que você criou a conta de serviçoROLE: o papel a ser concedido
- Para conceder outro papel à conta de serviço, execute o comando que você fez na etapa anterior.
-
Conceda o papel necessário à principal que vai anexar a conta de serviço a outros recursos.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço.PROJECT_ID: o ID do projeto em que você criou a conta de serviçoUSER_EMAIL: o endereço de e-mail de uma Conta do Google
Autenticar ao executar o Terraform no local ou em outro provedor de nuvem
Se você estiver executando o aplicativo fora do Google Cloud, será necessário fornecer credenciais reconhecidas pelo Google Cloud para usar Google Cloud serviços.
Autenticar usando a federação de identidade da carga de trabalho
A maneira mais comum de autenticar com Google Cloud usando credenciais de
um IdP externo é usar
a federação de identidade da carga de trabalho. É possível criar um arquivo de configuração de credenciais e definir a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para apontar para ele. Essa abordagem é mais segura do que criar uma chave de conta de serviço. Para instruções
sobre como configurar a federação de identidade da carga de trabalho para o ADC, consulte
Federação de identidade da carga de trabalho com outras nuvens.
Autenticar usando chaves de conta de serviço
Ao executar o Terraform em um ambiente de desenvolvimento local, no local ou em um provedor de nuvem diferente, é possível criar uma conta de serviço, conceder a ela os papéis do IAM necessários para o aplicativo e criar uma chave para a conta de serviço.
Para criar uma chave de conta de serviço e disponibilizá-la para o ADC, faça o seguinte:
Crie uma conta de serviço com os papéis de que seu aplicativo precisa e uma chave para essa conta de serviço. Para fazer isso, siga as instruções em Como criar uma chave de conta de serviço.
Autenticar nos back-ends do Cloud Storage
O Terraform permite configurar o Cloud Storage como um back-end para armazenar arquivos de estado. Para fazer a autenticação em um back-end do Cloud Storage, use qualquer um dos métodos descritos nesta página. Para informações sobre variáveis de configuração relacionadas à autenticação para back-ends do Cloud Storage, consulte a Página de back-ends do Terraform para o Cloud Storage.
A seguir
- Trabalhe no Guia de início rápido do Terraform para Google Cloud
- Saiba mais sobre os comandos básicos do Terraform.