Workload Identity プールとプロバイダを管理する

このページでは、既存の Workload Identity プールとその ID プロバイダを管理する方法について説明します。

プールとプロバイダの管理には、Google Cloud Console、gcloud コマンドライン ツール、または REST API を使用します。

始める前に

Workload Identity プールを作成します。方法については、次のいずれかのページをご覧ください。

Workload Identity プールの管理

プールの一覧表示

プロジェクト内のすべての Workload Identity プールを一覧表示する手順は次のとおりです。

Console

Cloud Console で、[Workload Identity プール] ページに移動します。

[Workload Identity プール] に移動

gcloud

gcloud iam workload-identity-pools list コマンドを実行します。

REST

projects.locations.workloadIdentityPools.list() を呼び出します。

プールの取得

特定の Workload Identity プールの詳細を取得するに手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. 表示する Workload Identity プールを見つけて、[編集] アイコン()をクリックします。Cloud Console に Workload Identity プールの詳細が表示されます。

gcloud

gcloud iam workload-identity-pools describe コマンドを実行します。

REST

projects.locations.workloadIdentityPools.get() を呼び出します。

プールの更新

Workload Identity プールは、有効または無効にできます。表示名や説明を変更することもできます。

既存の Workload Identity プールを更新する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. 編集する Workload Identity プールを見つけて、その [編集] アイコン()をクリックします。

    Workload Identity プールを有効または無効にするには、ステータス切り替えボタンをクリックして、[無効にする] または [有効にする] をクリックします。

    表示名を編集するには、表示名の横にある [編集]()をクリックします。名前を更新してから、[保存] をクリックします。

    説明を編集するには、gcloud ツールまたは REST API を使用します。

gcloud

gcloud iam workload-identity-pools update コマンドを実行します。

REST

projects.locations.workloadIdentityPools.patch() を呼び出します。

プールの削除

Workload Identity プールを削除すると、その Workload Identity プールのプロバイダも削除されます。その結果、プール内の ID は Google Cloud リソースにアクセスできなくなります。

削除から最長 30 日間はプールの削除を取り消すことができます。30 日が経過すると、完全に削除されます。プールが完全に削除されるまで、その名前は新しい Workload Identity プールの作成時に再利用できません。

Workload Identity プールとその ID プロバイダを削除する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. 削除する Workload Identity プールを見つけて、その [編集] アイコン()をクリックします。

  3. [プールを削除]()をクリックし、[削除] をクリックします。Workload Identity プールとその ID プロバイダが削除されます。

gcloud

gcloud iam workload-identity-pools delete コマンドを実行します。

REST

projects.locations.workloadIdentityPools.delete() を呼び出します。

プールの削除の取り消し

削除後 30 日以内であれば、削除した Workload Identity プールを復元できます。

プールの削除を取り消す手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. [削除したプールとプロバイダを表示する] 切り替えボタンをクリックします。

  3. 削除を取り消す Workload Identity プールを見つけて、[復元] アイコン()をクリックします。

  4. [復元] をクリックします。プールとプロバイダが復元されます。

gcloud

gcloud iam workload-identity-pools undelete コマンドを実行します。

REST

projects.locations.workloadIdentityPools.undelete() を呼び出します。

Workload Identity プロバイダの管理

プロバイダの作成

既存の Workload Identity プール内に Workload Identity プロバイダを作成する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. プロバイダを追加する Workload Identity プールを見つけて、[編集] アイコン()をクリックします。

  3. [プロバイダを追加]()をクリックします。

  4. 作成するプロバイダのタイプを選択します。

    • AWS: Amazon Web Services(AWS)の ID プロバイダ。
    • OpenID Connect(OIDC): OIDC と互換性のある ID プロバイダ。これには Microsoft Azure も含まれます。
  5. プロバイダの名前を入力します。

    Cloud Console は、この名前を使用してプロバイダ ID を作成します。プロバイダ ID を変更するには、[編集] をクリックします。プロバイダ ID は後から変更できません。

  6. プロバイダの残りのフィールドに入力します。

    • AWS: AWS アカウント ID を入力します。
    • OIDC: 発行者の URL を入力します。Azure の場合、発行者の URL の形式は https://sts.windows.net/AZURE_TENANT_ID です。他のプロバイダについては、プロバイダのドキュメントをご覧ください。

    完了したら、[続行] をクリックします。

  7. (省略可)属性のマッピングを構成するには、[マッピングを編集] をクリックします。属性のマッピングでは、外部 ID に関する情報を使用して、それらの ID のサブセットへのアクセス権を付与できます。

  8. (省略可)認証できる ID を指定する属性条件を指定するには、[条件を追加] をクリックし、有効な CEL(Common Expression Language)を入力します。詳細については、属性の条件をご覧ください。

  9. [保存] をクリックします。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 プール プロバイダを一覧表示する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. Workload Identity プールのプロバイダを表示するには、プールの [ノードを展開します] アイコン()をクリックします。

gcloud

gcloud iam workload-identity-pools providers list コマンドを実行します。

