Controle de acesso com o IAM

Esta página fornece informações adicionais sobre como usar papéis do Identity and Access Management (IAM) para definir controles de acesso no nível do projeto e determinar o nível de acesso ao projeto e às funções do Google Cloud criado usando comandos gcloud functions ou a API Cloud Functions v2.

Se você criou ou implantou funções usando o Cloud Run, consulte Controle de acesso com o IAM e Papéis do Cloud Run para uma descrição detalhada dos papéis predefinidos do Cloud Run, controle de acesso a serviços individuais, tornando um serviço público ou configurando a política da organização para o IAM do invocador do Cloud Run.

Controle de acesso para usuários

Adicione usuários como membros da equipe ao projeto e atribua papéis a eles usando o IAM.

O Cloud Run functions oferece suporte aos seguintes papéis:

Controle de acesso para contas de serviço

Uma conta de serviço é um tipo especial de contaGoogle Cloud que atua como uma identidade para um usuário não humano que precisa ser autenticado e autorizado para acessar dados e realizar várias ações. Algumas dessas contas são criadas e gerenciadas pelo próprio Google e são conhecidas como agentes de serviços.

As contas de serviço a seguir são usadas para o Cloud Run functions:

Nome ID do membro Papel
Conta de serviço padrão do Compute Engine PROJECT_NUMBER-compute@developer.gserviceaccount.com Editor
Agente de serviços do Google Cloud Functions service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com Agente de serviços do Google Cloud Functions
Conta de serviço legada do Cloud Build1 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 do ambiente de execução

No ambiente de execução, as funções do Cloud Run usam a conta de serviço padrão do Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com), que tem o papel Editor no projeto. É possível alterar os papéis dessas contas de serviço para limitar ou estender as permissões para as funções em execução. Também é possível mudar a conta de serviço usada ao evitar a conta padrão ao configurar a identidade do serviço.

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

Contas de serviço administrativas

Para realizar ações administrativas no seu projeto durante a criação, atualização ou exclusão de funções, todos os projetos no Cloud Run functions exigem a conta de serviço do agente de serviço do Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).

Além disso, todos os ambientes de execução criam e armazenam imagens de contêiner no projeto. Para isso, também é preciso provisionar o seguinte:

Essas contas de serviço devem ter os papéis listados na tabela anterior.

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

Por padrã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 o papel cloudfunctions.serviceAgent no projeto.

Veja algumas das permissões importantes que cloudfunctions.serviceAgent usa:

Permissão Descrição
roles/artifactregistry.admin Gerencia repositórios e armazena imagens de builds no Artifact Registry.
roles/cloudbuild.builds.editor Necessário para usar o Cloud Build a fim de executar criações no projeto do usuário.
roles/cloudbuild.customworkers.builder Crie builds em workers personalizados do Cloud Build.
compute.globalOperations.get,
compute.networks.access,
vpcaccess.connectors.{get, use}
Provisione funções com acesso à VPC de projetos do consumidor.
roles/eventarc.developer Gerenciar gatilhos do Eventarc para funções.
firebasedatabase.instances.{get, update} Crie funções acionadas pelo Firebase Realtime Database.
iam.serviceAccounts.{actAs, getAccessToken, signBlob} Capacidade de receber credenciais da conta de serviço do ambiente de execução.
iam.serviceAccounts.getOpenIdToken Necessário para que o agente receba um token OpenID em uma autoridade especificada pelo usuário. O token OpenID é usado para invocar funções ativadas do IAM.
pubsub.subscriptions Gerencie assinaturas no projeto do usuário.
pubsub.topics Gerencia tópicos no projeto do usuário.
roles/run.developer Gerenciar o 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 usuário.

Veja todo o conjunto de permissões nos papéis predefinidos do IAM ou executando este comando:

gcloud iam roles describe roles/cloudfunctions.serviceAgent

Redefina esta conta de serviço para o papel padrão removendo o papel em uso e adicionando o papel agente de 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

Como solucionar problemas de erros de permissão

Caso haja erros de permissão ao implantar, atualizar, excluir ou executar funções no projeto:

  1. Certifique-se de que você tem o papel de Editor ou Proprietário no projeto, ou de que está usando o papel de Desenvolvedor do Cloud Functions.

    Se você estiver usando o papel Desenvolvedor do Cloud Functions para envolvidos no projeto, verifique também se você concedeu ao usuário o papel Usuário da conta de serviço do IAM.

    Atualmente, apenas permissões de execução são permitidas no nível por 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 o papel Agente de serviço do Cloud Functions (cloudfunctions.serviceAgent) no seu projeto.

    Verifique se a caixa Incluir concessões de papel fornecidas pelo Google na guia Permissões da página IAM do console está marcada para ver essa conta. Também é possível usar gcloud projects add-iam-policy-binding PROJECT_ID.

  3. Verifique se você tem permissões para origens de gatilho, como Pub/Sub ou Cloud Storage.

Se ocorrer um erro de “permissões insuficientes” ou outros problemas de autenticação ao executar as funções, verifique se a conta do serviço do ambiente de execução tem as permissões corretas para acessar os recursos necessários e siga as etapas 2 e 3 acima.

Se o erro de ”serviço indisponível” for exibido durante a implantação, a conta de serviço do ambiente de execução PROJECT_ID@appspot.gserviceaccount.com deve estar no projeto. Para recriar essa conta de serviço, caso tenha sido excluída, consulte Como cancelar a exclusão de uma conta de serviço.

Consulte também Resolver problemas de funções do Cloud Run.

1 O Cloud Run functions só usa a conta de serviço legada do Cloud Build para projetos criados antes de julho de 2024.