Roles que conceden acceso a App Engine

Los roles determinan qué servicios y acciones están disponibles para una cuenta de usuario o una cuenta de servicio. Los siguientes tipos de roles conceden acceso a App Engine:

  • Roles básicos: se aplican a todos los servicios y recursos de un proyecto, incluido App Engine. Por ejemplo, una cuenta con el rol Editor puede cambiar la configuración de App Engine y de Cloud Storage.

  • Roles predefinidos de App Engine, que proporcionan acceso granular a App Engine. Cada servicio de tu proyecto deGoogle Cloud proporciona sus propios roles predefinidos. Por ejemplo, una cuenta que solo tenga el rol App Engine Deployer puede desplegar aplicaciones de App Engine, pero no puede ver ni crear objetos en Cloud Storage. Esta cuenta también necesitaría un rol predefinido de Cloud Storage específico para crear o ver objetos en Cloud Storage.

  • Roles personalizados: proporcionan acceso granular según una lista de permisos que especifiques.

Puedes usar roles básicos cuando trabajes en proyectos más pequeños que tengan necesidades menos complejas. Para tener un control de acceso más preciso, usa roles predefinidos.

Roles básicos

Los roles básicos se aplican a todos los servicios y recursos de un proyecto. Por ejemplo, una cuenta con el rol Editor puede cambiar la configuración de App Engine y de Cloud Storage.

Rol Permisos de la consolaGoogle Cloud Permisos de herramientas
Owner Se necesita para crear aplicaciones de App Engine. Todos los privilegios de lector y editor, además de la capacidad de ver el código fuente implementado, invitar a usuarios, cambiar los roles de usuario y eliminar una aplicación. Tiene privilegios de administrador en todos los recursos del proyecto. Se necesita para crear aplicaciones de App Engine. También puede implementar código de aplicación y actualizar todas las configuraciones.
Editor Ver la información de la aplicación y editar su configuración. Tiene privilegios de administrador en todos los recursos del proyecto. Desplegar código de aplicación y actualizar índices, colas y crons.
Viewer Ver la información de la aplicación. Tiene privilegios de administrador en todos los recursos del proyecto. Registros de solicitudes

Roles predefinidos de 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

Los roles predefinidos de App Engine te ofrecen opciones más específicas para el control de acceso.

Estos roles solo proporcionan acceso a App Engine. Si tu proyecto incluye otros servicios, como Cloud Storage o Cloud SQL, tendrás que asignar roles adicionales para habilitar el acceso a los demás servicios.

Comparación de los roles predefinidos de App Engine

En la siguiente tabla se ofrece una comparación completa de las funciones de cada rol predefinido de App Engine.

Competencia Administrador de App Engine Administrador de servicios de App Engine implementador de App Engine Lector de App Engine Visor de códigos de App Engine
Mostrar todos los servicios, versiones e instancias
Ver todos los ajustes de aplicaciones, servicios, versiones e instancias
Ver métricas de tiempo de ejecución, como el uso de recursos, la información de carga y la información de errores
Ver el código fuente de la aplicación No No No No
Desplegar una nueva versión de una aplicación Sí, si también le asignas el rol Usuario de cuenta de servicio No Sí, si también le asignas el rol Usuario de cuenta de servicio No No
Dividir o migrar el tráfico No*** No No
Iniciar y detener una versión No No No
Eliminar una versión No No
Eliminar un servicio completo No No No
Usar SSH para conectarse a una instancia de VM en el entorno flexible No No No No
Detener una instancia No No No No
Inhabilitar y volver a habilitar la aplicación de App Engine No No No No
Gestores de acceso que tienen una restricción login:admin (solo en los tiempos de ejecución de primera generación) No No No No
Actualizar reglas de envío No No No No
Actualizar la configuración de DoS No No No No
Actualizar programaciones cron No No No No No
Actualizar la caducidad de las cookies predeterminada No No No No
Actualizar referentes No No No No
Actualizar remitentes autorizados de la API Email No No No No

Para obtener información sobre los permisos de gestión de identidades y accesos específicos que concede cada rol, consulta la sección Roles de la API Admin.

En el caso de una cuenta que solo se encargue de desplegar nuevas versiones de una aplicación, te recomendamos que le asignes los siguientes roles:

  • Rol de implementador de App Engine (roles/appengine.deployer)
  • Rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser)

    El rol Usuario de cuenta de servicio permite a la cuenta suplantar a la cuenta de servicio predeterminada de App Engine durante el proceso de implementación.

  • Si la cuenta usa comandos gcloud para implementar, añade también estos roles:

    • Administrador de objetos de Storage (roles/storage.objectAdmin)
    • Editor de versiones de Cloud (roles/cloudbuild.builds.editor)

Para obtener más información sobre cómo conceder los permisos necesarios, consulta el artículo Crear una cuenta de usuario.

Separación de las tareas de despliegue y enrutamiento del tráfico

Muchas organizaciones prefieren separar la tarea de desplegar una versión de una aplicación de la tarea de aumentar el tráfico a la versión recién creada, así como que estas tareas las realicen diferentes funciones. Los roles de desplegador de App Engine y administrador de servicios de App Engine proporcionan esta separación:

  • Roles de implementador de App Engine y usuario de cuenta de servicio: las cuentas solo pueden implementar versiones nuevas y eliminar versiones antiguas que no estén sirviendo tráfico. La cuenta con estos roles no podrá configurar el tráfico a ninguna versión ni cambiar los ajustes a nivel de aplicación, como las reglas de envío o el dominio de autenticación.
  • Rol de administrador de servicios de App Engine: las cuentas no pueden desplegar una nueva versión de una aplicación ni cambiar la configuración a nivel de aplicación. Sin embargo, esas cuentas tienen privilegios para cambiar las propiedades de los servicios y las versiones, incluido el cambio de las versiones que pueden servir tráfico. El rol Administrador de servicio de App Engine es ideal para un departamento de Operaciones o TI que se encarga de aumentar el tráfico a las versiones recién desplegadas.

Limitaciones de los roles predefinidos

Ninguno de los roles predefinidos de App Engine concede acceso a lo siguiente:

  • Ver y descargar registros de aplicaciones.
  • Consulta los gráficos de Monitoring en la Google Cloud consola.
  • Habilitar e inhabilitar la facturación.
  • Ejecuta análisis de seguridad en Cloud Security Scanner.
  • Acceder a la configuración o los datos almacenados en Datastore, Task Queues, Cloud Search o cualquier otro producto de almacenamiento de Cloud Platform.