Python 2 は、コミュニティによるサポートを終了しました。Python 2 アプリを Python 3 に移行することをおすすめします。

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 設定を変更できます。

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

App Engine の事前定義された役割

ロール 役職 説明 権限 最下位のリソース
roles/appengine.appAdmin App Engine 管理者

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

新しいバージョンをデプロイするには、サービス アカウント ユーザーroles/iam.serviceAccountUser)のロールも付与する必要があります。

gcloud ツールを使用してデプロイするには、ストレージ管理者(roles/compute.storageAdmin)のロールと Cloud Build 編集者(roles/cloudbuild.builds.editor)のロールを追加する必要があります。

  • appengine.applications.get
  • appengine.applications.update
  • appengine.instances.*
  • appengine.operations.*
  • appengine.runtimes.*
  • appengine.services.*
  • 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 作成者 プロジェクトの App Engine リソースを作成できます。
  • appengine.applications.create
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/appengine.appViewer App Engine 閲覧者 すべてのアプリケーション構成への読み取り専用アクセス権。
  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • appengine.services.get
  • appengine.services.list
  • appengine.versions.get
  • appengine.versions.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/appengine.codeViewer App Engine コード閲覧者 すべてのアプリケーションの構成と設定、デプロイされたソースコードに対する読み取り専用権限。
  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • 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)のロールも付与する必要があります。

gcloud ツールを使用してデプロイするには、ストレージ管理者(roles/compute.storageAdmin)のロールと Cloud Build 編集者(roles/cloudbuild.builds.editor)のロールを追加する必要があります。

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

  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • 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.serviceAdmin App Engine サービス管理者

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

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

  • appengine.applications.get
  • appengine.instances.*
  • appengine.operations.*
  • appengine.services.*
  • 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 コード閲覧者
すべてのサービス、バージョン、インスタンスの一覧表示
アプリケーション、サービス、バージョン、インスタンスのすべての設定の表示
リソース使用量、負荷情報、エラー情報などのランタイム指標の表示
アプリのソースコードの表示 × × × ×
アプリの新しいバージョンのデプロイ × 〇(サービス アカウント ユーザーのロールも付与する場合) × ×
トラフィックの分割または移行 × × ×
バージョンの開始と停止 × × ×
バージョンの削除 × ×
サービス全体の削除 × × ×
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/compute.storageAdmin
    • Cloud Build 編集者(roles/cloudbuild.builds.editor

App Engine 管理者のロールはバージョンもデプロイできますが、追加の管理者権限も含まれています。バージョンをデプロイするにはサービス アカウント ユーザーのロールも必要です。また、gcloud コマンドを使用してデプロイするには、ストレージ管理者と Cloud Build 編集者のロールも必要です。

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

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

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

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

  • App Engine サービス管理者のロール - アカウントでは、アプリの新しいバージョンをデプロイすること、アプリケーションレベルの設定を変更することはできません。ただし、このアカウントには、トラフィックを処理できるバージョンの変更など、既存のサービスやバージョンのプロパティを変更する権限があります。App Engine サービス管理者の役割は、新しくデプロイしたバージョンへのトラフィックを増やす作業を担当する運用部門や IT 部門に適しています。

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

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

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