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:
-
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.
-
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.
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.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:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
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 accountPROJECT_ID
: the project ID where you created the service accountUSER_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:
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?
- Siga o início rápido do Terraform para Google Cloud
- Saiba mais sobre os comandos básicos do Terraform.