このページでは、既存の Workload Identity プールとその ID プロバイダを管理する方法について説明します。
プールとプロバイダの管理には、Google Cloud コンソール、Google Cloud CLI、または REST API を使用します。
始める前に
Workload Identity プールを作成します。方法については、次のいずれかのページをご覧ください。
- AWS からリソースにアクセスする
- Microsoft Azure からリソースにアクセスする
- OIDC ID プロバイダからリソースにアクセスする
- SAML 2.0 ID プロバイダからリソースにアクセスする
必要なロール
Workload Identity プールとプロバイダの管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- プールとプロバイダを表示する: IAM Workload Identity プール閲覧者(
roles/iam.workloadIdentityPoolViewer
) - プールとプロバイダを表示、作成、更新、削除する: IAM Workload Identity プール管理者(
roles/iam.workloadIdentityPoolAdmin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、Workload Identity プールとプロバイダの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Workload Identity プールとプロバイダを管理するには、次の権限が必要です。
-
Workload Identity プールとプロバイダを表示する:
-
iam.googleapis.com/workloadIdentityPoolProviders.get
-
iam.googleapis.com/workloadIdentityPoolProviders.list
-
iam.googleapis.com/workloadIdentityPools.get
-
iam.googleapis.com/workloadIdentityPools.list
-
-
-
プールとプロバイダを作成、更新、削除する:
-
iam.googleapis.com/workloadIdentityPoolProviders.create
-
iam.googleapis.com/workloadIdentityPoolProviders.delete
-
iam.googleapis.com/workloadIdentityPoolProviders.undelete
-
iam.googleapis.com/workloadIdentityPoolProviders.update
-
iam.googleapis.com/workloadIdentityPools.create
-
iam.googleapis.com/workloadIdentityPools.delete
-
iam.googleapis.com/workloadIdentityPools.undelete
-
iam.googleapis.com/workloadIdentityPools.update
-
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Workload Identity プールを管理する
このセクションでは、Workload Identity プールを管理する方法について説明します。
プールを作成する
プロジェクトに Workload Identity プールを作成するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
gcloud
gcloud iam workload-identity-pools create
コマンドを実行します。
REST
プールを一覧表示する
プロジェクト内のすべての Workload Identity プールを一覧表示する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
gcloud
gcloud iam workload-identity-pools list
コマンドを実行します。
REST
プールの取得
特定の Workload Identity プールの詳細を取得するに手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
表示する Workload Identity プールを見つけて、[編集] アイコン(
)をクリックします。Google Cloud コンソールに Workload Identity プールの詳細が表示されます。
gcloud
gcloud iam workload-identity-pools describe
コマンドを実行します。
REST
プールの更新
Workload Identity プールは、有効または無効にできます。表示名や説明を変更することもできます。
既存の Workload Identity プールを更新する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
編集する Workload Identity プールを見つけて、その [編集] アイコン(
)をクリックします。Workload Identity プールを有効または無効にするには、ステータス切り替えボタンをクリックして、[無効にする] または [有効にする] をクリックします。
表示名を編集するには、表示名の横にある [編集](
)をクリックします。名前を更新してから、[保存] をクリックします。説明を編集するには、gcloud CLI または REST API を使用します。
gcloud
gcloud iam workload-identity-pools update
コマンドを実行します。
REST
プールの削除
Workload Identity プールを削除すると、その Workload Identity プールのプロバイダも削除されます。その結果、プール内の ID は Google Cloud リソースにアクセスできなくなります。
削除から最長 30 日間はプールの削除を取り消すことができます。30 日が経過すると、完全に削除されます。プールが完全に削除されるまで、その名前は新しい Workload Identity プールの作成時に再利用できません。
Workload Identity プールとその ID プロバイダを削除する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
削除する Workload Identity プールを見つけて、その [編集] アイコン(
)をクリックします。[プールを削除](
)をクリックし、[削除] をクリックします。Workload Identity プールとその ID プロバイダが削除されます。
gcloud
gcloud iam workload-identity-pools delete
コマンドを実行します。
REST
プールの削除の取り消し
削除後 30 日以内であれば、削除した Workload Identity プールを復元できます。
プールの削除を取り消す手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
[削除したプールとプロバイダを表示する] 切り替えボタンをクリックします。
削除を取り消す Workload Identity プールを見つけて、[復元] アイコン(
)をクリックします。[復元] をクリックします。プールとプロバイダが復元されます。
gcloud
gcloud iam workload-identity-pools undelete
コマンドを実行します。
REST
projects.locations.workloadIdentityPools.undelete()
を呼び出します。
Workload Identity プールのプロバイダの管理
このセクションでは、Workload Identity プールのプロバイダを管理する方法について説明します。
プロバイダを作成する
既存の Workload Identity プール内に Workload Identity プールのプロバイダを作成する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
プロバイダを追加する Workload Identity プールを見つけて、[編集] アイコン(
)をクリックします。[プロバイダを追加](
)をクリックします。作成するプロバイダのタイプを選択します。
- AWS: Amazon Web Services(AWS)の ID プロバイダ。
- OpenID Connect(OIDC): OIDC と互換性のある ID プロバイダ。これには Microsoft Azure も含まれます。
プロバイダの名前を入力します。
この名前は、プロバイダ ID の作成に使用されます。プロバイダ ID を変更するには、[編集] をクリックします。プロバイダ ID は後から変更できません。
プロバイダの残りのフィールドに入力します。
- AWS: AWS アカウント ID を入力します。
- OIDC: 発行者の URL を入力します。Azure の場合、発行者の URL の形式は
https://sts.windows.net/AZURE_TENANT_ID
です。他のプロバイダについては、プロバイダのドキュメントをご覧ください。
完了したら、[続行] をクリックします。
属性のマッピングを構成するには、[マッピングを編集] をクリックします。属性のマッピングでは、外部 ID に関する情報を使用して、それらの ID のサブセットへのアクセス権を付与できます。
AWS: このステップは省略可能です。デフォルトのマッピングを使用できます。
詳細については、AWS の ID プロバイダ設定をご覧ください。
OIDC:
google.subject
をassertion.sub
にマッピングすることをおすすめします。その他のマッピングは省略可能です。詳細については、Azure の ID プロバイダ設定または OIDC の ID プロバイダ設定をご覧ください。
(省略可)認証できる ID を指定する属性条件を指定するには、[条件を追加] をクリックし、有効な CEL(Common Expression Language)を入力します。詳細については、属性の条件をご覧ください。
[保存] をクリックします。Workload Identity プールのプロバイダが作成されます。
gcloud
gcloud iam workload-identity-pools providers create-aws
コマンドを実行して AWS プロバイダを作成します。
gcloud iam workload-identity-pools providers create-oidc
コマンドを実行して、OIDC プロバイダを作成します。これには Microsoft Azure も含まれます。
REST
projects.locations.workloadIdentityPools.providers.create()
を呼び出します。
プロバイダの一覧表示
プロジェクト内の Workload Identity プール プロバイダを一覧表示する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
Workload Identity プールのプロバイダを表示するには、プールの [ノードを展開します] アイコン(
)をクリックします。
gcloud
gcloud iam workload-identity-pools providers list
コマンドを実行します。
REST
projects.locations.workloadIdentityPools.providers.list()
を呼び出します。
プロバイダの取得
特定の Workload Identity プールのプロバイダの詳細を取得する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン(
)をクリックします。表示する Workload Identity プール プロバイダを見つけて、[編集] アイコン(
)をクリックします。プロバイダに関する詳細情報が Google Cloud コンソールに表示されます。
gcloud
gcloud iam workload-identity-pools providers describe
コマンドを実行します。
REST
projects.locations.workloadIdentityPools.providers.get()
を呼び出します。
プロバイダの更新
Workload Identity プールのプロバイダは、有効または無効にできます。アカウント情報、属性のマッピング、表示名、説明を更新することもできます。
既存の Workload Identity プールのプロバイダを更新する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン(
)をクリックします。編集する Workload Identity プール プロバイダを見つけて、[編集] アイコン(
)をクリックします。プロバイダの情報を編集し、[保存] をクリックします。
gcloud
gcloud iam workload-identity-pools providers update-aws
コマンドを実行して AWS プロバイダを更新します。
gcloud iam workload-identity-pools providers update-oidc
コマンドを実行して、OIDC プロバイダを更新します。これには Microsoft Azure も含まれます。
REST
projects.locations.workloadIdentityPools.providers.patch()
を呼び出します。
プロバイダの削除
Workload Identity プール プロバイダを削除すると、プロバイダの ID は Google Cloud リソースにアクセスできなくなります。
削除から最長 30 日間はプロバイダの削除を取り消すことができます。30 日が経過すると、完全に削除されます。プロバイダが完全に削除されるまで、その名前は新しいプロバイダの作成時に再利用できません。
Workload Identity プールのプロバイダを削除する手順は次のとおりです。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
プロバイダを含む Workload Identity プールを見つけて、[編集] アイコン(
)をクリックします。[プロバイダ] ペインで削除するプロバイダを見つけて、[削除] アイコン(
)をクリックします。[削除] をクリックしてプロバイダを削除します。
gcloud
gcloud iam workload-identity-pools providers delete
コマンドを実行します。
REST
projects.locations.workloadIdentityPools.providers.delete()
を呼び出します。
プロバイダの削除の取り消し
削除後 30 日以内であれば、削除した Workload Identity プールのプロバイダを復元できます。プロバイダの削除を取り消すには、次のコマンドを実行します。
コンソール
Google Cloud コンソールで、[Workload Identity プール] ページに移動します。
[削除したプールとプロバイダを表示する] 切り替えボタンをクリックします。
プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン(
)をクリックします。削除を取り消すプロバイダを見つけて、[復元] アイコン(
)をクリックします。[復元] をクリックします。プロバイダが復元されます。
gcloud
gcloud iam workload-identity-pools providers undelete
コマンドを実行します。
REST
projects.locations.workloadIdentityPools.providers.undelete()
を呼び出します。
Workload Identity 連携の制約を管理する
組織のポリシーの制約を使用して、Google Cloud 組織内のリソースの使用方法を制限できます。
このセクションでは、Workload Identity 連携を使用する場合に推奨される制約について説明します。
ID プロバイダの構成を制限する
組織の管理者は、組織が連携できる ID プロバイダを決定できます。
許可する ID プロバイダを管理するには、組織のポリシーで constraints/iam.workloadIdentityPoolProviders
リスト制約を有効にします。この制約では、許可されたプロバイダの発行者 URI を指定します。この制約を有効にするには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
AWS の連携のみを許可するには、URI https://sts.amazonaws.com
を指定して単独の制約を作成します。次の例は、この制約を gcloud CLI で作成する方法を示しています。
gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \ https://sts.amazonaws.com --organization=ORGANIZATION_NUMBER
Google Cloud リソースにアクセスできる AWS アカウント ID を指定することもできます。アカウント ID を指定するには、constraints/iam.workloadIdentityPoolAwsAccounts
リスト制約を使用します。
gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolAwsAccounts \ ACCOUNT_ID --organization=ORGANIZATION_NUMBER
1 つの OIDC プロバイダからの連携のみを許可するには、許可されるプロバイダの issuer_uri
を使用して単独の制約を作成します。たとえば、以下の例では特定の Azure テナントの連携のみを許可しています。
gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \ https://sts.windows.net/AZURE_TENANT_ID --organization=ORGANIZATION_NUMBER
アサーションの検証に使用される公開鍵は、ID プロバイダから直接取得されるのではなく、構成時に提供されるため、SAML ID プロバイダからの連携は特殊なケースです。したがって、悪意のあるユーザーが、秘密鍵に対してアクセス権のある公開鍵ではなく、組織の ID プロバイダのエンティティ ID を使用して SAML メタデータ ドキュメントをアップロードできてしまいます。このシナリオでエンティティ ID による連携を制限しても、保護されているという錯覚が生じるだけです。こういった理由のため、組織が一元的に管理している Google Cloud プロジェクトで SAML フェデレーションを許可する Workload Identity プールの作成のみを許可することを強くおすすめします。その後、その Workload Identity プール内の外部 ID に、組織全体のリソースへのアクセス権を付与できます。
SAML ID プロバイダからの連携を許可するには、特殊なキーワード KEY_UPLOAD
を許可する制約を作成します。
gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \ KEY_UPLOAD --organization=ORGANIZATION_NUMBER
追加のプロバイダによる連携を許可するには、これらのコマンドを繰り返します。
すべてのプロバイダからの連携をブロックする方法は次のとおりです。
以下を含む YAML ファイルを作成します。
constraint: constraints/iam.workloadIdentityPoolProviders listPolicy: allValues: DENY
ファイルを
gcloud resource-manager org-policies set-policy
コマンドに渡します。gcloud resource-manager org-policies set-policy FILE_NAME.yaml \ --organization=ORGANIZATION_NUMBER
サービス アカウント キーの作成を制限する
Workload Identity 連携機能を使用すると、サービス アカウント キーを使用せずに Google Cloud の外部から Google Cloud リソースにアクセスできます。認証にサービス アカウント キーを使用しない場合、鍵の作成を無効にすることでリスクを軽減できます。
サービス アカウント キーの作成を無効にするには、組織のポリシーで iam.disableServiceAccountKeyCreation
ブール型制約を適用します。また、iam.disableServiceAccountKeyUpload
ブール型制約を適用して、サービス アカウントの公開鍵のアップロードを無効にすることもできます。
これらの制約を有効にするには、Google Cloud コンソールまたは gcloud CLI を使用します。たとえば、次の gcloud CLI コマンドでは、両方の制約が有効になります。
gcloud resource-manager org-policies enable-enforce \ constraints/iam.disableServiceAccountKeyCreation \ --organization=ORGANIZATION_NUMBER gcloud resource-manager org-policies enable-enforce \ constraints/iam.disableServiceAccountKeyUpload \ --organization=ORGANIZATION_NUMBER
Workload Identity 連携をモニタリングする
Cloud Monitoring 指標を使用すると、Workload Identity プールとプロバイダの認証イベントを監視できます。使用可能な指標のリストについては、IAM 指標をご覧ください。
次のステップ
Workload Identity 連携について学習する。