ユーザー管理のサービス アカウントの使用

App Engine アプリが他の Google Cloudサービスにアクセスしてタスクを実行するには、サービス アカウントが必要です。デフォルトでは、App Engine のデフォルトのサービス アカウントが App Engine アプリの ID として使用されます。別のユーザー管理のサービス アカウントを指定し、特定バージョンの App Engine アプリで使用する ID とすることもできます。これにより、各バージョンで実行する特定のタスクに基づいて、バージョンごとに異なる権限を付与できるので、不要な権限の付与を防止できます。

このガイドでは、新しいバージョンをデプロイするときに、それまでとは異なるユーザー管理のサービス アカウントを指定する方法について説明します。特定のバージョンのアプリをデプロイする際に別のサービス アカウントを作成する必要がない場合は、サービス アカウントを指定しないことによって、デフォルトのサービス アカウントを引き続き使用できます。

ユーザー管理のサービス アカウントを作成する

ユーザー管理のサービス アカウントを作成するには、こちらの手順をご覧ください。サービス アカウントに付与する Identity and Access Management(IAM)ロールを定義する場合は、App Engine へのアクセスを許可するロールをご覧ください。

サービス アカウントを作成する前に IAM のコンセプトを確認する必要がある場合は、IAM のコンセプトの概要サービス アカウントのガイドをご覧ください。

ユーザー管理のサービス アカウントを作成したら、次のいずれかの方法を使用して、アプリケーションのアプリレベルのデフォルト サービス アカウントを更新できます。

gcloud

gcloud app update コマンドを実行します。

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

次のように置き換えます。

  • SERVICE_ACCOUNT_NAME は作成したサービス アカウントの名前に置き換えます。
  • PROJECT_ID はサービス アカウントを割り当てる Google Cloud プロジェクトの ID に置き換えます。

この更新後にデプロイする各バージョンでは、バージョン固有のサービス アカウントを明示的に割り当てない限り、新しいアプリレベルのデフォルト サービス アカウントが使用されます。

コンソール

  1. コンソールで App Engine の [アプリケーション設定] タブに移動し、[アプリケーション設定を編集] をクリックします。

    [アプリケーション設定] に移動

  2. [サービス アカウントを選択] からアプリレベルのデフォルトのサービス アカウントを選択し、[保存] をクリックします。

    [アプリケーション設定] タブにリダイレクトされます。このタブには、更新したアプリレベルのデフォルト サービス アカウントのメールアドレスが表示されます。例: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    この更新後にデプロイする各バージョンでは、バージョン固有のサービス アカウントを明示的に割り当てない限り、新しいアプリレベルのデフォルト サービス アカウントが使用されます。

アプリのデプロイ時にサービス アカウントを指定する

gcloud

gcloud app deploy コマンドを実行して、サービス アカウントを指定します。

gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

appengine-web.xml

appengine-web.xml ファイルで、<service-account> 要素を追加してサービス アカウントを指定します。

<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>

次のステップ

サービス アカウントを操作するためのベスト プラクティスを実践する。