Para usar o Gerenciador de infraestrutura para criar, atualizar ou excluir uma implantação, é necessário usar uma conta de serviço. O Infra Manager executa o Terraform usando a identidade dessa conta de serviço.
Você não precisa de uma conta de serviço para conferir informações sobre as implantações do Infra Manager.
Nesta página, explicamos como configurar uma conta de serviço para implantar recursos com o Gerenciador de infraestrutura.
Antes de começar
- Ative o serviço Infra Manager.
- Crie uma conta de serviço ou identifique uma conta de serviço atual para usar com o Infra Manager.
Conceder acesso à conta de serviço
Para usar o Gerenciador de infraestrutura para criar, atualizar ou excluir uma implantação, um usuário individual precisa ter acesso à conta de serviço.
Conceda ao usuário o papel do IAM Usuário da conta de serviço (roles/iam.serviceAccountUser
) para a conta de serviço.
Conceder permissões para o Infra Manager
Para trabalhar com o Infra Manager, a conta de serviço precisa ter o
papel de agente do Infra Manager (roles/config.agent
).
Isso concede permissões ao Infra Manager para criar, atualizar e
excluir recursos.
Para saber como conceder permissões a contas de serviço, consulte Gerenciar o acesso a contas de serviço.
Conceder permissão de leitura para o bucket de armazenamento
É possível usar um bucket de armazenamento para armazenar as configurações do Terraform que são implantadas pelo Infra Manager.
Se você usar um bucket de armazenamento para as configurações e ele estiver em um projeto diferente daquele em que você está executando o Infra Manager, verifique se a conta de serviço usada para chamar o Infra Manager tem permissão de leitura para o bucket. Para detalhes sobre as permissões do Cloud Storage, consulte Permissões do IAM para o Cloud Storage.
Se o bucket de armazenamento estiver no mesmo projeto que o Infra Manager e você
tiver concedido roles/config.agent
à conta de serviço, a permissão de leitura
para o bucket já estará ativada.
Para saber mais sobre o upload de uma configuração para um bucket de armazenamento, consulte Fazer upload de uma configuração do Terraform.
Conceder permissões para recursos definidos na configuração
Para criar e gerenciar recursos do Google Cloud definidos na configuração do Terraform, a conta de serviço precisa de permissões específicas para esses recursos.
Permissões específicas para os recursos do Google Cloud que são definidos na configuração do Terraform que você está implantando. Por exemplo, a permissão para criar uma instância de VM do Compute Engine é
compute.instances.create
.Permissões específicas para os recursos do Google Cloud que são definidos na configuração do Terraform da implantação que você está atualizando.
Por exemplo, digamos que sua implantação provisione uma VM do Compute Engine e você atualiza a implantação usando uma configuração que não inclui uma VM do Compute Engine. Nesse caso, ao atualizar a revisão, a conta de serviço precisa:
Permissões para os recursos definidos na nova configuração.
Permissões para os recursos que estão sendo excluídos, como a VM do Compute Engine neste exemplo.
Para receber ajuda para identificar as permissões necessárias para os recursos nas configurações do Terraform, consulte Escolher papéis predefinidos.
Para saber como conceder permissões a contas de serviço, consulte Gerenciar o acesso a contas de serviço.
Conceda acesso a projetos.
Outras permissões são necessárias se a conta de serviço estiver em um projeto diferente daquele em que o serviço do Infra Manager é executado.
Para conceder essas permissões adicionais:
No projeto que tem a conta de serviço, verifique se a restrição de política da organização
iam.disableCrossProjectServiceAccountUsage
não foi aplicada. Essa restrição é aplicada por padrão.Para desativar essa restrição de política da organização, execute:
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_ID
Substitua SERVICE_ACCOUNT_PROJECT_ID pelo ID do projeto que contém a conta de serviço.
No projeto que tem a conta de serviço, conceda o papel
roles/iam.serviceAccountUser
ao agente de serviço do Infra Manager do projeto em que você está criando implantações:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
Substitua os valores de marcador no comando acima pelo seguinte:
- SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém a conta de serviço.
- INFRA_MANAGER_PROJECT_NUMBER: o número do projeto em que você está criando implantações. Isso forma o ID de e-mail do agente de serviço:
service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
Para permitir que o Infra Manager crie trabalhos do Cloud Build em nome da conta de serviço, conceda a ela a função
roles/iam.serviceAccountTokenCreator
. Esse papel é para o agente de serviço do Infra Manager do projeto em que você está criando implantações:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
A seguir
- Saiba mais sobre IAM.
- Saiba mais sobre o Terraform com o Google Cloud.
- Implantar a infraestrutura usando o Infra Manager.
- Atualizar uma implantação.
- Conferir o estado de uma implantação.