Um pool de workers do Cloud Run tem uma identidade de serviço usada como a conta autenticada para acessar Google Cloud APIs do seu contêiner da instância do Cloud Run. Para saber mais sobre a identidade de serviço, consulte o guia Introdução à identidade de serviço.
Como a identidade do serviço é usada
No Cloud Run, a identidade do serviço é uma conta de serviço que é um recurso e um principal.
- Identidade de serviço como um recurso: para anexar uma conta de serviço como a identidade de serviço, a conta do implantador precisa ter acesso ao recurso de identidade de serviço. Algumas operações, como criação ou atualização de um pool de workers, exigem que a conta do implantador tenha permissões no recurso de identidade do serviço.
- Identidade do serviço como principal: para acessar Google Cloud APIs de um pool de workers do Cloud Run, é preciso conceder à identidade do serviço os papéis ou as permissões necessários para as operações que você quer que seu pool de workers execute.
A próxima seção aborda os papéis necessários para conceder à conta do implantador acesso ao recurso de identidade de serviço e os papéis ou permissões de que o principal da conta de serviço precisa.
Funções exigidas
Você ou seu administrador precisa conceder papéis e permissões do IAM para a conta do implantador e a identidade do serviço.
Clique para conferir os papéis necessários para a conta do implantador
Para receber as permissões necessárias para anexar uma conta de serviço como a
identidade do serviço no pool de workers, você ou o administrador
precisa conceder à conta do implantador o
papel Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço
usada como identidade.
Esse papel predefinido contém a iam.serviceAccounts.actAs
permissão, que é necessária para anexar uma conta de serviço ao
pool de workers. Também é possível conseguir essa permissão
configurando papéis personalizados
ou usando outros papéis predefinidos.
Para instruções sobre como conceder esse papel na identidade do serviço à conta do implantador, consulte as permissões de implantação. Se a conta de serviço estiver em um projeto diferente do pool de workers do Cloud Run, você ou seu administrador também precisarão configurar um papel do IAM para o agente de serviço do Cloud Run e definir uma política da organização. Consulte Usar contas de serviço em outros projetos para mais detalhes.
Clique para conferir os papéis necessários para a identidade do serviço
Para permitir que a identidade do serviço acesse Google Cloud APIs do Cloud Run, você ou seu administrador precisa conceder à identidade as permissões ou papéis exigidos pelas operações que você quer realizar. Para acessar bibliotecas de cliente específicas do Cloud, consulte a Google Cloud documentação do Google Cloud serviço.
Se um pool de workers do Cloud Run não acessar outros Google Cloud serviços, não será necessário conceder papéis ou permissões à identidade do serviço e você poderá usar a conta de serviço padrão atribuída ao projeto.
Receber recomendações para criar contas de serviço dedicadas
Quando você cria uma nova conta de serviço no Google Cloud console, a etapa opcional "Conceder a essa conta de serviço acesso ao projeto" é para qualquer acesso adicional necessário. Por exemplo, um serviço do Cloud Run pode invocar outro serviço particular do Cloud Run, ou pode acessar um banco de dados do Cloud SQL, ambos que exigem papéis específicos do IAM. Consulte a documentação sobre como gerenciar o acesso para mais informações.
O serviço do recomendador fornece recomendações automaticamente para criar contas de serviço dedicadas com o conjunto mínimo de permissões necessárias.
Configurar a identidade do serviço
Se você ainda não criou uma conta de serviço, é possível criar uma conta de serviço gerenciado pelo usuário no IAM ou no Cloud Run.
Para configurar uma identidade de serviço, use o Google Cloud console, a CLI gcloud, o YAML ou o Terraform:
Console
No Google Cloud console, acesse o Cloud Run:
Selecione Pools de workers no menu e clique em Implantar contêiner para configurar um novo pool de workers. Se você estiver configurando um pool de workers, clique nele e em Editar e implantar nova revisão.
Ao configurar um novo pool de workers, preencha a página inicial do pool de workers e clique em Contêineres, Rede, segurança para expandir a página de configuração do pool de workers.
Clique na guia Segurança.
- Clique em Criar uma conta de serviço ou no menu suspenso Conta de serviço e selecione uma conta de serviço, se aplicável.
Clique em Criar ou Implantar.
gcloud
Se você ainda não criou uma conta de serviço, crie uma conta de serviço gerenciada pelo usuário em IAM.
É possível atualizar um pool de workers para configurar uma conta de serviço usando o comando a seguir:
gcloud run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT
Substitua:
- WORKER_POOL: o nome do serviço.
- SERVICE_ACCOUNT: a conta de serviço associada à
conta de serviço associada à nova identidade. Esse valor é o endereço de e-mail
da conta de serviço, no formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, em que SERVICE_ACCOUNT_NAME é o nome da conta de serviço e PROJECT_ID é o ID do projeto. Também é possível definir uma conta de serviço durante a implantação usando o comando:
gcloud run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT
Substitua:
- WORKER_POOL: o nome do pool de workers.
- IMAGE_URL: uma referência à imagem do contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - SERVICE_ACCOUNT: a conta de serviço associada à
nova identidade. Esse valor é o endereço de e-mail da conta de serviço, no
formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
YAML
Se você estiver criando um novo pool de workers, pule esta etapa. Se você estiver atualizando um pool de workers, faça o download da configuração YAML correspondente:
gcloud run worker-pools describe WORKER_POOL --format export > workerpool.yaml
O exemplo a seguir contém a configuração YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Substitua:
- WORKER_POOL: o nome do pool de workers do Cloud Run.
- SERVICE_ACCOUNT: a conta de serviço associada a
nova identidade. Esse valor é o endereço de e-mail da conta de serviço
, por exemplo,
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
Crie ou atualize o pool de workers usando o comando a seguir:
gcloud run worker-pools replace workerpool.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Substitua:
- WORKER_POOL: o nome do pool de workers.
- REGION: a Google Cloud região, por exemplo,
europe-west1. - IMAGE_URL: uma referência à imagem do contêiner que
contém o pool de workers, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest. - SERVICE_ACCOUNT: a conta de serviço associada à
conta de serviço associada à nova identidade. Esse valor é o endereço de e-mail
da conta de serviço, no formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, em que SERVICE_ACCOUNT_NAME é o nome da conta de serviço e PROJECT_ID é o ID do projeto.
Usar contas de serviço em outros projetos
Se você configurar uma conta de serviço de um Google Cloud projetodiferente do recurso do Cloud Run, faça o seguinte:
Você ou seu administrador precisa conceder o papel de usuário da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço usada como a identidade do serviço.Console
Acesse a página Contas de serviço do Google Cloud console:
Selecione o endereço de e-mail da conta de serviço que você está usando como a identidade do serviço.
Clique na guia Principais com acesso.
Clique no botão Permitir acesso.
Insira o endereço de e-mail da conta do implantador que corresponde ao principal a que você está concedendo o papel de Administrador ou Desenvolvedor.
Na lista suspensa Selecionar um papel, selecione o papel Contas de serviço > Usuário da conta de serviço.
Clique em Salvar.
gcloud
Use o comando
gcloud iam service-accounts add-iam-policy-binding, substituindo as variáveis destacadas pelos valores apropriados:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço a que você está anexando o recurso do Cloud RunSERVICE_ACCOUNT_PROJECT_ID: o ID do projeto em que a conta de serviço está localizadaPRINCIPAL: a conta do implantador a que você está adicionando a vinculação, usando o formato
user|group|serviceAccount:emailoudomain:domain. Por exemplo:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
Você ou seu administrador precisa conceder ao agente de serviço do recurso do Cloud Run o papel Criador de token da conta de serviço (
roles/iam.serviceAccountTokenCreator) na conta de serviço usada como identidade de serviço. O agente de serviço segue o formato deservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.Console
Acesse a página Contas de serviço do Google Cloud console:
Selecione o endereço de e-mail da conta de serviço que você está usando como a identidade do serviço.
Clique na guia Permissões.
Clique no botão Permitir acesso.
Digite o endereço de e-mail do agente de serviço. Por exemplo:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.No menu suspenso Selecionar um papel, escolha o papel Contas de serviço > Criador de token de conta de serviço.
Clique em Salvar.
gcloud
Use o comando
gcloud iam service-accounts add-iam-policy-binding:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:service-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço a que você está anexando o recurso do Cloud RunSERVICE_ACCOUNT_PROJECT_ID: o ID do projeto em que a conta de serviço está localizadaCLOUD_RUN_RESOURCE_PROJECT_NUMBER: o número do projeto em que o Cloud Run está localizado
O comando imprime a política e permissão datualizada na conta de serviço gerenciado pelo usuário.
O projeto que contém essa conta de serviço requer que a política organizacional
iam.disableCrossProjectServiceAccountUsageseja definida como falsa ou não executada no nível da pasta ou herdada das configurações para envolvidos no projeto. Por padrão, essa opção é definida comotrue.Console
Acesse a página Políticas da organização no Google Cloud console:
No seletor de projeto, escolha a organização e o projeto em que você quer desativar o uso da conta de serviço entre projetos.
Selecione a política desativar o uso de contas de serviço entre projetos.
Clique em Gerenciar política.
Em Origem da política, selecione Substituir política principal.
Clique em Adicionar uma regra.
Em Aplicação, selecione Desativada.
Para aplicar a política, clique em Definir política.
gcloud
No projeto que tem a conta de serviço, verifique se a restrição de política da organização
iam.disableCrossProjectServiceAccountUsagenã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.
É possível aplicar associações de papéis diretamente ao recurso da conta de serviço ou herdar de níveis mais altos na hierarquia de recursos.
Conferir a configuração da conta de serviço do pool de workers
No Google Cloud console, acesse o Cloud Run:
Clique em Pools de workers para exibir a lista de pools de workers implantados.
Clique no pool de workers que você quer examinar para exibir o painel de detalhes.
Clique na guia Segurança para exibir informações de segurança do pool de workers, incluindo contas de serviço.
A seguir
- Para mais informações sobre contas de serviço, consulte os guias da conta de serviço do IAM e da conta serviço gerenciado pelo usuário.
- Se o serviço, o job ou o pool de workers do Cloud Run acessar APIs ou Google Cloud serviços do Google, configure sua conta de serviço como a identidade do serviço. Saiba mais.