このページでは、サービス アカウントの概要と、ライフサイクルの各段階でサービス アカウントを管理する際の重要な考慮事項について説明します。
サービス アカウントとは
サービス アカウントは、ユーザーではなく、アプリケーションや Compute Engine インスタンスなどのコンピューティング ワークロードで通常使用される特別なアカウントです。サービス アカウントは、アカウント固有のメールアドレスで識別されます。
アプリケーションはサービス アカウントを使用して、認可された API 呼び出しを行います。これは、サービス アカウント自体として認証されるか、ドメイン全体の委任により Google Workspace または Cloud Identity ユーザーとして認証されます。アプリケーションがサービス アカウントとして認証されると、アプリケーションはサービス アカウントにアクセス権が付与されているすべてのリソースにアクセスできます。
アプリケーションをサービス アカウントとして認証する最も一般的な方法は、アプリケーションを実行しているリソースにサービス アカウントを関連付けることです。たとえば、サービス アカウントを Compute Engine インスタンスに関連付けると、そのインスタンスで実行されているアプリケーションがサービス アカウントとして認証されるようにできます。その後、サービス アカウントに IAM ロールを付与すると、サービス アカウントは(さらにはインスタンス上の)アプリケーションが Google Cloud リソースにアクセスできるようになります。
サービス アカウントを関連付ける以外にも、アプリケーションをサービス アカウントとして認証させる方法があります。たとえば、Workload Identity 連携を設定して、外部ワークロードがサービス アカウントとして認証されるようにしたり、サービス アカウント キーを作成して、任意の環境でこれを使用して、OAuth 2.0 アクセス トークンを取得できます。
アプリケーションのサービス アカウント認証の詳細については、ワークロードの ID の概要をご覧ください。
ユーザーや他のサービス アカウントなどのプリンシパルをサービス アカウントとして認証することもできます。詳細については、このページのサービス アカウントの権限借用をご覧ください。
サービス アカウントのタイプ
Google Cloudには、いくつかの異なるタイプのサービス アカウントがあります。
ユーザー管理のサービス アカウント: ユーザーが作成して管理するサービス アカウント。多くの場合、これらのサービス アカウントはワークロードの ID として使用されます。
デフォルトのサービス アカウント: 特定の Google Cloud サービスを有効にするときに自動的に作成される、ユーザー管理のサービス アカウント。これらのサービス アカウントは、ユーザーの責任で管理する必要があります。
サービス エージェント:Google Cloudによって作成および管理され、サービスがユーザーに代わってリソースにアクセスできるようにするサービス アカウント。
それぞれのタイプのサービス アカウントの詳細については、サービス アカウントのタイプをご覧ください。
サービス アカウント認証情報
アプリケーションとプリンシパルは、次のいずれかの方法でサービス アカウントとして認証されます。
- 有効期間の短い認証情報を取得する多くの場合、gcloud CLI の
--impersonate-service-accountフラグで関連付けられたサービス アカウントとコマンドでは、認証情報が自動的に取得されるため、これらをユーザー自身で作成または管理する必要はありません。 - サービス アカウント キーを使用して JSON Web Token(JWT)に署名し、アクセス トークンと交換します。サービス アカウント キーを正しく管理しないと、セキュリティ上のリスクが生じるため、可能な限りサービス アカウント キーよりも安全な代替手段を選択する必要があります。
サービス アカウント認証の詳細については、サービス アカウントの認証情報をご覧ください。
サービス アカウントの権限借用
認証されたプリンシパル(ユーザーやサービス アカウントなど)がサービス アカウントとして認証され、サービス アカウントの権限が取得される場合、これはサービス アカウントの権限借用と呼ばれます。サービス アカウントの権限を借用すると、認証されたプリンシパルは、そのサービス アカウントが許可されているすべてのものにアクセスできます。サービス アカウントの権限を借用できるのは、適切な権限を持つ認証済みのプリンシパルのみです。
権限借用は、Identity and Access Management(IAM)ポリシーを変更せずにユーザーの権限を変更する場合に便利です。たとえば、権限借用を使用して、一時的に昇格されたアクセス権をユーザーに付与したり、特定の権限セットがタスクに十分かどうかをテストできます。また、権限借用を使用して、サービス アカウントとしてのみ実行できるアプリケーションをローカルで開発したり、 Google Cloudの外部で実行されるアプリケーションを認証することもできます。
サービス アカウントの権限借用の詳細については、サービス アカウントの権限借用をご覧ください。
サービス アカウントと Google Workspace ドメイン
ユーザー アカウントとは異なり、サービス アカウントは Google Workspace ドメインに属していません。ドキュメントやイベントなどの Google Workspace アセットを Google Workspace ドメイン全体で共有しても、サービス アカウントとは共有されません。
サービス アカウントは Google Workspace アセットを所有できません。ただし、ドメイン内の共有ドライブにアセットを作成することはできます。共有ドライブで作成されたアセットは、組織が所有し、管理します。
サービス アカウントの権限
サービス アカウントはプリンシパルです。これにより、サービス アカウントに Google Cloud リソースへのアクセス権を付与できます。たとえば、サービス アカウントに、プロジェクトに対する Compute 管理者のロール(