このドキュメントとトークンタイプのドキュメントでは、認証と認可のために Google Cloud で使用される複数のトークンについて説明します。このドキュメントは、トークンベースの認証の仕組みを理解したいユーザーや、Cloud クライアント ライブラリを使用せずに認証を実装したいユーザーを対象としています。
Cloud クライアント ライブラリ、 Google Cloud コンソール、Google Cloud CLI を使用して Google CloudAPI を操作する場合、この情報を知る必要はありません。適切なタイプのトークンを選択し、それらのトークンを取得して更新するプロセスは自動的に処理されます。
ユーザー認証
人間が Google Cloudを操作する場合、Google Cloud API を直接操作することはありません。代わりに、クライアントを使用して、ユーザーに代わって処理を行います。使用するクライアントには、ウェブ アプリケーション、デスクトップ アプリケーション、Google Cloud CLI や curl などのユーティリティがあります。
クライアントがリクエストを行うため、 Google Cloud がユーザーから直接 ID 情報をリクエストして、API を使用する権限があるかどうかを確認することはできません。代わりに、この ID はトークンの形式でクライアントから API に渡され、各 API リクエストに含まれます。
ユーザー認証トークンには次の情報がエンコードされます。
ユーザーの ID。
クライアントの ID。
クライアントがユーザーに代わって処理できることを保証します。
ユーザーの認証とクライアントの認可には、次のもの関与します。
ユーザー。
ユーザーに代わって動作するクライアント。
Google API がクライアントの認証に使用する認可サーバー。
クライアントがやり取りする Google Cloud API。
クライアントがトークンを自分で発行することはできません。代わりに、認可サーバーと連携して次の処理を行う必要があります。
ユーザー認証します。
クライアントを認証します。
ユーザーの代わりに処理を行うクライアントを認可します。
クライアントにトークンを発行します。
Google アカウントにログインして認証するユーザーは、ユーザー プリンシパルです。プリンシパルには、次のようなプリンシパル ID があります。
user:alex@example.com
Workforce Identity 連携と外部 ID プロバイダを使用して認証するユーザーは、Workforce Identity プールのプリンシパルです。プリンシパルには、次のようなプリンシパル ID があります。
principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/raha@altostrat.com
ワークロード認証
一部のクライアントは、自分自身のために Google API とやり取りする必要があります。たとえば、スケジュールされたジョブは、人間のユーザーが関与することなく、BigQuery または Cloud Storage からデータを読み取る必要がある場合があります。
無人で独自の処理を行うクライアントは、ワークロードと呼ばれます。ユーザー認証とは異なり、ワークロード認証では、ユーザーの認証とクライアントの認可が 1 つのステップに統合されます。そのため、ワークロード認証トークンはクライアントの ID のみをエンコードします。
ワークロードの認証と認可には、次のものが関与します。
クライアントとユーザーの両方として、独自の権限で動作するワークロード。
Google API がクライアントの認証に使用する認可サーバー。
クライアントがやり取りする Google Cloud API。
Google Cloud API にアクセスするため、クライアントは認可サーバーと連携して次の処理を行う必要があります。
クライアントを認証します。
クライアントを承認します。
クライアントにトークンを発行します。
認証されたワークロードはプリンシパルとも呼ばれますが、ワークロードはユーザーとは異なるプリンシパル ID を使用します。
サービス アカウントを使用して認証するワークロードは、サービス アカウント プリンシパルです。プリンシパルには、次のようなプリンシパル ID があります。
serviceAccount:my-service-account@my-project.iam.gserviceaccount.com
Workload Identity 連携を使用して認証するワークロードは、Workload Identity プール プリンシパルです。プリンシパルには、次のようなプリンシパル ID があります。
principal://iam.googleapis.com/projects/PROJECT_NAME/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
認可サーバー
Google Cloud は、他の Google サービスと特定の認証および認可機能を共有します。共有機能には、Google でログイン、OpenID Connect、OAuth 2.0 サービス(Google Identity が提供)などがあります。
Workload Identity 連携や Workforce Identity 連携など、認証に関連する他のサービスは Google Cloud に固有のものであり、他の Google サービスには使用できません。
この分割のため、 Google Cloud は 2 つの認可サーバーを使用します。1 つは他の Google サービスと共有され、もう 1 つは Google Cloudに固有のものです。次の表に、さまざまなサーバーとそのプロパティを示します。
| 認可サーバー | 認証タイプ | 認証 API | プリンシパル |
|---|---|---|---|
| Google 認可サーバー |
|
|
|
| Google Cloud Identity and Access Management(IAM)認可サーバー |
|
認可サーバーはグローバル サービスであり、任意の Google Cloud リージョンからアクセスできます。ただし、すべてのリージョンに両方の認可サーバーのデプロイが含まれているわけではありません。
Google 認可サーバーは、一部のリージョンで利用できます。
Google Cloud IAM 認可サーバーは、すべてのリージョンで使用できます。
信頼性を最適化するため、可能な限り Google Cloud IAM 認可サーバーを使用します。
次のステップ
トークンタイプについて確認する。