Rôles accordant l'accès à App Engine

Les rôles déterminent les services et les actions disponibles pour un compte utilisateur ou un compte de service. Les types de rôles suivants permettent d'accéder à App Engine :

  • Les rôles de base s'appliquent à l'ensemble des services et des ressources d'un projet, y compris, mais sans s'y limiter, à App Engine. Par exemple, un compte doté du rôle d'éditeur peut modifier les paramètres d'App Engine et de Cloud Storage.

  • Les rôles prédéfinis App Engine fournissent un accès précis à App Engine. Chaque service de votre projet Google Cloud dispose de ses propres rôles prédéfinis. Par exemple, un compte qui n'est doté que du rôle "Déployeur App Engine" peut déployer des applications App Engine, mais ne peut pas afficher ni créer d'objets dans Cloud Storage. Ce compte doit également disposer d'un rôle prédéfini Cloud Storage spécifique pour créer ou afficher des objets dans Cloud Storage.

  • Les rôles personnalisés fournissent un accès précis en fonction d'une liste d'autorisations que vous spécifiez.

Vous pouvez utiliser des rôles de base lorsque vous travaillez sur des projets plus petits aux besoins moins complexes. Afin de mieux contrôler les accès, utilisez des rôles prédéfinis.

Rôles de base

Les rôles de base s'appliquent à l'ensemble des services et des ressources d'un projet. Par exemple, un compte doté du rôle d'éditeur peut modifier les paramètres d'App Engine et de Cloud Storage.

Rôle Autorisations pour la console Google Cloud Autorisations pour les outils
Owner Obligatoire pour créer des applications App Engine. Tous les droits du lecteur et de l'éditeur, ainsi que la possibilité d'afficher le code source déployé, d'inviter des utilisateurs, de modifier les rôles des utilisateurs et de supprimer une application. Obligatoire pour créer des applications App Engine. Permet également de déployer le code d'application et de mettre à jour toutes les configurations.
Editor Afficher les informations relatives à l'application et modifier ses paramètres. Déployer le code de l'application, mettre à jour les index/files d'attente/tâches Cron.
Viewer Afficher les informations relatives à l'application. Consulter les journaux des requêtes.

Rôles App Engine prédéfinis

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

Les rôles prédéfinis pour App Engine vous offrent des options de contrôle des accès plus précises.

Ces rôles ne permettent d'accéder qu'à App Engine. Si votre projet comprend d'autres services, tels que Cloud Storage ou Cloud SQL, vous devez attribuer des rôles supplémentaires pour autoriser l'accès aux autres services.

Comparaison des rôles App Engine prédéfinis

Le tableau suivant compare de manière exhaustive les fonctions de chaque rôle App Engine prédéfini.

Capacité Administrateur App Engine Administrateur de services App Engine Déployeur App Engine Lecteur App Engine Lecteur de codes App Engine
Répertorier l'ensemble des services, versions et instances Oui Oui Oui Oui Oui
Afficher l'ensemble des paramètres d'application, de service, de version et d'instance Oui Oui Oui Oui Oui
Afficher les métriques de l'environnement d'exécution telles que l'utilisation des ressources, les informations de charge et les informations relatives aux erreurs Oui Oui Oui Oui Oui
Afficher le code source de l'application Non Non Non Non Oui
Déployer une nouvelle version d'application Oui, si vous attribuez également le rôle "Utilisateur du compte de service" Non Oui, si vous attribuez également le rôle "Utilisateur du compte de service" Non Non
Répartir ou migrer le trafic Oui Oui Non*** Non Non
Démarrer et arrêter une version Oui Oui Non Non Non
Supprimer une version Oui Oui Oui Non Non
Supprimer un service dans son intégralité Oui Oui Non Non Non
Se connecter via SSH à une instance de VM dans l'environnement flexible Oui Non Non Non Non
Arrêter une instance Oui Non Non Non Non
Désactiver et réactiver l'application App Engine Oui Non Non Non Non
Gestionnaires d'accès dont l'accès est limité avec login:admin (environnements d'exécution de première génération uniquement) Oui Non Non Non Non
Mettre à jour les règles de distribution Oui Non Non Non Non
Mettre à jour les paramètres DoS Oui Non Non Non Non
Mettre à jour les planifications Cron Non Non Non Non Non
Mettre à jour l'expiration des cookies par défaut Oui Non Non Non Non
Mettre à jour les URL de provenance Oui Non Non Non Non
Mettre à jour les expéditeurs autorisés de l'API Email Oui Non Non Non Non

Pour en savoir plus sur les autorisations IAM spécifiques accordées par chaque rôle, consultez la section Rôles de la documentation sur l'API Admin.

Pour un compte qui n'est responsable que du déploiement de nouvelles versions d'une application, nous vous recommandons d'attribuer les rôles suivants :

  • Rôle "Déployeur App Engine" (roles/appengine.deployer)
  • Rôle "Utilisateur du compte de service" (roles/iam.serviceAccountUser)

    Le rôle Utilisateur du compte de service permet au compte d'emprunter l'identité du compte de service App Engine par défaut lors du processus de déploiement.

  • Si le compte utilise des commandes gcloud pour le déploiement, ajoutez également les rôles suivants :

    • Administrateur des objets de l'espace de stockage (roles/storage.objectAdmin)
    • Éditeur Cloud Build (roles/cloudbuild.builds.editor)

Pour savoir comment accorder les autorisations requises, consultez Créer un compte utilisateur.

Séparer les tâches de déploiement et d'acheminement du trafic

De nombreuses entreprises préfèrent séparer la tâche liée au déploiement d'une version d'application de celle associée à l'augmentation progressive du trafic vers la nouvelle version. Chaque tâche est alors confiée à différents postes. Les rôles "Déployeur App Engine" et "Administrateur de services App Engine" assurent cette séparation :

  • Rôles "Déployeur App Engine" et "Utilisateur du compte de service" : les comptes sont limités au déploiement de nouvelles versions et à la suppression des anciennes versions qui ne diffusent pas le trafic. Le compte doté de ces rôles ne peut pas configurer le trafic sur une version ni modifier les paramètres au niveau de l'application, tels que les règles de distribution ou le domaine d'authentification.
  • Rôle "Administrateur de services App Engine" : les comptes ne peuvent pas déployer la nouvelle version d'une application ni modifier les paramètres au niveau de l'application. Toutefois, ces comptes disposent de droits leur permettant de modifier les propriétés des versions et services existants, y compris le choix des versions pouvant diffuser le trafic. Le rôle "Administrateur de services App Engine" est idéal pour un service des opérations ou un service informatique qui gère l'augmentation progressive du trafic sur des versions récemment déployées.

Limites des rôles prédéfinis

Aucun des rôles prédéfinis App Engine n'accorde l'accès aux actions suivantes :

  • Afficher et télécharger les journaux d'application
  • Afficher les graphiques Monitoring dans la console Google Cloud.
  • Activer et désactiver la facturation
  • Exécuter des analyses de sécurité dans Cloud Security Scanner
  • Accéder à la configuration ou aux données stockées dans Datastore, les files d'attente de tâches, Cloud Search ou tout autre produit de stockage Cloud Platform