Este documento descreve como se autenticar no Cloud de Confiance by S3NS ao usar o Terraform.
O Application Default Credentials (ADC, na sigla em inglês) é a maneira recomendada de autenticação no Cloud de Confiance 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 Cloud de Confiance by S3NS 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 e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init -
Crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
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 Cloud de Confiance
Ao executar o Terraform em um ambiente de desenvolvimento baseado na nuvem do Cloud de Confiance , como o Cloud Shell, a ferramenta usa as credenciais fornecidas ao fazer login para autenticação.
Ao usar o Terraform com Cloud de Confiance 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 Cloud de Confiance.
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.s3ns.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.s3ns.iam.gserviceaccount.com --member="principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID" --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ço.POOL_ID: um ID do pool de identidade da força de trabalho.-
SUBJECT_ID: um ID de assunto; normalmente o identificador de um usuário em um pool de identidades de força de trabalho. Para mais detalhes, consulte Representar usuários do pool de força de trabalho nas políticas do IAM.
Autenticar ao executar o Terraform no local ou em outro provedor de nuvem
Se você estiver executando o aplicativo fora do Cloud de Confiance, será necessário fornecer credenciais reconhecidas pelo Cloud de Confiance para usar Cloud de Confiance serviços.
Autenticar usando a federação de identidade da carga de trabalho
A maneira mais comum de autenticar com Cloud de Confiance 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 Cloud de Confiance
- Saiba mais sobre os comandos básicos do Terraform.