Funções que concedem acesso ao App Engine

As funções determinam os serviços e as ações disponíveis para uma conta de utilizador ou uma conta de serviço. Os seguintes tipos de funções concedem acesso ao App Engine:

  • Funções básicas que se aplicam a todos os serviços e recursos num projeto, incluindo, entre outros, o App Engine. Por exemplo, uma conta com a função de editor pode alterar as definições do App Engine, bem como as definições do Cloud Storage.

  • Funções predefinidas do App Engine, que oferecem acesso detalhado ao App Engine. Cada serviço no seu Google Cloud projeto fornece as suas próprias funções predefinidas. Por exemplo, uma conta que só tenha a função de implementador do App Engine pode implementar apps do App Engine, mas não pode ver nem criar objetos no Cloud Storage. Essa conta também precisa de uma função predefinida do Cloud Storage específica para criar ou ver objetos no Cloud Storage.

  • Funções personalizadas, que oferecem acesso detalhado de acordo com uma lista de autorizações que especificar.

Pode usar funções básicas quando trabalha em projetos mais pequenos com necessidades menos complexas. Para controlos de acesso mais precisos, use funções predefinidas.

Funções básicas

As funções básicas aplicam-se a todos os serviços e recursos num projeto. Por exemplo, uma conta com a função de editor pode alterar as definições do App Engine, bem como as definições do Cloud Storage.

Função Autorizações daGoogle Cloud console Autorizações de ferramentas
Owner Necessário para criar aplicações do App Engine. Todos os privilégios de visualizador e editor, além da capacidade de ver o código-fonte implementado, convidar utilizadores, alterar funções de utilizador e eliminar uma aplicação. Tem privilégios de administrador para todos os recursos no projeto. Necessário para criar aplicações do App Engine. Também pode implementar código de aplicação e atualizar todas as configurações.
Editor Ver informações da aplicação e editar as definições da aplicação. Tem privilégios de administrador para todos os recursos no projeto. Implementar código de aplicação, atualizar índices/filas/tarefas cron.
Viewer Veja as informações da aplicação. Tem privilégios de administrador para todos os recursos no projeto. Pedir registos

Funções predefinidas do App Engine

Role Permissions

(roles/appengine.appAdmin)

Read/Write/Modify access to all application configuration and settings.

To deploy new versions, a principal must have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.applications.update

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.runtimes.actAsAdmin

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.create

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appCreator)

Ability to create the App Engine resource for the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.create

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appViewer)

Read-only access to all application configuration and settings.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.codeViewer)

Read-only access to all application configuration, settings, and deployed source code.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.getFileContents

appengine.versions.list

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.debugger)

Ability to read or manage v2 instances.

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.deployer)

Read-only access to all application configuration and settings.

To deploy new versions, you must also have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Cannot modify existing versions other than deleting versions that are not receiving traffic.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.create

appengine.versions.delete

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.memcacheDataAdmin)

Can get, set, delete, and flush App Engine Memcache items.

appengine.applications.get

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.serviceAdmin)

Read-only access to all application configuration and settings.

Write access to module-level and version-level settings. Cannot deploy a new version.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.delete

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.serviceAgent)

Give App Engine Standard Envirnoment service account access to managed resources. Includes access to service accounts.

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.aptartifacts.create

artifactregistry.dockerimages.*

  • artifactregistry.dockerimages.get
  • artifactregistry.dockerimages.list

artifactregistry.files.download

artifactregistry.files.get

artifactregistry.files.list

artifactregistry.kfpartifacts.create

artifactregistry.locations.*

  • artifactregistry.locations.get
  • artifactregistry.locations.list

artifactregistry.mavenartifacts.*

  • artifactregistry.mavenartifacts.get
  • artifactregistry.mavenartifacts.list

artifactregistry.npmpackages.*

  • artifactregistry.npmpackages.get
  • artifactregistry.npmpackages.list

artifactregistry.packages.get

artifactregistry.packages.list

artifactregistry.projectsettings.get

artifactregistry.pythonpackages.*

  • artifactregistry.pythonpackages.get
  • artifactregistry.pythonpackages.list

artifactregistry.repositories.create

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.get

artifactregistry.repositories.list

artifactregistry.repositories.listEffectiveTags

artifactregistry.repositories.listTagBindings

artifactregistry.repositories.readViaVirtualRepository

artifactregistry.repositories.uploadArtifacts

artifactregistry.tags.create

artifactregistry.tags.get

artifactregistry.tags.list

artifactregistry.tags.update

artifactregistry.versions.get

artifactregistry.versions.list

artifactregistry.yumartifacts.create

compute.addresses.create

compute.addresses.createInternal

compute.addresses.delete

compute.addresses.deleteInternal

compute.addresses.get

compute.addresses.list

compute.networks.get

compute.subnetworks.get

compute.subnetworks.use

datastore.databases.get

datastore.entities.create

datastore.entities.delete

datastore.entities.get

datastore.entities.list

datastore.entities.update

datastore.indexes.list

