トークンの概要

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

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

  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 認可サーバーを使用します。

次のステップ

トークンタイプについて確認する。