Python 2.7 has reached end of supportand will bedeprecatedon January 31, 2026. After deprecation, you won't be able to deploy Python 2.7applications, even if your organization previously used an organization policy tore-enable deployments of legacy runtimes. Your existing Python2.7 applications will continue to run and receive traffic after theirdeprecation date. We recommend thatyoumigrate to the latest supported version of Python.

Roles that Grant Access to App Engine

Roles determine which services and actions are available to a user account orservice account. The following types of roles grant access to App Engine:

  • Basic roles which apply to all services and resources in aproject, including but not limited App Engine. For example, an accountwith the Editor role can change App Engine settings as well as CloudStorage settings.

  • Predefined App Engine roles, which providegranular access to App Engine. Each service in yourGoogle Cloud project provides its own predefined roles. For example, anaccount that only has the App Engine Deployer rolecan deploy App Engine apps but cannot view or create objectsin Cloud Storage. Such an account would also need a specificCloud Storagepredefined role to create or view objects in Cloud Storage.

  • Custom roles,which provide granular access according to a list of permissions you specify.

You can use basic roles when you are working on smaller projects that haveless complex needs. For more fine-tuned access controls, use predefined roles.

Basic roles

Basic roles apply to all services and resources in a project. For example, anaccount in the Editor role can change App Engine settings as well asCloud Storage settings.

RoleGoogle Cloud console permissionsTools permissions
OwnerRequired to create App Engine applications. All viewer and editor privileges, plus the ability to view deployed source code, invite users, change user roles, and delete an application. Hasadmin privileges to all resources in the project.Required to create App Engine applications. Can also deploy application code and update all configurations.
EditorView application information and edit application settings. Hasadmin privileges to all resources in the project.Deploy application code, update indexes/queues/crons.
ViewerView application information. Hasadmin privileges to all resources in the project.Request logs

Predefined App Engine roles

RolePermissions

App Engine Admin

(roles/appengine.appAdmin)

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

To deploy new versions, a principal must have theService Account User(roles/iam.serviceAccountUser) role on the assigned App Engineservice 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

App Engine Creator

(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

App Engine Viewer

(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

App Engine Code Viewer

(roles/appengine.codeViewer)

Read-only access to all application configuration, settings, and deployedsource 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

App Engine Managed VM Debug Access

(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

App Engine Deployer

(roles/appengine.deployer)

Read-only access to all application configuration and settings.

To deploy new versions, you must also have theService Account User(roles/iam.serviceAccountUser) role on the assigned App Engineservice account, and the CloudBuild 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

App Engine Memcache Data Admin

(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

App Engine Service Admin

(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

App Engine Standard Environment Service Agent

(roles/appengine.serviceAgent)

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

Warning: Do not grant service agent roles to any principals exceptservice agents.

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

compute.networks.get

compute.regionOperations.get

compute.subnetworks.get

compute.subnetworks.use

compute.zoneOperations.get

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

  • serviceusage.consumerpolicy.analyze
  • serviceusage.consumerpolicy.get
  • serviceusage.consumerpolicy.update

serviceusage.effectivepolicy.get

serviceusage.groups.*

  • serviceusage.groups.list
  • serviceusage.groups.listExpandedMembers
  • serviceusage.groups.listMembers

serviceusage.services.enable

serviceusage.services.get

serviceusage.values.test

storage.buckets.create

storage.buckets.get

The predefined roles for App Engine provide you with finer grainedoptions for access control.

These roles only provide access to App Engine. If your project includesother services, such as Cloud Storage or Cloud SQL, you will need to assignadditional roles to enable access to the other services.

Comparison of App Engine predefined roles

The following table provides a complete comparison of the capabilities of eachpredefined App Engine role.

CapabilityApp Engine AdminApp Engine Service AdminApp Engine DeployerApp Engine ViewerApp Engine Code Viewer
List all services, versions and instancesYesYesYesYesYes
View all application, service, version, and instance settingsYesYesYesYesYes
View runtime metrics such as resource usage, load information, and error informationYesYesYesYesYes
View app source codeNoNoNoNoYes
Deploy a new version of an appYes, if you also grant the Service Account User roleNoYes, if you also grant the Service Account User roleNoNo
Split or migrate trafficYesYesNo***NoNo
Start and stop a versionYesYesNoNoNo
Delete a versionYesYesYesNoNo
Delete an entire serviceYesYesNoNoNo
Use SSH to connect to a VM instance in the flexible environmentYesNoNoNoNo
Shut down an instanceYesNoNoNoNo
Disable and re-enable the App Engine applicationYesNoNoNoNo
Access handlers that have a login:admin restriction (first generation runtimes only)YesNoNoNoNo
Update dispatch rulesYesNoNoNoNo
Update DoS settingsYesNoNoNoNo
Update cron schedulesNoNoNoNoNo
Update default cookie expirationYesNoNoNoNo
Update referrersYesNoNoNoNo
Update Email API Authorized SendersYesNoNoNoNo
Note: The predefined roles are enforced in theGoogle Cloud console, theAdmin API, and other tooling that requires access, including thedeployment commands.

For details about the specific IAM permissions that are granted by each role, see theRoles section of the Admin API.

Recommended role for application deployment

For an account that is responsibleonly for deploying new versions of an app,we recommend that you grant the following roles:

  • App Engine Deployer role (roles/appengine.deployer)
  • Service Account User role (roles/iam.serviceAccountUser)

    TheService Account User roleenables the account to impersonate the default App Engine service accountduring the deployment process.

  • If the account usesgcloud commands to deploy, add these roles as well:

    • Storage Object Admin (roles/storage.objectAdmin)
    • Cloud Build Editor (roles/cloudbuild.builds.editor)
Note: If you have granted an account the App Engine Admin role, you don't needto grant it the App Engine Deployer role, because the Admin role holds the samerelevant permissions as the Deployer role, along with additional administrativeprivileges. We recommend using the App Engine Deployer role for accounts thatare responsible only for deploying new versions.

For details about how to grant the required permissions, seeCreating a user account.

Separation of deployment and traffic routing duties

Many organizations prefer to separate the task of deploying an applicationversion from the task of ramping up traffic to the newly created version, and tohave these tasks done by different job functions. The App Engine Deployer andApp Engine Service Admin roles provide this separation:

  • App Engine Deployer plus Service Account User roles - Accounts are limited todeploying new versions and deleting old versions that are not serving traffic.The account with these roles won't be able to configure traffic to any versionnor change application-level settings such as dispatch rules or authenticationdomain.
  • App Engine Service Admin role - Accounts cannot deploy a new version ofan app nor change application-level settings. However, those accounts haveprivileges to change the properties of existing services and versions,including changing which versions can serve traffic. The App Engine ServiceAdmin role is ideal for an Operations/IT department that handles ramping uptraffic to newly deployed versions.

Note: Accounts with the App Engine Deployer role can overwrite a version that is serving traffic by deploying a new version with the same name (using the--version flag).

Limitations of the predefined roles

None of the App Engine predefined roles grant access to the following:

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-15 UTC.