datastore.namespaces.*

  • datastore.namespaces.get
  • datastore.namespaces.list

datastore.statistics.*

  • datastore.statistics.get
  • datastore.statistics.list

iam.serviceAccounts.getAccessToken

iam.serviceAccounts.getOpenIdToken

iam.serviceAccounts.signBlob

serviceusage.services.enable

serviceusage.services.get

storage.buckets.create

storage.buckets.get

As funções predefinidas do App Engine oferecem opções mais detalhadas para o controlo de acesso.

Estas funções só concedem acesso ao App Engine. Se o seu projeto incluir outros serviços, como o Cloud Storage ou o Cloud SQL, tem de atribuir funções adicionais para ativar o acesso aos outros serviços.

Comparação das funções predefinidas do App Engine

A tabela seguinte oferece uma comparação completa das capacidades de cada função do App Engine predefinida.

Capacidade Administrador do App Engine Administrador de serviços do App Engine App Engine Deployer Visualizador do App Engine Visualizador de código do App Engine
Apresente todos os serviços, versões e instâncias Sim Sim Sim Sim Sim
Veja todas as definições de aplicações, serviços, versões e instâncias Sim Sim Sim Sim Sim
Veja métricas de tempo de execução, como a utilização de recursos, informações de carregamento e informações de erros Sim Sim Sim Sim Sim
Veja o código-fonte da app Não Não Não Não Sim
Implemente uma nova versão de uma app Sim, se também conceder a função Utilizador da conta de serviço Não Sim, se também conceder a função Utilizador da conta de serviço Não Não
Divida ou migre tráfego Sim Sim Não*** Não Não
Inicie e pare uma versão Sim Sim Não Não Não
Elimine uma versão Sim Sim Sim Não Não
Elimine um serviço completo Sim Sim Não Não Não
Use o SSH para estabelecer ligação a uma instância da VM no ambiente flexível Sim Não Não Não Não
Encerre uma instância Sim Não Não Não Não
Desative e reative a aplicação do App Engine Sim Não Não Não Não
Controladores de acesso com uma restrição login:admin (apenas runtimes de primeira geração) Sim Não Não Não Não
Atualize as regras de envio Sim Não Não Não Não
Atualize as definições de DoS Sim Não Não Não Não
Atualize as agendas cron Não Não Não Não Não
Atualize a validade dos cookies predefinida Sim Não Não Não Não
Atualize os referentes Sim Não Não Não Não
Atualize os remetentes autorizados da API Email Sim Não Não Não Não

Para ver detalhes sobre as autorizações de IAM específicas concedidas por cada função, consulte a secção Funções da API Admin.

Para uma conta responsável apenas pela implementação de novas versões de uma app, recomendamos que conceda as seguintes funções:

  • Função de implementador do App Engine (roles/appengine.deployer)
  • Função de utilizador da conta de serviço (roles/iam.serviceAccountUser)

    A função de utilizador da conta de serviço permite que a conta se faça passar pela conta de serviço predefinida do App Engine durante o processo de implementação.

  • Se a conta usar comandos gcloud para implementar, adicione também estas funções:

    • Administrador de objetos de armazenamento (roles/storage.objectAdmin)
    • Editor do Cloud Build (roles/cloudbuild.builds.editor)

Para ver detalhes sobre como conceder as autorizações necessárias, consulte o artigo Criar uma conta de utilizador.

Separação das funções de implementação e encaminhamento de tráfego

Muitas organizações preferem separar a tarefa de implementar uma versão da aplicação da tarefa de aumentar o tráfego para a versão recém-criada e que estas tarefas sejam realizadas por diferentes funções de trabalho. As funções App Engine Deployer e App Engine Service Admin oferecem esta separação:

  • Funções de implementador do App Engine e utilizador da conta de serviço: as contas estão limitadas à implementação de novas versões e à eliminação de versões antigas que não estejam a publicar tráfego. A conta com estas funções não pode configurar o tráfego para nenhuma versão nem alterar as definições ao nível da aplicação, como as regras de envio ou o domínio de autenticação.
  • Função de administrador do serviço do App Engine: as contas não podem implementar uma nova versão de uma app nem alterar as definições ao nível da aplicação. No entanto, essas contas têm privilégios para alterar as propriedades dos serviços e das versões existentes, incluindo alterar as versões que podem publicar tráfego. A função de administrador do serviço do App Engine é ideal para um departamento de operações/TI que lida com o aumento do tráfego para versões implementadas recentemente.

Limitações das funções predefinidas

Nenhuma das funções predefinidas do App Engine concede acesso ao seguinte:

  • Veja e transfira registos de aplicações.
  • Veja gráficos de monitorização na Google Cloud consola.
  • Ativar e desativar a faturação.
  • Execute verificações de segurança no Cloud Security Scanner.
  • Aceder à configuração ou aos dados armazenados no Datastore, nas filas de tarefas, na Pesquisa na nuvem ou em qualquer outro produto de armazenamento da Cloud Platform.