トークンの概要

このドキュメントとトークンタイプのドキュメントでは、認証と認可のために 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。

クライアントがトークンを自分で発行することはできません。代わりに、認可サーバーと連携して次の処理を行う必要があります。

  1. お客様の認証を行います。

  2. クライアントを認証します。

  3. ユーザーの代わりに操作を行うクライアントを承認します。

  4. クライアントにトークンを発行します。

クライアントを介してユーザーを認証する関係図

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 にアクセスするには、クライアントは認可サーバーと連携して次の操作を行う必要があります。

  1. クライアントを認証します。

  2. クライアントを承認します。

  3. クライアントにトークンを発行します。

クライアントを介して認証を行うワークロードのリレーションシップ図

認証されたワークロードはプリンシパルとも呼ばれますが、ワークロードはユーザーとは異なるプリンシパル 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 ConnectOAuth 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 認可サーバーを使用します。

次のステップ

トークンタイプについて読みます。