Este documento descreve as contas de serviço que são usadas para executar o Cloud Deploy e para chamar o Cloud Deploy para executar várias operações.
O Cloud Deploy usa as seguintes contas de serviço:
O agente de serviço do Cloud Deploy
O Cloud Deploy usa esta conta de serviço para interagir com o seu projeto. Não pode substituir este agente do serviço por uma conta de serviço alternativa, mas pode editar as autorizações na mesma, por exemplo, quando usa recursos fora do projeto (como uma conta de serviço ou um conjunto de trabalhadores do Cloud Build privado).
A conta de serviço de execução do Cloud Deploy
O Cloud Deploy usa esta conta de serviço para executar operações de renderização e implementação no Cloud Build. Esta conta precisa de autorizações suficientes para ler e escrever no contentor do Cloud Storage e para aceder aos destinos de implementação.
A conta de serviço predefinida para execução é a conta de serviço predefinida do Compute Engine. Pode especificar uma conta de serviço alternativa na configuração de destino.
A conta de serviço de automatização do Cloud Deploy
Esta é a conta de serviço que o Cloud Deploy usa para realizar automatizações. Pode ser a conta de serviço de execução predefinida ou outra conta de serviço. Consulte A conta de serviço de automatização Para mais informações acerca desta conta de serviço.
Consulte o artigo Criar e gerir contas de serviço para ver instruções sobre como editar as autorizações da conta de serviço e como criar uma conta de serviço alternativa.
Agente de serviço do Cloud Deploy
O agente de serviço do Cloud Deploy é uma conta de serviço que o Cloud Deploy usa para interagir com outros serviços do Google Clouddos quais o Cloud Deploy depende. Estes serviços incluem o Cloud Build, o Pub/Sub e os registos de auditoria do Cloud.
O nome desta conta de serviço segue este padrão:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Se esta conta for removida do seu projeto, pode adicioná-la novamente:
Abra a página IAM na Google Cloud consola:
Selecione Incluir concessões de funções fornecidas pela Google para apresentar o agente de serviço.
Se o agente de serviço for apresentado, pode ignorar os restantes passos.
Se o agente de serviço não for apresentado, clique em Conceder acesso.
No campo Novos membros, introduza o endereço do agente de serviço no seguinte formato:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Clique na lista pendente Selecionar uma função e selecione Agente do serviço do Cloud Deploy.
Clique em Guardar.
Conta de serviço de execução do Cloud Deploy
Por predefinição, o Cloud Deploy é executado com a conta de serviço do Compute Engine predefinida.
O nome desta conta de serviço segue este padrão:
[project-number]-compute@developer.gserviceaccount.com
Uma vez que esta conta de serviço é usada por muitos produtos, pode ter autorizações amplas. A prática recomendada é alterar o ambiente de execução para que o Cloud Deploy seja executado como uma conta de serviço diferente.
Pode alterar a conta de serviço de execução de cada alvo através da propriedade executionConfigs.privatePool.serviceAccount
ou da propriedade executionConfigs.defaultPool.serviceAccount
na definição do alvo.
Qualquer conta de serviço que definir para estas propriedades tem de ter a função Cloud Deploy Runner no projeto Cloud Deploy. Se a conta de serviço de execução predefinida não tiver esta função, execute o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
A conta de serviço também precisa de autorizações específicas de tempo de execução para a implementação no tempo de execução escolhido. Para o Google Kubernetes Engine, pode escolher as funções Container Developer e Service Account User. Para o Cloud Run, pode escolher as funções Programador do Cloud Run e Utilizador da conta de serviço. Outros tempos de execução usados por alvos personalizados podem exigir as suas próprias autorizações.
Que contas de serviço criar
Se optar por não usar a conta de serviço de execução predefinida para a renderização e a implementação, tem de criar uma ou mais contas de serviço alternativas para usar. Estas são contas de serviço que o Cloud Deploy executa e que estão configuradas na configuração de destino.
Um dos motivos para criar mais do que uma conta de serviço é ter uma conta de serviço específica ou contas para implementação em destinos restritos, como um destino de produção.
Uma abordagem possível é usar contas de serviço separadas por pipeline de entrega. Cada conta de serviço deste tipo incluiria funções com autorizações suficientes para renderizar e implementar.
Para implementações no Google Kubernetes Engine, pode restringir a conta de serviço a um espaço de nomes.
Usar contas de serviço de um projeto diferente
Para o ambiente de execução, pode especificar uma conta de serviço que esteja num projeto diferente daquele em que cria o seu alvo:
No projeto proprietário da conta de serviço, ative a política organizacional de SA entre projetos.
Conceda ao agente de serviço do Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) a autorizaçãoiam.serviceAccounts.actAs
para a sua conta de serviço.Neste caso,
project-number
é o projeto no qual criou o seu alvo.Também pode conceder a função
roles/iam.serviceAccountUser
que inclui essa autorização, no projeto e em cada conta de serviço que esteja num projeto diferente daquele em que o Cloud Deploy está a ser executado.Conceda ao agente de serviço do Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
) a funçãoroles/iam.serviceAccountTokenCreator
.Neste caso,
project-number
é o projeto no qual criou o seu destino, e esta função é concedida no projeto da conta de serviço.Tem de conceder esta função a cada conta de serviço configurada no ambiente de execução de um destino se essa conta de serviço estiver num projeto diferente daquele em que o Cloud Deploy está a ser executado.
Conceda ao autor da chamada de
gcloud deploy releases create
egcloud deploy rollouts create
a autorizaçãoiam.serviceAccounts.actAs
na conta de serviço ou a funçãoroles/iam.serviceAccountUser
.
Autorizações necessárias
A conta de serviço usada para a renderização de configurações tem de ter autorizações suficientes para aceder ao contentor do Cloud Storage onde os seus recursos do Cloud Deploy estão armazenados (pipelines de entrega, lançamentos e implementações).
A função
roles/clouddeploy.jobRunner
inclui todas as autorizações de que a conta de serviço de renderização (privatePool
oudefaultPool
) precisa.A conta de serviço usada para a implementação tem de ter autorizações suficientes para a implementação no cluster de destino e autorização para aceder ao contentor do Cloud Storage.
A conta de serviço que chama o Cloud Deploy para criar uma versão tem de ter a função
clouddeploy.releaser
. Também tem de ter a autorizaçãoiam.serviceAccount.actAs
para usar a conta de serviço que renderiza manifestos (por exemplo, através da funçãoroles/iam.serviceAccountUser
).A conta de serviço que chama o Cloud Deploy para promover uma versão ou criar um
rollout
tem de ter a autorizaçãoiam.serviceAccount.actAs
para usar a conta de serviço que implementa em destinos (por exemplo, através da funçãoroles/iam.serviceAccountUser
).A conta de serviço configurada para uma automatização tem de ter autorização para executar as operações que estão a ser automatizadas. Saiba mais.
A conta de serviço de automatização
Pode automatizar algumas ações num lançamento. O Cloud Deploy executa estas automatizações através da conta de serviço de automatização, que pode ser a conta de serviço de execução predefinida, uma conta de serviço não predefinida usada como a conta de serviço de execução ou outra conta de serviço.
Saiba mais sobre a conta de serviço de automatização.
O que se segue?
- Saiba mais sobre a IAM.
- Saiba mais sobre as funções predefinidas do Cloud Deploy.
- Saiba como criar e gerir contas de serviço.