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

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

プールとプロバイダの管理には、Google Cloud Console、Google Cloud CLI、または REST API を使用します。

始める前に

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

必要なロール

Workload Identity プールとプロバイダの管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

これらの事前定義ロールには、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 プール] ページに移動します。

[Workload Identity プール] に移動

gcloud

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

REST

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

プールを一覧表示する

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

コンソール

Google Cloud コンソールで、[Workload Identity プール] ページに移動します。

[Workload Identity プール] に移動

gcloud

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

REST

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

プールの取得

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

コンソール

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

    [Workload Identity プール] に移動

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

gcloud

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

REST

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

プールの更新

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

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

コンソール

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

    [Workload Identity プール] に移動

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

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

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

    説明を編集するには、gcloud CLI または 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 プロバイダを削除する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[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 プールを復元できます。

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

コンソール

  1. Google Cloud コンソールで、[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 プール内に Workload Identity プールのプロバイダを作成する手順は次のとおりです。

コンソール

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

    [Workload Identity プール] に移動

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

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

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

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

    この名前は、プロバイダ 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 プール プロバイダを一覧表示する手順は次のとおりです。

コンソール

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

    [Workload Identity プール] に移動

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

gcloud

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

REST

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

プロバイダの取得

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

コンソール

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

    [Workload Identity プール] に移動

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

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

gcloud

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

REST

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

プロバイダの更新

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

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

コンソール

  1. Google Cloud コンソールで、[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 プールのプロバイダを削除する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[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 プールのプロバイダを復元できます。プロバイダの削除を取り消すには、次のコマンドを実行します。

コンソール

  1. Google Cloud コンソールで、[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 を指定します。この制約を有効にするには、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

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

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

  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 ブール型制約を適用して、サービス アカウントの公開鍵のアップロードを無効にすることもできます。

これらの制約を有効にするには、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 連携について学習する。