サービス アカウント

このページでは、サービス アカウント、サービス アカウントの種類、サービス アカウントで使用できる IAM の役割について説明します。

始める前に

  • Cloud IAM の基本概念について理解しておきます。

サービス アカウントとは

サービス アカウントは、個々のエンドユーザーではなく、アプリケーションや仮想マシン(VM)に属している特別な Google アカウントです。アプリケーションはサービス アカウントを使用して、ユーザーの関与を必要とせずに Google のサービス API を呼び出すことができます。

たとえば、Google Compute Engine VM はサービス アカウントとして実行され、そのアカウントには必要なリソースへのアクセス許可が与えられます。その結果、サービス アカウントはサービスの ID となり、サービス アカウントのアクセス許可はサービスがアクセスできるリソースを制御します。

サービス アカウントは、アカウント固有のメールアドレスで識別されます。

サービス アカウント キー

各サービス アカウントは Google Cloud Platform(GCP)が管理するキーペアに関連付けられています。これは、GCP 内のサービス間認証に使用されます。

オプションで、外部 GCP から使用する(たとえば、アプリケーションのデフォルト認証情報で使用する)ために 1 つ以上の外部キーペアを作成することもできます。新しいキーペアを作成すると、秘密鍵(Google が保持していない)をダウンロードします。外部キーを使用して、秘密鍵のセキュリティや、キーのローテーションなどの他の管理オペレーションを行います。外部キーは、IAM API、gcloud コマンドライン ツール、Google Cloud Platform Console の [サービス アカウント] ページで管理できます。サービス アカウントごとに最大 10 個のサービス アカウント キーを作成できるので、キーのローテーションが容易になります。

サービス アカウントのタイプ

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

Cloud Platform Console を使用して新しい Cloud プロジェクトを作成し、Compute Engine API がプロジェクトで有効になっている場合、デフォルトで Compute Engine サービス アカウントが作成されます。これはメールアドレスで識別できます。

[PROJECT-NUMBER]-compute@developer.gserviceaccount.com

プロジェクトに App Engine アプリケーションが含まれている場合、デフォルトの App Engine サービス アカウントがプロジェクトにデフォルトで作成されます。これはメールアドレスで識別できます。

[PROJECT-ID]@appspot.gserviceaccount.com

IAM API、Cloud Platform Console、gcloud ツールを使用して、プロジェクトごとに最大 100 個のサービス アカウント(デフォルトの Compute Engine サービス アカウントと App Engine サービス アカウントを含む)を作成できます。これらのデフォルトのサービス アカウントと明示的に作成するサービス アカウントは、ユーザーが管理するサービス アカウントです。

Google 管理サービス アカウント

ユーザーが管理するサービス アカウントに加えて、プロジェクトの IAM ポリシーまたは Cloud Platform Console にいくつかの追加サービス アカウントが表示されることがあります。これらのサービス アカウントは Google が作成し所有しています。これらのアカウントはさまざまな Google サービスを表し、各アカウントには Google Cloud Platform プロジェクトにアクセスするための IAM の役割が自動的に付与されます。

Google API サービス アカウント

Google が管理するサービス アカウントの一例として、メールアドレスで識別できる Google API サービス アカウントがあります。

 [PROJECT_NUMBER]@cloudservices.gserviceaccount.com

このサービス アカウントは、お客様の代わりに内部 Google プロセスを実行するように設計されており、Cloud Platform Console の [サービス アカウント] セクションには一覧表示されません。デフォルトでは、アカウントは、プロジェクトに対する編集者の役割が自動的に付与され、Cloud Platform Console の [IAM] セクションに一覧表示されます。このサービス アカウントは、プロジェクトが削除された場合にのみ削除されます。Google サービスはプロジェクトにアクセスできるアカウントに依存しているため、プロジェクトでサービス アカウントの役割を削除または変更しないでください。

サービス アカウント権限

サービス アカウントとは、ID であることに加えて IAM ポリシーが添付されたリソースでもあります。これらのポリシーは、サービス アカウントを使用できるユーザーを決定します。

たとえば、ユーザー A はサービス アカウント上で編集者の役割を持ち、ユーザー B はサービス アカウント上に閲覧者の役割を持つことができます。これは他の Cloud Platform リソースに役割を付与するのと同じです。

デフォルトの Compute Engine や App Engine のサービス アカウントは、その作成時にプロジェクトの編集者の役割が付与されています。これは、ユーザーのアプリまたは VM インスタンスでのコードの実行時に必要となります。このとき、サービス アカウントは ID として扱われ、リソース(プロジェクト)の編集者の役割が付与されます。

