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:
- Papéis predefinidos do Cloud Run (recomendado)
- Papéis predefinidos do Cloud Functions
- Papéis básicos de editor, proprietário e leitor.
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:
- A conta de serviço legada do Cloud Build1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
). - a conta de serviço do agente de serviço do Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
); - a conta de serviço do agente de serviço do Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com
).
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:
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.
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
.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.