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:
- Funções predefinidas do Cloud Run (recomendado)
- Funções predefinidas do Cloud Functions
- Funções básicas de Editor, Proprietário e Visitante.
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:
- A conta de serviço do Cloud Build antiga1 (
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
)
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:
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.
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
.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.