このドキュメントとトークンタイプのドキュメントでは、認証と認可のために Google Cloud で使用される複数のトークンについて説明します。このドキュメントは、トークンベースの認証の仕組みを理解したいユーザーや、Cloud クライアント ライブラリを使用せずに認証を実装したいユーザーを対象としています。
Cloud クライアント ライブラリ、 Google Cloud コンソール、または Google Cloud CLI を使用して Google CloudAPI を操作する場合、この情報を知る必要はありません。適切なタイプのトークンを選択し、それらのトークンを取得して更新するプロセスは自動的に処理されます。
ユーザー認証
人間が Google Cloudを操作する場合、Google Cloud API を直接操作することはありません。代わりに、クライアントを使用して、ユーザーに代わって操作を行います。使用するクライアントは、ウェブ アプリケーション、デスクトップ アプリケーション、Google Cloud CLI や curl
などのユーティリティの場合があります。
クライアントがリクエストを行うため、ユーザーから直接 ID 情報をリクエストして、API を使用する権限があるかどうかを確認することはできません。 Google Cloud 代わりに、この 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 認可サーバーを使用します。
次のステップ
トークンタイプについて読みます。