アクセス制御

アクセス制御は、役割を使って GCP プロジェクト レベルで設定できます。GCP のプロジェクト メンバーやサービス アカウントに役割を割り当てることで、Google Cloud Platform プロジェクトとそのリソースへのアクセスレベルを決定します。

プロジェクトが小規模でニーズもあまり複雑でなければ、基本の役割を使用できます。アクセス制御をより細かく調整したい場合は、Identity and Access Management(IAM)の役割を使用します。この役割には、App Engine の事前定義された役割が含まれています。IAM の詳細については、IAM ドキュメントをご覧ください。

役割を割り当てる方法については、プロジェクト アクセス権の付与をご覧ください。

事前定義された IAM 役割に付与される権限に関する、メソッド呼び出しレベルまでの詳細については、Admin API ドキュメントの役割をご覧ください。

基本の役割

App Engine アプリケーションでは、GCP プロジェクト メンバーの役割によって、アプリケーションのデプロイと管理に使用されるコマンドライン ツールで許可される操作も制御されます。

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

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

App Engine の事前定義された役割を使用すると、アクセス制御をより細かく設定できます。次の表に、各役割とそのターゲット ユーザーを示します。それぞれの役割で可能な操作を確認するには、比較表をご覧ください。

役割 可能な操作 ターゲット ユーザー
App Engine 管理者 すべてのアプリケーションの構成と設定に対する読み取り / 書き込み / 変更アクセス権。
  • アプリケーション オーナー / 管理者
  • オンコール エンジニア
  • システム管理者
App Engine サービス管理者
  • すべてのアプリケーションの構成と設定に対する読み取り専用アクセス権。
  • トラフィック構成を含むサービスレベルおよびバージョン レベルの設定に対する書き込みアクセス権。
  • アプリのバージョンはデプロイできません。詳細については、下記の職掌分散をご覧ください。
  • リリース エンジニア
  • DevOps
  • オンコール エンジニア
  • システム管理者
App Engine デプロイ担当者
  • すべてのアプリケーションの構成と設定に対する読み取り専用アクセス権。
  • 新しいバージョンをデプロイして作成するためだけの書き込みアクセス権。
  • トラフィックを処理していない古いバージョンの削除。
  • 既存のバージョンやトラフィック構成は変更できません。

必要な役割の詳細については、下記のデプロイに関するセクションをご覧ください。

  • デプロイ アカウント
  • リリース エンジニア
App Engine 閲覧者 すべてのアプリケーションの構成と設定に対する読み取り専用アクセス権。
  • アプリケーションを表示する必要はあるが、変更は行わないユーザー
  • App Engine の構成がポリシーに準拠しているかを確認する監査担当者
App Engine コード閲覧者 すべてのアプリケーションの構成、設定、デプロイされたソースコードに対する読み取り専用アクセス権。
  • アプリケーションとそのソースコードを表示する必要はあるが、変更は行わないユーザー
  • 本番環境での問題を診断する必要がある DevOps ユーザー

事前定義された役割の比較表

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

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

各役割で付与される特定の IAM 権限については、Admin API の役割をご覧ください。

事前定義された役割を使用したデプロイ

App Engine デプロイ担当者の役割は、アプリの新しいバージョンのデプロイのみを担当するユーザー アカウントに推奨される役割です。代わりに、さまざまなバージョンのデプロイなど、他の管理者権限も含まれている App Engine 管理者の役割を使用することもできます。

どちらの役割でも、Admin API を使用してアプリをデプロイするために十分な権限がユーザー アカウントに付与されます。gcloud コマンドや他の App Engine ツールを使用する権限を付与するには、ユーザー アカウントにストレージ管理者の役割も付与する必要があります。

必要な権限を付与する方法の詳細については、IAM 役割を使用したデプロイをご覧ください。

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

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

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

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

事前定義された役割では付与されない権限

上記の事前定義された役割では、以下の権限は付与されません。

  • App Engine アプリケーションの作成
  • アプリケーション ログの表示とダウンロード
  • GCP Console でのモニタリング グラフの表示
  • 課金の有効化と無効化
  • App Engine の 1 日の使用量上限(以前の用語では予算)の設定と使用金額の表示
  • Cloud Security Scanner でのセキュリティ スキャンの実行
  • Datastore、Task Queues、Memcache、Cloud Search などの Cloud Platform ストレージ プロダクトに保存した構成やデータへのアクセス

App Engine のサービス アカウント

App Engine アプリケーションを作成すると、App Engine のデフォルトのサービス アカウントが作成され、App Engine サービスの ID として使用されます。App Engine のデフォルトのサービス アカウントは GCP プロジェクトに関連付けられていて、App Engine で実行中のアプリに代わってタスクを実行します。

デフォルトでは、App Engine のデフォルトのサービス アカウントにはプロジェクトの編集者の役割が付与されています。つまり、GCP プロジェクトに変更をデプロイするための十分な権限を持つすべてのユーザー アカウントは、プロジェクト内のすべてのリソースに対する読み取り / 書き込みアクセス権を持つコードを実行できます。

サービス アカウントの権限の変更

サービス アカウントの権限は、GCP Console で変更できます。たとえば、App Engine のデフォルトのサービス アカウントを編集者の役割から App Engine アプリケーションのアクセスニーズに最も適する役割に変更することで、その権限をダウングレードできます。

サービス アカウントの権限を変更するには:

  1. GCP Console を開きます。

    権限ページに移動

  2. [メンバー] リストで、App Engine のデフォルトのサービス アカウントの ID を見つけます。

    App Engine のデフォルトのサービス アカウントは、次のメンバー ID を使用しています。
    YOUR_PROJECT_ID@appspot.gserviceaccount.com

  3. プルダウン メニューを使用して、サービス アカウントに割り当てられている役割を変更できます。

サービス アカウントの使用

  • App Engine アプリのデフォルトのサービス アカウントを含め、サービス アカウントの名前を変更したりキーを作成したりするには、GCP Console の [サービス アカウント] ページを使用してサービス アカウントを表示、編集します。

    [サービス アカウント] ページに移動

  • サービス アカウントを使用して Cloud SDK コマンド(Cloud SDK 開発ツールを含む)を実行するには、まず Google Cloud Platform プロジェクトで Google App Engine Admin API を有効にする必要があります。GCP プロジェクトの API およびサービスの管理は、すべて GCP Console の API ライブラリを使用して行います。

    [API ライブラリ] ページに移動

削除されたデフォルトのサービス アカウントの復元

App Engine のデフォルトのサービス アカウントを削除すると、App Engine アプリケーションが破損して、Cloud Datastore などの他の GCP サービスにアクセスできなくなる可能性があります。

App Engine から削除されたデフォルトのサービス アカウントは、以下の gcloud beta app repair コマンドで復元できます。

# Set your gcloud project
gcloud config set project <project-id>

# Restore your default service account
gcloud beta app repair
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java 8 の App Engine スタンダード環境