Esta página mostra como configurar e ver a identidade do serviço que controla o acesso dos worker pools do Cloud Run às Google Cloud APIs.
Um conjunto de trabalhadores do Cloud Run tem uma identidade de serviço que é usada como a conta autenticada para aceder às APIs a partir do contentor da instância do Cloud Run. Google Cloud Para saber mais sobre a identidade do serviço, consulte o guia Introdução à identidade do 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 uma conta principal.
- Identidade do serviço como recurso: para anexar uma conta de serviço como identidade do serviço, a conta do implementador tem de ter acesso ao recurso de identidade do serviço. Determinadas operações, como a criação ou a atualização de um conjunto de trabalhadores, requerem que a conta do implementador tenha autorizações no recurso de identidade do serviço.
- Identidade de serviço como principal: para aceder às Google Cloud APIs a partir de um conjunto de trabalhadores do Cloud Run, tem de conceder à identidade de serviço as funções ou as autorizações necessárias para as operações que quer que o conjunto de trabalhadores execute.
A secção seguinte aborda as funções necessárias para conceder acesso à conta de implementação no recurso de identidade do serviço e conceder as funções ou as autorizações de que o principal da conta de serviço precisa.
Funções necessárias
O utilizador ou o administrador tem de conceder funções e autorizações de IAM para a conta de implementação e a identidade do serviço.
Clique para ver as funções necessárias para a conta do implementador
Para receber as autorizações necessárias para anexar uma conta de serviço como a identidade de serviço no conjunto de trabalhadores, o utilizador ou o administrador tem de conceder à conta de implementação a função Utilizador da conta de serviço (roles/iam.serviceAccountUser
) na conta de serviço que é usada como identidade de serviço.
Esta função predefinida contém a autorização iam.serviceAccounts.actAs
, que é necessária para anexar uma conta de serviço no
conjunto de trabalhadores. Também pode obter esta autorização
configurando funções personalizadas
ou usando outras funções predefinidas.
Para obter instruções sobre como conceder esta função à conta do implementador na identidade do serviço, consulte autorizações de implementação. Se a conta de serviço estiver num projeto diferente do conjunto de trabalhadores do Cloud Run, o administrador ou o utilizador também tem de configurar uma função do IAM para o agente de serviço do Cloud Run e configurar uma política da organização. Consulte a secção sobre como usar contas de serviço noutros projetos para ver mais detalhes.
Clique para ver as funções necessárias para a identidade do serviço
Para permitir que a identidade do serviço aceda às Google Cloud APIs do Cloud Run, o administrador ou o utilizador tem de conceder à identidade do serviço as autorizações ou as funções necessárias para as operações que quer realizar. Para aceder a bibliotecas de cliente do Google Cloud específicas, consulte a documentação do serviço. Google Cloud Google Cloud
Se um conjunto de trabalhadores do Cloud Run não aceder a outros serviços, não precisa de conceder à identidade de serviço funções nem autorizações, e pode usar a conta de serviço predefinida que foi atribuída ao projeto. Google Cloud
Receba recomendações para criar contas de serviço dedicadas
Quando cria uma nova conta de serviço a partir da consola Google Cloud , o passo opcional "Conceder a esta conta de serviço acesso ao projeto" destina-se a qualquer acesso adicional necessário. Por exemplo, um serviço do Cloud Run pode invocar outro serviço privado do Cloud Run ou aceder a uma base de dados do Cloud SQL, ambos os quais requerem funções específicas do IAM. Consulte a documentação sobre a gestão do acesso para mais informações.
O serviço de recomendações também fornece automaticamente recomendações para criar contas de serviço dedicadas com o conjunto mínimo de autorizações necessárias.
Configure a identidade do serviço
Se ainda não criou uma conta de serviço, pode criar uma conta de serviço gerida pelo utilizador na IAM ou no Cloud Run.
Para configurar uma identidade de serviço, use a Google Cloud consola ou a CLI gcloud:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Grupos de trabalhadores no menu e clique em Implementar contentor para configurar um novo grupo de trabalhadores. Se estiver a configurar um conjunto de trabalhadores existente, clique no conjunto de trabalhadores e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo conjunto de trabalhadores, preencha a página inicial do conjunto de trabalhadores e, em seguida, clique em Recipientes, volumes, rede, segurança para expandir a página de configuração dos conjuntos de trabalhadores.
Clique no separador Segurança.
- Clique em Criar uma nova conta de serviço ou clique no menu pendente Conta de serviço e selecione uma conta de serviço existente, se aplicável.
Clique em Criar ou Implementar.
gcloud
Se ainda não tiver criado uma conta de serviço, crie uma conta de serviço gerida pelo utilizador na IAM.
Pode atualizar um conjunto de trabalhadores existente para configurar uma conta de serviço através do seguinte comando:
gcloud beta run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT
Substitua o seguinte:
- WORKER_POOL: o nome do seu serviço.
- SERVICE_ACCOUNT: a conta de serviço associada à
conta de serviço associada à nova identidade. Este valor é o endereço de email
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 pode definir uma conta de serviço durante a implementação com o comando:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT
Substitua o seguinte:
- WORKER_POOL: o nome do conjunto de trabalhadores.
- IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
. - SERVICE_ACCOUNT: a conta de serviço associada à nova identidade: este valor é o endereço de email da conta de serviço, no formato
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
service_account = "SERVICE_ACCOUNT"
}
Substitua o seguinte:
- WORKER_POOL: o nome do conjunto de trabalhadores.
- REGION: a Google Cloud região, por exemplo,
europe-west1
. - IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, 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. Este valor é o endereço de email
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 seu projeto.
Use contas de serviço noutros projetos
Se configurar uma conta de serviço a partir de um Google Cloud projeto diferente do recurso do Cloud Run, faça o seguinte:
O administrador ou o utilizador tem de conceder a função de utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço que usa como identidade de serviço.Consola
Aceda à página Contas de serviço da Google Cloud consola:
Selecione o endereço de email da conta de serviço que está a usar como identidade do serviço.
Clique no separador Autorizações.
Clique no botão
Conceder acesso.Introduza o endereço de email da conta de implementação que corresponde ao principal ao qual está a conceder a função de administrador ou programador.
No menu pendente Selecionar uma função, selecione a função Contas de serviço > Utilizador da conta de serviço.
Clique em Guardar.
gcloud
Use o comando
gcloud iam service-accounts add-iam-policy-binding
, substituindo as variáveis realçadas pelos valores adequados: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 o seguinte:
SERVICE_ACCOUNT_NAME
: o nome da conta de serviço à qual está a anexar o recurso do Cloud RunSERVICE_ACCOUNT_PROJECT_ID
: o ID do projeto onde a conta de serviço está localizadaPRINCIPAL: a conta de implementação à qual está a adicionar a associação, usando o formato
user|group|serviceAccount:email
oudomain:domain
, por exemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
O utilizador ou o administrador tem de conceder ao agente de serviço do recurso do Cloud Run a função Criador de tokens da conta de serviço (
roles/iam.serviceAccountTokenCreator
) na conta de serviço que usa como identidade de serviço. O agente de serviço segue o formato deservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.Consola
Aceda à página Contas de serviço da Google Cloud consola:
Selecione o endereço de email da conta de serviço que está a usar como identidade do serviço.
Clique no separador Autorizações.
Clique no botão
Conceder acesso.Introduza o endereço de email do agente de serviço. Por exemplo:
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
.No menu pendente Selecionar uma função, selecione a função Contas de serviço > Criador de tokens de contas de serviço.
Clique em Guardar.
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 o seguinte:
SERVICE_ACCOUNT_NAME
: o nome da conta de serviço à qual está a anexar o recurso do Cloud RunSERVICE_ACCOUNT_PROJECT_ID
: o ID do projeto onde a conta de serviço está localizadaCLOUD_RUN_RESOURCE_PROJECT_NUMBER
: o número do projeto onde o Cloud Run está localizado
O comando imprime a política de autorização atualizada para a conta de serviço gerida pelo utilizador.
O projeto que contém esta conta de serviço requer que a política da organização
iam.disableCrossProjectServiceAccountUsage
seja definida como falsa ou não aplicada ao nível da pasta ou herdada das definições ao nível do projeto. Por predefinição, esta opção está definida comotrue
.Consola
Aceda à página Políticas da organização na Google Cloud consola:
No selecionador de projetos, selecione a organização e o projeto para os quais quer desativar a utilização de contas de serviço entre projetos.
Selecione a política desativar utilização da conta de serviço entre projetos.
Clique em Gerir política.
Em Origem da política, selecione Substituir política do elemento principal.
Clique em Adicionar 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, certifique-se de que a
iam.disableCrossProjectServiceAccountUsage
restrição da política da organização não é aplicada. Esta restrição é aplicada por predefinição.Para desativar esta restrição de política da organização, execute o seguinte comando:
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.
Pode aplicar associações de funções diretamente ao recurso da conta de serviço ou herdar de níveis superiores na hierarquia de recursos.
Veja a configuração da conta de serviço para o conjunto de trabalhadores
Na Google Cloud consola, aceda ao Cloud Run:
Clique em Grupos de trabalhadores para apresentar a lista de grupos de trabalhadores implementados.
Clique no conjunto de trabalhadores que quer examinar para apresentar o respetivo painel de detalhes.
Clique no separador Segurança para apresentar informações de segurança do conjunto de trabalhadores, incluindo contas de serviço.
O que se segue?
- Para mais informações sobre contas de serviço, consulte os guias de contas de serviço IAM e contas de serviço geridas pelo utilizador.
- Se o seu serviço, tarefa ou conjunto de trabalhadores do Cloud Run aceder a APIs Google ou Google Cloud serviços, tem de configurar a sua conta de serviço como a identidade do serviço. Saiba mais.