自動機能が Cloud Storage バケットにアクセスできるようにするには、Cloud Storage バケットを読み取るための権限をサービス アカウント(自動機能が使用する)に付与します。このとき、サービス アカウントは ID として扱われ、他のリソース(Cloud Storage バケット)への権限が付与されます。

サービス アカウント アクターの役割

iam.serviceAccountActor の役割は、サービス アカウントの認証情報を取得し、サービス アカウントとしてオペレーションを実行するための権限を付与します。プロジェクト レベル(プロジェクト内のすべてのサービス アカウント)またはサービス アカウント レベルで iam.serviceAccountActor の役割を付与できます。

  • プロジェクトのユーザーに iam.serviceAccountActor の役割を付与すると、今後作成される可能性のあるサービス アカウントを含め、プロジェクト内のすべてのサービス アカウントにユーザーがアクセスできます。

  • 特定のサービス アカウントのユーザーに iam.serviceAccountActor の役割を付与すると、ユーザーはサービス アカウントにアクセスできます。

iam.serviceAccountActor の役割を compute.instanceAdmin の役割と一緒に付与すると、ユーザーはサービス アカウントを使用する Compute Engine インスタンスを作成し、管理できます。

サービス アカウントに IAM の役割を付与すると、1 つ以上の新しい仮想マシン インスタンスにサービス アカウントを割り当てることができます。これを行う方法については、サービス アカウントとして実行されるように新しいインスタンスを設定するを参照してください。

サービス アカウントとして実行するインスタンスを設定すると、サービス アカウントの認証情報を使用してインスタンス上で実行中のアプリケーションを認証できます。手順については、サービス アカウントの認証情報を使用したアプリケーションの認証を参照してください。

サービス アカウントの serviceAccountActor の役割を付与されたユーザーは、そのサービス アカウントがアクセス権限を持つすべてのリソースにアクセスできます。そのため、iam.serviceAccountActor の役割をユーザーに付与する際は十分な注意が必要です。

サービス アカウントは、ユーザーのサービスレベル セキュリティを表します。サービス アカウントを管理 / 使用できる IAM ポリシーが設定されたユーザーや、サービス アカウントの非公開外部鍵を保持するユーザーは、そのサービスのセキュリティに深くかかわります。そのため、このようなサービス アカウントでは、IAM API を使用してサービス アカウントやキー、ポリシーを監査することをおすすめします。サービス アカウントで外部鍵が必要ない場合は削除します。サービス アカウントを管理、使用する権限が不要なユーザーは、IAM ポリシーからサービス アカウントを削除します。

アクセス スコープ

アクセス スコープは、インスタンスの権限を指定するレガシーな方法です。IAM の役割が使用できるようになる前は、これがサービス アカウントに権限を付与する唯一のメカニズムでした。今では、それらは権限を付与するための主流の方法ではありませんが、インスタンスがサービス アカウントとして実行されるように設定する場合は、引き続きアクセス スコープを設定する必要があります。アクセス スコープについて詳しくは、Google Compute Engine のドキュメントを参照してください。

アプリケーションのデフォルト認証情報

アプリケーションのデフォルトの認証情報とは、Google Cloud Platform の内部および外部で、また複数の Cloud Platform プロジェクト間で仕事をする際に、サービス アカウントを簡単に使用できるようにするためのメカニズムです。最も一般的な使用例としては、ローカルマシン上のコードをテストしてから Google Cloud Platform の開発プロジェクトに移動し、その後、Cloud Platform の本番環境プロジェクトに移動するなどが考えられます。アプリケーションのデフォルト認証情報を使用すると、サービス アカウントがシームレスに動作するようになります。つまり、ローカルマシンでテストする際にはローカルに保存されたサービス アカウント キーが使用されますが、Google Compute Engine で実行する場合はプロジェクトのデフォルトの Compute Engine サービス アカウントが使用されます。詳しくは、アプリケーションのデフォルト認証情報を参照してください。

次のステップ

サービス アカウントの使用に関するベスト プラクティスについては、サービス アカウントについてを参照してください。

以下のガイドを参照して、それぞれの手順を理解します。

外出先でもリソースをモニタリング

Google Cloud Console アプリを入手して、プロジェクトの管理にお役立てください。

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

Cloud Identity and Access Management のドキュメント