注: 今後数か月にわたり、App Engine ドキュメント サイトの再編成を行い、コンテンツを見つけやすくなり、他の Google Cloud プロダクトと統一されます。内容は変わりませんが、ページ間のナビゲーションは残りの Cloud プロダクトと統一されます。

PHP 8.1 が一般提供になりました。

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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

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

  • App Engine の事前定義ロール。App Engine へのきめ細かなアクセスを設定できます。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 の事前定義された役割

ロール 権限

roles/appengine.appAdmin)。

すべてのアプリケーションの構成と設定に対する読み取り / 書き込み / 変更アクセス権。

新しいバージョンをデプロイするには、プリンシパルが App Engine デフォルト サービス アカウントに対するサービス アカウント ユーザーroles/iam.serviceAccountUser)ロール、プロジェクトに対する Cloud Build 編集者(roles/cloudbuild.builds.editor)ロールと Cloud ストレージ オブジェクト管理者(roles/storage.objectAdmin)ロールを持っている必要があります。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

appengine.applications.get

appengine.applications.update

appengine.instances.*

  • appengine.instances.delete
  • 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)。

プロジェクトの App Engine リソースを作成できます。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

1 つのオーナー権限を含む

appengine.applications.create

resourcemanager.projects.get

resourcemanager.projects.list

roles/appengine.appViewer)。

すべてのアプリケーションの構成と設定への読み取り専用アクセス権。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

appengine.applications.get

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)。

すべてのアプリケーションの構成と設定、デプロイされたソースコードに対する読み取り専用権限。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

1 つのオーナー権限を含む

appengine.applications.get

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.deployer)。

すべてのアプリケーションの構成と設定に対する読み取り専用アクセス権。

新しいバージョンをデプロイするには、App Engine デフォルト サービス アカウントに対するサービス アカウント ユーザーroles/iam.serviceAccountUser)ロール、プロジェクトに対する Cloud Build 編集者(roles/cloudbuild.builds.editor)ロールと Cloud Storage オブジェクト管理者(roles/storage.objectAdmin)ロールも必要です。

既存のバージョンに対しては、トラフィックを受信していないバージョンを削除する以外の変更は加えられません。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

appengine.applications.get

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

resourcemanager.projects.get

resourcemanager.projects.list

roles/appengine.memcacheDataAdmin)。

App Engine Memcache のアイテムを取得、設定、削除、フラッシュできます。

appengine.applications.get

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

resourcemanager.projects.get

resourcemanager.projects.list

roles/appengine.serviceAdmin)。

すべてのアプリケーションの構成と設定に対する読み取り専用アクセス権。

モジュール レベルおよびバージョン レベルの設定に対する書き込み権限。新しいバージョンをデプロイすることはできません。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト

appengine.applications.get

appengine.instances.*

  • 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

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

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

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

次の表に、App Engine の事前定義された役割ごとに可能な操作の比較を示します。

可能な操作 App Engine 管理者 App Engine サービス管理者 App Engine デプロイ担当者 App Engine 閲覧者 App Engine コード閲覧者
すべてのサービス、バージョン、インスタンスの一覧表示
アプリケーション、サービス、バージョン、インスタンスのすべての設定の表示
リソース使用量、負荷情報、エラー情報などのランタイム指標の表示
アプリのソースコードの表示 × × × No
アプリの新しいバージョンのデプロイ 〇(サービス アカウント ユーザーのロールも付与する場合) × 〇(サービス アカウント ユーザーのロールも付与する場合) × ×
トラフィックの分割または移行 ×*** × ×
バージョンの開始と停止 はい いいえ × ×
バージョンの削除 はい いいえ ×
サービス全体の削除 はい いいえ × ×
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 コマンドを使用してデプロイする場合は、次のロールも追加します。

    • ストレージ オブジェクト管理者(roles/storage.objectAdmin
    • Cloud Build 編集者(roles/cloudbuild.builds.editor

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

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

多くの組織では、アプリケーションのバージョンをデプロイするタスクと新規作成したバージョンへのトラフィックを増やすタスクを分離し、それぞれのタスクを別々の職務として実施しています。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 ストレージ プロダクトに保存した構成やデータへのアクセス