REST

projects.locations.workloadIdentityPools.providers.list() を呼び出します。

プロバイダの取得

特定の Workload Identity プロバイダの詳細を取得する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン()をクリックします。

  3. 表示する Workload Identity プール プロバイダを見つけて、[編集] アイコン()をクリックします。プロバイダに関する詳細情報が Cloud Console に表示されます。

gcloud

gcloud iam workload-identity-pools providers describe コマンドを実行します。

REST

projects.locations.workloadIdentityPools.providers.get() を呼び出します。

プロバイダの更新

Workload Identity プールのプロバイダは、有効または無効にできます。アカウント情報、属性のマッピング、表示名、説明を更新することもできます。

既存の Workload Identity プロバイダを更新する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン()をクリックします。

  3. 編集する Workload Identity プール プロバイダを見つけて、[編集] アイコン()をクリックします。

  4. プロバイダの情報を編集し、[保存] をクリックします。

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 プールのプロバイダを削除する手順は次のとおりです。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. プロバイダを含む Workload Identity プールを見つけて、[編集] アイコン()をクリックします。

  3. [プロバイダ] ペインで削除するプロバイダを見つけて、[削除] アイコン()をクリックします。

  4. [削除] をクリックしてプロバイダを削除します。

gcloud

gcloud iam workload-identity-pools providers delete コマンドを実行します。

REST

projects.locations.workloadIdentityPools.providers.delete() を呼び出します。

プロバイダの削除の取り消し

削除後 30 日以内であれば、削除した Workload Identity プロバイダを復元できます。プロバイダの削除を取り消すには、次のコマンドを実行します。

Console

  1. Cloud Console で、[Workload Identity プール] ページに移動します。

    [Workload Identity プール] に移動

  2. [削除したプールとプロバイダを表示する] 切り替えボタンをクリックします。

  3. プロバイダを含む Workload Identity プールを見つけて、そのプールの [ノードを展開します] アイコン()をクリックします。

  4. 削除を取り消すプロバイダを見つけて、[復元] アイコン()をクリックします。

  5. [復元] をクリックします。プロバイダが復元されます。

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 を指定します。この制約を有効にするには、Cloud Console または gcloud コマンドライン ツールを使用します。

AWS の連携のみを許可するには、URI https://sts.amazonaws.com を指定して単独の制約を作成します。次の例は、この制約を gcloud ツールで作成する方法を示しています。

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 による連携を制限しても、保護されているという錯覚が生じるだけです。組織が一元的に管理している GCP プロジェクトで SAML フェデレーションを許可する Workload Identity プールの作成のみを許可することを強くおすすめします。その後、その Workload Identity プール内の外部 ID に、組織全体のリソースへのアクセス権を付与できます。

SAML ID プロバイダからの連携を許可するには、特殊なキーワード KEY_UPLOAD を許可する制約を作成します。

gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \
     KEY_UPLOAD --organization=ORGANIZATION_NUMBER

追加のプロバイダによる連携を許可するには、これらのコマンドを繰り返します。

すべてのプロバイダからの連携をブロックする方法は次のとおりです。

  1. 以下を含む YAML ファイルを作成します。

    constraint: constraints/iam.workloadIdentityPoolProviders
    listPolicy:
      allValues: DENY
    
  2. ファイルを 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 ブール型制約を適用して、サービス アカウントの公開鍵のアップロードを無効にすることもできます。

これらの制約を有効にするには、Cloud Console または gcloud ツールを使用します。たとえば、次の gcloud ツールコマンドでは、両方の制約が有効になります。

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 連携のモニタリング

Workload Identity 連携では、Workload Identity プールとプロバイダをモニタリングするための複数の Cloud Monitoring 指標が提供されます。これらの指標のカスタム アラートの表示や設定の詳細については、Cloud Monitoring のドキュメントをご覧ください。

指標タイプリリース ステージ
表示名
種類、タイプ、単位
モニタリング対象リソース
説明
ラベル
iam.googleapis.com/workload_identity_federation/count ベータ版
Workload identity 連携数
DELTAINT641
iam.googleapis.com/WorkloadIdentityPoolProvider
Workload Identity 連携を使用したトークン交換の成功数です。
result: リクエストが成功した場合、値は success になります。リクエストが失敗した場合、値は https://tools.ietf.org/html/rfc6749#section-5.2 にある OAuth 2.0 エラータイプのいずれかと一致します(invalid_client など)。
iam.googleapis.com/workload_identity_federation/key_usage_count ベータ版
Workload Identity 連携鍵の使用数

(SAML 2.0 プレビュー版をご利用のお客様のみ)
DELTAINT641
iam.googleapis.com/WorkloadIdentityPoolProvider
Workload Identity 連携の一部として鍵が使用される回数。
key: Workload Identity 連携中に使用される公開鍵の識別子。
use: 鍵の用途。use には次のような値を指定できます(値は今後追加される可能性があります)。
  • verify: 署名の検証

次のステップ

Workload Identity 連携について学習する。