Controlo de acesso com a IAM

Esta página fornece informações suplementares para usar funções de gestão de identidade e acesso (IAM) para definir controlos de acesso ao nível do projeto, para determinar o nível de acesso ao seu Google Cloud projeto e funções criadas através de comandos gcloud functions ou da API Cloud Functions v2.

Se criou ou implementou funções através do Cloud Run, consulte os artigos Controlo de acesso com a IAM e Funções do Cloud Run para uma descrição detalhada das funções predefinidas do Cloud Run, do controlo do acesso a serviços individuais, da disponibilização pública de um serviço ou da configuração da política da organização para o invocador do Cloud Run da IAM.

Controlo de acesso para utilizadores

Adicione utilizadores como membros da equipa ao seu projeto e conceda-lhes funções através do IAM.

As funções do Cloud Run suportam as seguintes funções:

Controlo de acesso para contas de serviço

Uma conta de serviço é um tipo especial deGoogle Cloud conta que funciona como uma identidade para um utilizador não humano que precisa de se autenticar e ter autorização para aceder a dados e realizar várias ações. Algumas destas contas são criadas e geridas pela própria Google e são conhecidas como agentes de serviço.

As seguintes contas de serviço são usadas para as funções do Cloud Run:

Nome ID de membro Função
Conta de serviço predefinida do Compute Engine PROJECT_NUMBER-compute@developer.gserviceaccount.com Editor
Agente de serviço do Google Cloud Functions service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com Agente de serviço do Google Cloud Functions
Conta de serviço do Cloud Build antigo1 PROJECT_NUMBER@cloudbuild.gserviceaccount.com Conta de serviço do Cloud Build
Conta de serviço do Cloud Build service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com Agente de serviço do Cloud Build
Agente de serviço do Google Container Registry service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com Agente de serviço do Container Registry
Agente de serviço do Artifact Registry service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com Agente de serviço do Artifact Registry

Contas de serviço de tempo de execução

Em tempo de execução, as funções do Cloud Run usam por predefinição a conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com), que também tem a função Editor no projeto. Pode alterar as funções destas contas de serviço para limitar ou estender as autorizações das suas funções em execução. Também pode alterar a conta de serviço usada evitando a conta de serviço predefinida ao configurar a identidade do serviço.

Para saber mais sobre as contas de serviço, consulte a documentação das contas de serviço.

Contas de serviço administrativas

Para realizar ações administrativas no seu projeto durante a criação, a atualização ou a eliminação de funções, todos os projetos nas funções do Cloud Run requerem a conta de serviço do agente de serviço das Funções da nuvem Google (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).

Além disso, todos os tempos de execução realizam a criação e o armazenamento de imagens de contentores no seu projeto. Para tal, também tem de aprovisionar o seguinte:

Estas contas de serviço devem ter as funções indicadas na tabela anterior.

Conta de serviço do agente de serviço do Google Cloud Functions

Por predefinição, a conta de serviço do agente de serviço do Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com tem a função cloudfunctions.serviceAgent no seu projeto.

Seguem-se algumas das autorizações notáveis que a app cloudfunctions.serviceAgent usa:

Autorização Descrição
roles/artifactregistry.admin Faça a gestão de repositórios e armazene imagens de compilação no Artifact Registry.
roles/cloudbuild.builds.editor Necessário para usar o Cloud Build para realizar compilações no projeto do utilizador.
roles/cloudbuild.customworkers.builder Crie compilações em trabalhadores personalizados do Cloud Build.
compute.globalOperations.get,
compute.networks.access,
vpcaccess.connectors.{get, use}
Aprovisione funções com acesso à VPC dos projetos de consumidor.
roles/eventarc.developer Faça a gestão dos acionadores do Eventarc para funções.
firebasedatabase.instances.{get, update} Crie funções acionadas pela Firebase Realtime Database.
iam.serviceAccounts.{actAs, getAccessToken, signBlob} Capacidade de obter credenciais da conta de serviço em tempo de execução.
iam.serviceAccounts.getOpenIdToken Necessário para o agente obter um token OpenID numa autoridade especificada pelo utilizador. O token OpenID é usado para invocar funções ativadas para o IAM.
pubsub.subscriptions Gerir subscrições no projeto do utilizador.
pubsub.topics Gerir tópicos no projeto do utilizador.
roles/run.developer Faça a gestão do serviço do Cloud Run para funções.
storage.buckets.create,
storage.objects.{delete, get, create, list}
Necessário para armazenar o código fonte no projeto do utilizador.

Pode ver o conjunto completo de autorizações nas funções de IAM predefinidas ou executando este comando:

gcloud iam roles describe roles/cloudfunctions.serviceAgent

Reponha esta conta de serviço para a função predefinida removendo a função que tiver e adicionando a função de agente do serviço do Cloud Functions:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \
  --role roles/cloudfunctions.serviceAgent

Resolução de problemas de erros de autorização

Se receber erros de autorização quando implementar, atualizar, eliminar ou executar funções no seu projeto, siga estes passos:

  1. Certifique-se de que tem a função de Editor ou Proprietário no seu projeto ou que está a usar a função de Programador das Cloud Functions.

    Se estiver a usar a função Programador das Cloud Functions ao nível do projeto, certifique-se também de que concedeu ao utilizador a função Utilizador da conta de serviço do IAM.

    Atualmente, apenas são permitidas autorizações de execução ao nível da função.

  2. Verifique se a conta de serviço do agente de serviço do Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) tem a função agente de serviço do Cloud Functions (cloudfunctions.serviceAgent) para o seu projeto.

    Certifique-se de que a caixa Incluir concessões de funções fornecidas pela Google no separador Autorizações da página IAM da consola está selecionada para ver esta conta. Em alternativa, pode usar o gcloud projects add-iam-policy-binding PROJECT_ID.

  3. Certifique-se de que tem autorizações para origens de acionadores, como o Pub/Sub ou o Cloud Storage.

Se receber um erro "autorizações insuficientes" ou tiver outros problemas de autenticação quando executa as suas funções, certifique-se de que a conta de serviço de tempo de execução tem as autorizações corretas para aceder aos recursos de que as suas funções precisam. Em seguida, repita os passos 2 e 3.

Se receber um erro "serviço indisponível" durante a implementação, certifique-se de que a conta de serviço de tempo de execução PROJECT_ID@appspot.gserviceaccount.com existe no seu projeto. Para recriar esta conta de serviço se tiver sido eliminada, consulte o artigo Anular a eliminação de uma conta de serviço.

Consulte também o artigo Resolva problemas de funções do Cloud Run.

1 As funções do Cloud Run só usam a conta de serviço do Cloud Build antiga para projetos criados antes de julho de 2024.