App Engine へのアクセスを許可するロール

ロールにより、ユーザー アカウントやサービス アカウントに使用できるサービスとアクションが決まります。App Engine へのアクセスを付与するのは、次のタイプのロールです。

  • 基本ロール。App Engine など(これらに限定されません)、プロジェクト内のすべてのサービスとリソースに適用されます。たとえば、編集者のロールを持つアカウントは、App Engine 設定と Cloud Storage 設定を変更できます。

  • App Engine の事前定義ロール。App Engine へのきめ細かなアクセスを設定できます。Google Cloud プロジェクト内の各サービスには、独自の事前定義ロールがあります。たとえば、App Engine デプロイ担当者のロールのみを持つアカウントは、App Engine アプリをデプロイできますが、Cloud Storage でオブジェクトの表示や作成を行うことはできません。このようなアカウントで Cloud Storage でオブジェクトの作成や表示を行うには、Cloud Storage の特定の事前定義ロールも必要です。

  • カスタムロール。指定した権限のリストに従ってきめ細かなアクセス権を提供します。

複雑なニーズが少ない小規模なプロジェクトでは、基本ロールを使用できます。より詳細なアクセス制御を行うには、事前定義ロールを使用します。

基本ロール

基本ロールは、プロジェクト内のすべてのサービスとリソースに適用されます。たとえば、編集者のロールにあるアカウントは、App Engine 設定と Cloud Storage 設定を変更できます。

ロール Google Cloud コンソールの権限 ツールの権限
Owner App Engine アプリケーションの作成に必須。すべての閲覧者権限と編集者権限に加え、デプロイされたソースコードの表示、ユーザーの招待、ユーザーロールの変更、アプリケーションの削除が可能。 App Engine アプリケーションの作成に必須。アプリケーション コードのデプロイとすべての構成の更新も可能。
Editor アプリケーション情報の表示、アプリケーション設定の編集。 アプリケーション コードのデプロイ、インデックス / キュー / cron の更新。
Viewer アプリケーション情報の表示。 ログのリクエスト

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

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

App Engine の事前定義ロールを使用すると、アクセス制御をより細かく設定できます。

これらのロールは、App Engine へのアクセス権のみを付与します。プロジェクトに Cloud Storage や Cloud SQL などの他のサービスが含まれる場合、それらのサービスへのアクセスを有効にするには、追加のロールを割り当てる必要があります。

App Engine の事前定義ロールの比較

次の表に、App Engine の事前定義ロールごとに可能な操作の比較を示します。

可能な操作 App Engine 管理者 App Engine サービス管理者 App Engine デプロイ担当者 App Engine 閲覧者 App Engine コード閲覧者
すべてのサービス、バージョン、インスタンスの一覧表示
アプリケーション、サービス、バージョン、インスタンスのすべての設定の表示
リソース使用量、負荷情報、エラー情報などのランタイム指標の表示
アプリのソースコードの表示 × いいえ いいえ いいえ
アプリの新しいバージョンのデプロイ ○(サービス アカウント ユーザーのロールも付与する場合) × ○(サービス アカウント ユーザーのロールも付与する場合) × ×
トラフィックの分割または移行 ×*** × ×
バージョンの開始と停止 いいえ いいえ ×
バージョンの削除 いいえ ×
サービス全体の削除 いいえ いいえ ×
SSH を使用したフレキシブル環境の VM インスタンスへの接続 いいえ いいえ いいえ ×
インスタンスのシャットダウン いいえ いいえ いいえ ×
App Engine アプリケーションの無効化と再有効化 いいえ いいえ いいえ ×
login:admin 制限のあるハンドラへのアクセス(第 1 世代ランタイムのみ) いいえ いいえ いいえ ×
ディスパッチ ルールの更新 いいえ いいえ いいえ ×
DoS 設定の更新 いいえ いいえ いいえ ×
cron スケジュールの更新 × いいえ いいえ いいえ ×
デフォルトの Cookie の有効期限の更新 いいえ いいえ いいえ ×
リファラーの更新 いいえ いいえ いいえ ×
Email API の承認済み送信者の更新 いいえ いいえ いいえ ×

各ロールで付与される特定の IAM 権限について詳しくは、Admin API のロールのセクションをご覧ください。

アプリの新しいバージョンのデプロイのみを担うアカウントには、次のロールを付与することをおすすめします。

  • App Engine デプロイ担当者のロール(roles/appengine.deployer
  • サービス アカウント ユーザー ロール(roles/iam.serviceAccountUser

    サービス アカウント ユーザー ロールを使用すると、そのアカウントは、デプロイ プロセスの間、デフォルトの App Engine サービス アカウントの権限を借用できます。

  • アカウントで gcloud コマンドを使用してデプロイする場合は、次のロールも追加します。

    • Storage オブジェクト管理者(roles/storage.objectAdmin
    • Cloud Build 編集者(roles/cloudbuild.builds.editor
  • Datastore に保存されているデータにアクセスしたり、インデックスを更新したりするには、Cloud Datastore インデックス管理者ロール(roles/datastore.indexAdmin)を有効にします。

必要な権限を付与する方法の詳細については、ユーザー アカウントを作成するをご覧ください。

デプロイとトラフィック ルーティングの職掌分散

多くの組織では、アプリケーションのバージョンをデプロイするタスクと新規作成したバージョンへのトラフィックを増やすタスクを分離し、それぞれのタスクを別々の職務として実施しています。App Engine デプロイ担当者と App Engine サービス管理者のロールは、この分離を次のように実現しています。

  • App Engine デプロイ担当者とサービス アカウント ユーザーのロール - アカウントで行えることは、新しいバージョンのデプロイと、トラフィックを処理していない古いバージョンの削除に制限されています。これらのロールを持つアカウントでは、任意のバージョンへのトラフィックを構成することも、アプリケーション レベルの設定(ディスパッチ ルールや認証ドメインなど)を変更することもできません。
  • App Engine サービス管理者のロール - アカウントでは、アプリの新しいバージョンをデプロイすることも、アプリケーション レベルの設定を変更することもできません。ただし、このアカウントには、トラフィックを処理できるバージョンの変更など、既存のサービスやバージョンのプロパティを変更する権限があります。App Engine サービス管理者のロールは、新しくデプロイしたバージョンへのトラフィックを増やす作業を担当する運用部門や IT 部門に適しています。

事前定義ロールの制限事項

いずれの App Engine の事前定義ロールによっても、以下のことを行うためのアクセス権を付与することはできません。

  • アプリケーション ログの表示とダウンロード
  • Google Cloud コンソールでのモニタリング グラフの表示
  • 課金の有効化と無効化
  • Cloud Security Scanner でのセキュリティ スキャンの実行
  • Datastore、Task Queues、Cloud Search などの Cloud Platform ストレージ プロダクトに保存した構成やデータへのアクセス