Controlo de acesso com IAM (1.ª geração)
Pode definir o controlo de acesso através de funções ao nível do projeto (ou seja, o utilizador ou a conta de serviço que implementa a função). Conceda uma função a um membro do projeto ou a uma conta de serviço para determinar o nível de acesso ao seu projeto e aos respetivos recursos.Google Cloud Por predefinição, todos os Google Cloud projetos incluem um único utilizador: o criador original do projeto. Nenhum outro utilizador tem acesso ao projeto e, por isso, acesso às funções, até que um utilizador seja adicionado como membro da equipa do projeto.
Controlo de acesso para utilizadores
Pode adicionar utilizadores como membros da equipa ao seu projeto e conceder-lhes funções através da gestão de identidade e acesso (IAM).
As funções do Cloud Run suportam as funções básicas de editor, proprietário e leitor, que concedem as seguintes autorizações:
- Editor e Proprietário: acesso de leitura e escrita a todos os recursos relacionados com funções. Permite que os utilizadores implementem, atualizem e eliminem funções. Acesso adicional a outros recursos no projeto.
- Visualizador: acesso só de leitura a funções e localizações. Permite que os utilizadores listem funções e vejam os respetivos detalhes, mas não lhes permite ver o código fonte. Acesso adicional a outros recursos no projeto.
As funções do Cloud Run também suportam as funções do Cloud Run predefinidas Programador e Leitor, que concedem as seguintes autorizações:
- Programador: acesso de leitura e escrita a todos os recursos relacionados com funções. Permite que os utilizadores implementem, atualizem e eliminem funções. Não tem acesso a outros recursos no projeto.
- Visualizador: acesso só de leitura a funções e localizações. Permite que os utilizadores listem funções e vejam os respetivos detalhes, mas não lhes permite ver o código fonte. Não tem acesso a outros recursos no projeto.
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 App Engine | PROJECT_ID@appspot.gserviceaccount.com |
Editor |
Agente de serviço de funções do Google Cloud Run | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agente de serviço das funções do Cloud Run |
— | 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 App Engine (PROJECT_ID@appspot.gserviceaccount.com
), que tem a função Editor no projeto. Pode alterar a função destas contas de serviço para limitar ou ampliar as autorizações das suas funções em execução. Também pode alterar a conta de serviço usada fornecendo uma conta de serviço individual não predefinida.
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 do Google Cloud Run (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 básica (
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 das funções do Google Cloud Run
Por predefinição, a conta de serviço do agente de serviço das funções do Google Cloud Run (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. |
cloudfunctions.functions.invoke |
Invocar uma função HTTP protegida pelo IAM. |
compute.globalOperations.get ,compute.networks.access ,vpcaccess.connectors.{get, use} |
Aprovisione funções com acesso à VPC dos projetos de consumidor. |
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. |
storage.buckets.{get, update} |
Configurar notificações num contentor do Cloud Storage que acionam uma função. |
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
Pode repor esta conta de serviço para a função predefinida removendo a função que tem e adicionando a função de agente de serviço das funções do Cloud Run:
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 de funções do Cloud Run.
Se estiver a usar a função Programador de funções do Cloud Run 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.
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 das funções do Cloud Run (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) tem a função 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 Resolução de problemas de funções do Cloud Run.