Papéis que concedem acesso ao App Engine

Os papéis determinam quais serviços e ações estão disponíveis para uma conta de usuário ou conta de serviço. Os seguintes tipos de papéis concedem acesso ao App Engine:

  • Papéis básicos são válidos para todos os serviços e recursos de um projeto, incluindo, entre outros, o App Engine. Por exemplo, uma conta com o papel de Editor pode alterar as configurações do App Engine e do Cloud Storage.

  • Papéis predefinidos do App Engine, que fornecem acesso granular a plataforma. Cada serviço do projeto do Google Cloud fornece os próprios papéis predefinidos. Por exemplo, uma conta que só tem o papel de Implantador do App Engine pode implantar aplicativos da plataforma, mas não pode ver ou criar objetos no Cloud Storage. Essa conta também precisa de um papel predefinido do Cloud Storage específico para criar ou visualizar objetos no Cloud Storage.

  • Papéis personalizados: concedem acesso granular de acordo com uma lista de permissões especificadas pelo usuário.

No caso de projetos menores com necessidades menos complexas, use os papéis básicos. Para ter controles de acesso mais detalhados, use os papéis predefinidos.

Papéis básicos

Papéis básicos se aplicam a todos os serviços e recursos de um projeto. Por exemplo, uma conta com o papel de Editor pode alterar as configurações do App Engine e do Cloud Storage.

Papel Permissões do Console do Google Cloud Permissões de ferramentas
Owner Necessário para criar aplicativos do App Engine. Tem todos os privilégios de leitor e editor, além de poder ver o código-fonte implantado, convidar usuários, alterar papéis de usuários e excluir um aplicativo. Necessário para criar aplicativos do App Engine. Também pode implantar o código do aplicativo e atualizar todas as configurações.
Editor Visualizar as informações e editar as configurações do aplicativo. Implantar o código do aplicativo, atualizar índices/filas/crons.
Viewer Visualizar as informações do aplicativo. Solicitar registros.

Papéis predefinidos 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

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

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

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.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

resourcemanager.projects.get

resourcemanager.projects.list

Os papéis predefinidos do App Engine fornecem opções avançadas de controle de acesso.

Estes papéis concedem acesso apenas ao App Engine. Se o projeto inclui outros serviços, como o Cloud Storage ou Cloud SQL, é necessário atribuir papéis adicionais para permitir o acesso aos outros serviços.

Comparação dos papéis predefinidos do App Engine

A tabela a seguir fornece uma comparação completa das capacidades de cada papel predefinido do App Engine.

Capacidade Administrador do App Engine Administrador de serviço do App Engine Implantador do App Engine Leitor do App Engine Leitor de código do App Engine
Listar todos os serviços, versões e instâncias Sim Sim Sim Sim Sim
Ver todas as configurações de aplicativo, serviço, versão e instância Sim Sim Sim Sim Sim
Ver métricas do ambiente de execução, como uso de recursos, informações do carregamento e informações de erro Sim Sim Sim Sim Sim
Ver o código-fonte do app Não Não Não Não Sim
Implantar uma nova versão de um aplicativo Sim, se você também conceder o papel de usuário da conta de serviço Não Sim, se você também conceder o papel de usuário da conta de serviço Não Não
Dividir ou migrar tráfego Sim Sim Não*** Não Não
Iniciar e parar uma versão Sim Sim Não Não Não
Excluir uma versão Sim Sim Sim Não Não
Excluir um serviço inteiro Sim Sim Não Não Não
Usar SSH para se conectar a uma instância de VM no ambiente flexível Sim Não Não Não Não
Encerrar uma instância Sim Não Não Não Não
Desativar e reativar o aplicativo do App Engine Sim Não Não Não Não
Acessar gerenciadores que tenham uma restrição login:admin (somente ambientes de execução de primeira geração) Sim Não Não Não Não
Atualizar regras de expedição Sim Não Não Não Não
Atualizar configurações de DoS Sim Não Não Não Não
Atualizar programações de cron Não Não Não Não Não
Atualizar a expiração padrão de cookies Sim Não Não Não Não
Atualizar referenciadores Sim Não Não Não Não
Atualizar remetentes autorizados da API de e-mail Sim Não Não Não Não

Para detalhes sobre as permissões de IAM específicas que são concedidas por cada papel, consulte a seção Papéis da API Admin.

Para uma conta responsável apenas por implantar novas versões de um app, recomendamos que você conceda os seguintes papéis:

  • Papel de implantador do App Engine (roles/appengine.deployer)
  • Papel usuário da conta de serviço (roles/iam.serviceAccountUser)

    O papel Usuário da conta de serviço permite que a conta personifique a conta de serviço padrão do App Engine durante o processo de implantação.

  • Se a conta usar comandos gcloud para a implantação, adicione também os papéis a seguir:

    • Administrador de objetos do Storage (roles/storage.objectAdmin)
    • Editor do Cloud Build (roles/cloudbuild.builds.editor)
  • Para acessar dados armazenados no Datastore ou atualizar índices, ative o papel Administrador de índice do Cloud Datastore (roles/datastore.indexAdmin).

Veja detalhes sobre como conceder as permissões necessárias em Como criar uma conta de usuário.

Separação de tarefas de implantação e de roteamento de tráfego

Muitas organizações preferem separar as tarefas de implantação da versão de um aplicativo e de intensificação do tráfego dessa nova versão. Assim, essas tarefas são feitas por pessoas com cargos diferentes. Os papéis de administrador de serviço e de implantador do App Engine já incluem essa separação:

  • Implantador do App Engine e as funções de usuário da conta de serviço: as contas são limitadas a implantar novas versões e excluir versões antigas que não veiculam mais tráfego. A conta que tem esses papéis não poderá configurar o tráfego para nenhuma versão nem alterar configurações no nível do aplicativo, como regras de expedição ou domínio de autenticação.
  • Papel de administrador de serviço do App Engine: as contas não conseguem implantar uma nova versão de aplicativo nem alterar configurações no nível do aplicativo. No entanto, elas têm privilégios para alterar as propriedades dos serviços e versões atuais, incluindo alterar quais versões terão capacidade de atender o tráfego. O papel Administrador de serviço do App Engine é ideal para um departamento de operações/TI que lida com o aumento do tráfego nas versões recém-implantadas.

Limitações dos papéis predefinidos

Nenhum dos papéis predefinidos do App Engine concede acesso aos itens a seguir:

  • ver e fazer o download de registros de aplicativos;
  • ver os gráficos do Monitoring no Console do Google Cloud;
  • ativar e desativar o faturamento;
  • executar verificações de segurança no Cloud Security Scanner;
  • acessar configurações ou dados armazenados no Datastore, no Task Queues, no Memcache, no Cloud Search ou em qualquer outro produto de armazenamento do Cloud Platform.