Configure a identidade do serviço para pools de trabalhadores

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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. 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.

  3. 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.

  4. Clique no separador Segurança.

    imagem

    • 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.
  5. 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:

  1. 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

    1. Aceda à página Contas de serviço da Google Cloud consola:

      Aceda a Contas de serviço

    2. Selecione o endereço de email da conta de serviço que está a usar como identidade do serviço.

    3. Clique no separador Autorizações.

    4. Clique no botão Conceder acesso.

    5. 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.

    6. No menu pendente Selecionar uma função, selecione a função Contas de serviço > Utilizador da conta de serviço.

    7. 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 Run
    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto onde a conta de serviço está localizada
    • PRINCIPAL: a conta de implementação à qual está a adicionar a associação, usando o formato user|group|serviceAccount:email ou domain:domain, por exemplo:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com
  2. 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 de service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    Consola

    1. Aceda à página Contas de serviço da Google Cloud consola:

      Aceda a Contas de serviço

    2. Selecione o endereço de email da conta de serviço que está a usar como identidade do serviço.

    3. Clique no separador Autorizações.

    4. Clique no botão Conceder acesso.

    5. Introduza o endereço de email do agente de serviço. Por exemplo: service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    6. No menu pendente Selecionar uma função, selecione a função Contas de serviço > Criador de tokens de contas de serviço.

    7. 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 Run
    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto onde a conta de serviço está localizada
    • CLOUD_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.

  3. O projeto que contém esta conta de serviço requer que a política da organizaçãoiam.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 como true.

    Consola

    1. Aceda à página Políticas da organização na Google Cloud consola:

      Aceda às políticas da organização

    2. 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.

    3. Selecione a política desativar utilização da conta de serviço entre projetos.

    4. Clique em Gerir política.

    5. Em Origem da política, selecione Substituir política do elemento principal.

    6. Clique em Adicionar regra.

    7. Em Aplicação, selecione Desativada.

    8. 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

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. Clique em Grupos de trabalhadores para apresentar a lista de grupos de trabalhadores implementados.

  3. Clique no conjunto de trabalhadores que quer examinar para apresentar o respetivo painel de detalhes.

  4. 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?