このドキュメントでは、Workload Identity 連携と認証ライブラリ(auth ライブラリ)を使用して、AWS、Microsoft Azure、OpenID Connect(OIDC)または SAML 2.0 をサポートするプロバイダなどのサードパーティ ID プロバイダからワークロードを認証する方法について説明します。 Google Cloud
Workload Identity 連携を使用すると、 Google Cloudの外部で実行されているアプリケーションが、サービス アカウント キーを使用せずに Google Cloud リソースにアクセスできます。Google 認証ライブラリは、外部認証情報を有効期間の短い Google Cloud アクセス トークンと交換することで、これを実現します。
認証には、次の方法で外部認証情報を取得できます。
- 一般的な設定のための標準メカニズム。
- 独自のコードを作成する必要がある複雑なワークフロー用のカスタム認証情報サプライヤー。
始める前に
Enable the required APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.ID プロバイダとの Workload Identity 連携を構成します。
標準の認証情報メカニズムを使用して認証する
一般的にサポートされているサードパーティ ID プロバイダの場合は、Google Cloud auth ライブラリの組み込み機能を使用して、認証情報構成ファイルを生成してワークロードを認証できます。このファイルには、認証ライブラリが外部プロバイダから ID を連携するために必要な情報が記載されています。
通常は GOOGLE_APPLICATION_CREDENTIALS 環境変数を使用して読み込まれる認証情報構成ファイルで、次のいずれかの方法でサードパーティのサブジェクト トークンを取得するように認証ライブラリに指示できます。
- ファイル提供: ライブラリは、ローカル ファイルからサブジェクト トークンを読み取ります。別のプロセスで、このファイルに期限切れでない有効なトークンが含まれていることを確認する必要があります。
- URL 提供: ライブラリは、指定されたローカル URL エンドポイントにリクエストを送信して、サブジェクト トークンを取得します。
- 実行可能ファイル提供: ライブラリは、構成された実行可能コマンドを実行します。実行可能ファイルの標準出力には、サブジェクト トークンが含まれているはずです。
特定のプロバイダの認証情報構成ファイルを生成します。
認証情報の構成ファイルを使用して認証します。
Google Cloud クライアント ライブラリが認証情報構成ファイルを自動的に検索して使用できるようにするには、
GOOGLE_APPLICATION_CREDENTIALS環境変数を生成された JSON ファイルのパスに設定します。シェルで環境変数をエクスポートします。
bash export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/config.json環境変数を設定すると、クライアント ライブラリが認証フローを処理します。
次のコードサンプルは、 Google Cloud API への認証済み呼び出しを行う方法を示しています。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
カスタム認証情報サプライヤーを使用して認証する
環境が Google 認証ライブラリの組み込み機能をサポートしていない場合や、Google 認証ライブラリに認証情報を渡すカスタム ロジックを実装する場合は、カスタム認証情報サプライヤーを使用してワークロードを認証します。
AWS からリソースにアクセスする
認証クライアントを初期化するときに、認証情報サプライヤーのカスタム実装を指定します。クライアント インスタンスは、サプライヤーに委任して、 Google Cloud アクセス トークンと交換する AWS セキュリティ認証情報を取得します。サプライヤーは、クライアントが呼び出したときに有効で期限切れでない認証情報を返す必要があります。
認証クライアントは、返された AWS セキュリティ認証情報やリージョンをキャッシュに保存しません。同じリソースに対する重複したリクエストを防ぐため、サプライヤーでキャッシュ保存を実装してください。
次のコードサンプルは、カスタム認証情報サプライヤーを使用して AWS から Google Cloudリソースへのアクセスを設定する方法を示しています。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
OIDC と SAML からリソースにアクセスする
認証クライアントを初期化するときに、カスタム トークン サプライヤを指定して、 Google Cloud アクセス トークンと交換されるサブジェクト トークンを提供します。サプライヤーは、クライアントが呼び出したときに、有効期限切れでない有効なサブジェクト トークンを返す必要があります。
認証クライアントは返されたトークンをキャッシュに保存しないため、同じサブジェクト トークンに対する冗長なリクエストを防ぐために、サプライヤーにキャッシュ保存を実装します。
次のコードサンプルは、カスタム認証情報サプライヤを使用して、OpenID Connect(OIDC)または SAML 2.0 をサポートするプロバイダから Google Cloudリソースへのアクセスを設定する方法を示しています。
Node.js
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Node.js API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
IAM のクライアント ライブラリをインストールして使用する方法については、IAM クライアント ライブラリをご覧ください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
IAM で認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のステップ
- Workload Identity 連携について学習する。