Workforce Identity 連携を構成する

このガイドでは、OIDC または SAML 2.0 をサポートする ID プロバイダ(IdP)との Workforce Identity 連携を構成する方法について説明します。

IdP 固有の手順については、以下をご覧ください。

始める前に

  1. Google Cloud 組織を設定する必要があります。

  2. Enable the Identity and Access Management (IAM) and Resource Manager APIs.

    Enable the APIs

  3. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  4. ログインの場合、IdP は署名付き認証情報を提供する必要があります。OIDC IdP は JWT を提供し、SAML IdP レスポンスは署名されている必要があります。

  5. 組織または Google Cloud プロダクトの変更に関する重要な情報を受け取るには、重要な連絡先を指定する必要があります。詳細については、Workforce Identity 連携の概要をご覧ください。

必要なロール

Workforce Identity 連携の構成に必要な権限を取得するには、組織に対する Workforce Identity プール管理者roles/iam.workforcePoolAdmin)の IAM ロールを付与するように管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

オーナーの基本ロール(roles/owner)には、Workforce Identity 連携を構成する権限も含まれています。本番環境では基本ロールを付与すべきではありません。基本ロールは、開発環境またはテスト環境で付与してください。

Workforce Identity 連携を構成する

Workforce Identity 連携を構成するには、Workforce Identity プールWorkforce Identity プール プロバイダを作成します。

Workforce Identity プールを作成する

プールを作成するには、次のコマンドを実行します。

コンソール

Workforce Identity プールを作成するには、次の操作を行います。

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

    [Workforce Identity プール] に移動

  2. [プールを作成] をクリックして、次の操作を行います。

    1. [名前] フィールドに、プールの表示名を入力します。プール ID は、入力した名前から自動的に取得され、[名前] フィールドの下に表示されます。プール ID を更新するには、プール ID の横にある [編集] をクリックします。

    2. 省略可: [説明] にプールの説明を入力します。

    3. [セッション継続時間] はデフォルトで設定されています。カスタムのセッション継続時間を入力するには、[編集] をクリックします。セッション継続時間は、この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。

    4. プールを有効な状態で作成するには、[有効なプール] がオンになっていることを確認します。

    5. Workforce Identity プールを作成するには、[次へ] をクリックします。

gcloud

Workforce Identity プールを作成するには、次のコマンドを実行します。

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

次のように置き換えます。

  • WORKFORCE_POOL_ID: Google Cloud の Workforce プールを表す ID。ID の形式については、API ドキュメントのクエリ パラメータ セクションをご覧ください。
  • ORGANIZATION_ID: Google Cloud 組織の組織 ID。
  • DISPLAY_NAME: 省略可。Workforce Identity プールの表示名。
  • DESCRIPTION: 省略可。Workforce Identity プールの説明。
  • SESSION_DURATION: 省略可。セッション継続時間。この Workforce プールの Google Cloud アクセス トークン、コンソール(連携)ログイン セッション、gcloud CLI ログイン セッションの有効期間を決定します。継続時間は 15 分(900 秒)より長く、12 時間(43,200 秒)より短くする必要があります。セッション継続時間が設定されていない場合、デフォルトで 1 時間(3,600 秒)に設定されます。

Workforce Identity プール プロバイダを作成する

このセクションでは、IdP ユーザーが Google Cloud にアクセスできるように Workforce Identity プール プロバイダを作成する方法について説明します。OIDC または SAML プロトコルを使用するようにプロバイダを構成できます。

OIDC Workforce プール プロバイダを作成する

OIDC プロトコルを使用して Workforce Identity プール プロバイダを作成する手順は次のとおりです。

  1. OIDC IdP で、Google Cloud Workforce Identity 連携用の新しいアプリケーションを登録します。IdP から提供されるクライアント ID と発行者 URI をメモします。これらは、このドキュメントで使用します。

  2. コンソールへのユーザー アクセスを設定する場合は、OIDC IdP に次のリダイレクト URL を追加します。

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    コンソール(連携)ログインを構成する方法については、コンソール(連携)へのユーザー アクセスを設定するをご覧ください。

  3. Google Cloud でプロバイダを作成する手順は次のとおりです。

    コンソール

    コードフロー

    Google Cloud コンソールで認可コードフローを使用する OIDC プロバイダを作成するには、次の操作を行います。

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

      [Workforce Identity プール] に移動

    2. [Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。

    3. [プロバイダ] テーブルで [プロバイダを追加] をクリックします。

    4. [プロトコルを選択] で、[Open ID Connect(OIDC)] を選択します。

    5. [プール プロバイダの作成] で、次の操作を行います。

      1. [名前] にプロバイダの名前を入力します。
      2. [発行元(URL)] に発行元 URI を入力します。OIDC 発行元 URI は有効な URI 形式で、https で始まる必要があります。(例: https://example.com/oidc)。
      3. クライアント ID(OIDC IdP に登録されている OIDC クライアント ID)を入力します。ID は、IdP によって発行された JWT の aud クレームと一致する必要があります。
      4. 有効なプロバイダを作成するには、[有効なプロバイダ] がオンになっていることを確認します。
      5. [続行] をクリックします。
    6. [レスポンス タイプ] で、次の操作を行います。レスポンス タイプは、ウェブベースのシングル サインオン フローでのみ使用されます。

      1. [レスポンス タイプ] で [コード] を選択します。
      2. [クライアント シークレット] に、IdP のクライアント シークレットを入力します。
      3. [アサーション クレームの動作] で、次のいずれかを選択します。

        • ユーザー情報と ID トークン
        • ID トークンのみ
      4. [続行] をクリックします。

    7. [プロバイダの構成] で、属性のマッピングと属性条件を構成できます。属性のマッピングを作成する手順は次のとおりです。IdP フィールド名、または文字列を返す CEL 形式の式を指定できます。

      1. 必須: [OIDC 1] に、IdP からの件名を入力します(例: assertion.sub)。

      2. 省略可: 属性のマッピングを追加する手順は次のとおりです。

        1. [マッピングを追加] をクリックします。
        2. [Google n](n は数値)で、Google Cloud でサポートされている鍵のいずれかを入力します。
        3. 対応する [OIDC n] フィールドに、マッピングする IdP 固有のフィールドの名前を CEL 形式で入力します。
      3. 属性条件を作成するには、次の操作を行います。

        1. [条件を追加] をクリックします。
        2. [属性条件] で、CEL 形式で条件を入力します(例: assertion.role == 'gcp-users')。この例の条件により、ロール gcp-users を持つユーザーのみがこのプロバイダを使用してログインできます。
    8. プロバイダを作成するには、[送信] をクリックします。

    暗黙的フロー

    Google Cloud コンソールで、暗黙的フローを使用する OIDC プロバイダを作成するには、次の手順を行います。

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

      [Workforce Identity プール] に移動

    2. [Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。

    3. [プロバイダ] テーブルで [プロバイダを追加] をクリックします。

    4. [プロトコルを選択] で、[Open ID Connect(OIDC)] を選択します。

    5. [プール プロバイダの作成] で、次の操作を行います。

      1. [名前] にプロバイダの名前を入力します。
      2. [発行元(URL)] に発行元 URI を入力します。OIDC 発行元 URI は有効な URI 形式で、https で始まる必要があります。(例: https://example.com/oidc)。
      3. クライアント ID(OIDC IdP に登録されている OIDC クライアント ID)を入力します。ID は、IdP によって発行された JWT の aud クレームと一致する必要があります。
      4. 有効なプロバイダを作成するには、[有効なプロバイダ] がオンになっていることを確認します。
      5. [続行] をクリックします。
    6. [レスポンス タイプ] で、次の操作を行います。レスポンス タイプは、ウェブベースのシングル サインオン フローでのみ使用されます。

      1. [レスポンス タイプ] で [ID トークン] を選択します。
      2. [続行] をクリックします。
    7. [プロバイダの構成] で、属性のマッピングと属性条件を構成できます。属性のマッピングを作成する手順は次のとおりです。IdP フィールド名、または文字列を返す CEL 形式の式を指定できます。

      1. 必須: [OIDC 1] に、IdP からの件名を入力します(例: assertion.sub)。

      2. 省略可: 属性のマッピングを追加する手順は次のとおりです。

        1. [マッピングを追加] をクリックします。
        2. [Google n](n は数値)で、Google Cloud でサポートされている鍵のいずれかを入力します。
        3. 対応する [OIDC n] フィールドに、マッピングする IdP 固有のフィールドの名前を CEL 形式で入力します。
      3. 属性条件を作成するには、次の操作を行います。

        1. [条件を追加] をクリックします。
        2. [属性条件] で、CEL 形式で条件を入力します(例: assertion.role == 'gcp-users')。この例の条件により、ロール gcp-users を持つユーザーのみがこのプロバイダを使用してログインできます。

    8. プロバイダを作成するには、[送信] をクリックします。

    gcloud

    コードフロー

    ウェブログインに認可コードフローを使用する OIDC プロバイダを作成するには、次のコマンドを実行します。

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
    --client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global

    次のように置き換えます。

    • PROVIDER_ID: 一意のプロバイダ ID。接頭辞 gcp- は予約されているため、プールやプロバイダ ID では使用できません。
    • WORKFORCE_POOL_ID: IdP を接続する Workforce Identity プール ID。
    • DISPLAY_NAME: プロバイダのわかりやすい表示名。省略可能です。例: idp-eu-employees
    • DESCRIPTION: Workforce プロバイダの説明。省略可能です。例: IdP for Partner Example Organization employees
    • ISSUER_URI: https で始まる有効な URI 形式の OIDC 発行者 URI。例: https://example.com/oidc注: セキュリティ上の理由により、ISSUER_URI では HTTPS スキームを使用する必要があります。
    • OIDC_CLIENT_ID: OIDC IdP に登録されている OIDC クライアント ID。ID は、IdP によって発行された JWT の aud クレームと一致する必要があります。
    • OIDC_CLIENT_SECRET: OIDC クライアント シークレット。
    • WEB_SSO_ADDITIONAL_SCOPES: コンソール(連携)または gcloud CLI ブラウザベースのログイン用に OIDC IdP に送信する任意の追加スコープ
    • ATTRIBUTE_MAPPING: 属性マッピング。属性マッピングの例を次に示します。
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      この例では、OIDC アサーションの IdP 属性 subjectgroup1costcenter をそれぞれ google.subjectgoogle.groupsattribute.costcenter の各属性にマッピングしています。
    • ATTRIBUTE_CONDITION: 属性条件。例: assertion.role == 'gcp-users'この例の条件により、ロール gcp-users を持つユーザーのみがこのプロバイダを使用してログインできます。
    • JWK_JSON_PATH: ローカルにアップロードされた OIDC JWK へのパス(省略可)。このパラメータを指定しない場合、代わりに Google Cloud は IdP の /.well-known/openid-configuration パスを使用して公開鍵を含む JWK を取得します。ローカルにアップロードされた OIDC JWK の詳細については、OIDC JWK を管理するをご覧ください。
    コマンド レスポンスで、POOL_RESOURCE_NAME はプールの名前です。例: locations/global/workforcePools/enterprise-example-organization-employees

    暗黙的フロー

    ウェブログインに暗黙的フローを使用する OIDC プロバイダを作成するには、次のコマンドを実行します。

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
        --web-sso-response-type="id-token" \
        --web-sso-assertion-claims-behavior="only-id-token-claims" \
        --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \
        --attribute-mapping="ATTRIBUTE_MAPPING" \
        --attribute-condition="ATTRIBUTE_CONDITION" \
        --jwk-json-path="JWK_JSON_PATH" \
        --location=global
    

    次のように置き換えます。

    • PROVIDER_ID: 一意のプロバイダ ID。接頭辞 gcp- は予約されているため、プールやプロバイダ ID では使用できません。
    • WORKFORCE_POOL_ID: IdP を接続する Workforce Identity プール ID。
    • DISPLAY_NAME: プロバイダのわかりやすい表示名。省略可能です。例: idp-eu-employees
    • DESCRIPTION: Workforce プロバイダの説明。省略可能です。例: IdP for Partner Example Organization employees
    • ISSUER_URI: https で始まる有効な URI 形式の OIDC 発行者 URI。例: https://example.com/oidc注: セキュリティ上の理由により、ISSUER_URI では HTTPS スキームを使用する必要があります。
    • OIDC_CLIENT_ID: OIDC IdP に登録されている OIDC クライアント ID。ID は、IdP によって発行された JWT の aud クレームと一致する必要があります。
    • WEB_SSO_ADDITIONAL_SCOPES: コンソール(連携)または gcloud CLI ブラウザベースのログイン用に OIDC IdP に送信する任意の追加スコープ
    • ATTRIBUTE_MAPPING: 属性マッピング。属性マッピングの例を次に示します。
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      この例では、OIDC アサーションの IdP 属性 subjectgroup1costcenter をそれぞれ google.subjectgoogle.groupsattribute.costcenter の各属性にマッピングしています。
    • ATTRIBUTE_CONDITION: 属性条件。例: assertion.role == 'gcp-users'この例の条件により、ロール gcp-users を持つユーザーのみがこのプロバイダを使用してログインできます。
    • JWK_JSON_PATH: ローカルにアップロードされた OIDC JWK へのパス(省略可)。このパラメータを指定しない場合、代わりに Google Cloud は IdP の /.well-known/openid-configuration パスを使用して公開鍵を含む JWK を取得します。ローカルにアップロードされた OIDC JWK の詳細については、OIDC JWK を管理するをご覧ください。
    コマンド レスポンスで、POOL_RESOURCE_NAME はプールの名前です。例: locations/global/workforcePools/enterprise-example-organization-employees

    接頭辞 gcp- は予約されているため、プールやプロバイダ ID では使用できません。

    OIDC 連携の場合は assertion.NAME を使用できます。これは、ID トークン ペイロードの同じ名前のクレーム値に等しい文字列です。

SAML Workforce プール プロバイダを作成する

  1. SAML IdP で、Google Cloud Workforce Identity 連携用の新しいアプリケーションを登録します。

  2. SAML アサーションのオーディエンスを設定します。通常、これは IdP 構成の SP Entity ID フィールドです。次の URL に設定する必要があります。

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
    
  3. コンソールへのユーザー アクセスを設定する場合は、SAML IdP で、リダイレクト URL または Assertion Consumer Service(ACS)の URL フィールドを次の URL に設定します。

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    コンソール ログインの構成の詳細については、コンソールへのユーザー アクセスを設定するをご覧ください。

  4. Google Cloud で、IdP の SAML メタデータ ドキュメントを使用して SAML Workforce Identity プール プロバイダを作成します。IdP から SAML メタデータ XML ドキュメントをダウンロードできます。ドキュメントには少なくとも次のものが含まれている必要があります。

    • IdP の SAML エンティティ ID。
    • IdP のシングル サインオン URL。
    • 少なくとも 1 つの署名公開鍵。署名鍵の詳細については、このガイドの後述の鍵の要件をご覧ください。

コンソール

Google Cloud コンソールを使用して SAML プロバイダを構成する手順は次のとおりです。

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

    [Workforce Identity プール] に移動

  2. [Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。

  3. [プロバイダ] テーブルで [プロバイダを追加] をクリックします。

  4. [プロトコルを選択] で、[SAML] を選択します。

  5. [プール プロバイダの作成] で、次の操作を行います。

    1. [名前] にプロバイダの名前を入力します。

    2. 省略可: [説明] にプロバイダの説明を入力します。

    3. [IdP メタデータ ファイル(XML)] で、このガイドの前半で生成したメタデータ XML ファイルを選択します。

    4. [有効なプロバイダ] が有効になっていることを確認します。

    5. [続行] をクリックします。

  6. [プロバイダの構成] で、次の操作を行います。

    1. [属性のマッピング] で、google.subject の CEL 式を入力します。

    2. 省略可: 他のマッピングを入力するには、[マッピングを追加] をクリックして他のマッピングを入力します。次に例を示します。

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      この例では、IdP 属性 assertion.subjectassertion.attributes['https://example.com/aliases']assertion.attributes.costcenter[0] を Google Cloud 属性 google.subjectgoogle.groupsgoogle.costcenter にそれぞれマッピングしています。

    3. 省略可: 属性条件を追加するには、[条件を追加] をクリックし、属性条件を表す CEL 式を入力します。たとえば、ipaddr 属性を特定の IP 範囲に制限するには、条件 assertion.attributes.ipaddr.startsWith('98.11.12.') を設定します。この例の条件により、98.11.12. で始まる IP アドレスを持つユーザーだけが、この Workforce プロバイダを使用してログインできます。

    4. [続行] をクリックします。

  7. プロバイダを作成するには、[送信] をクリックします。

gcloud

gcloud CLI を使用して SAML プロバイダを構成する手順は次のとおりです。

  gcloud iam workforce-pools providers create-saml PROVIDER_ID \
      --workforce-pool=WORKFORCE_POOL_ID \
      --display-name="DISPLAY_NAME" \
      --description="DESCRIPTION" \
      --idp-metadata-path=METADATA_FILE_PATH \
      --attribute-mapping="ATTRIBUTE_MAPPING" \
      --attribute-condition="ATTRIBUTE_CONDITION" \
      --location=global

次のように置き換えます。

  • PROVIDER_ID: プロバイダ ID。
  • WORKFORCE_POOL_ID: プール ID。
  • DISPLAY_NAME: プロバイダの表示名(例: idp-eu-employees
  • DESCRIPTION: Workforce Identity プール プロバイダの説明。例: IdP for Partner Example Organization EU employees
  • METADATA_FILE_PATH: SAML メタデータのファイルパス。
  • ATTRIBUTE_MAPPING: 属性マッピング。例:

    google.subject=assertion.subject,
    google.groups=assertion.attributes['https://example.com/aliases'],
    attribute.costcenter=assertion.attributes.costcenter[0]
    この例では、IdP 属性 assertion.subjectassertion.attributes['https://example.com/aliases']assertion.attributes.costcenter[0] を Google Cloud 属性 google.subjectgoogle.groupsgoogle.costcenter にそれぞれマッピングしています。

  • ATTRIBUTE_CONDITION: 属性条件。たとえば、ipaddr 属性を特定の IP 範囲に制限するには、条件 assertion.attributes.ipaddr.startsWith('98.11.12.') を設定します。この例の条件により、98.11.12. で始まる IP アドレスを持つユーザーだけが、この Workforce プロバイダを使用してログインできます。

プロバイダがリクエストの受け入れを開始するまでに数分かかることがあります。

SAML 連携の場合、属性のマッピングと条件で次のキーワードを使用できます。

  • assertion.subject: SAML アサーションの NameID 属性に等しい文字列
  • assertion.attributes.NAME: SAML アサーション内の同じ名前の属性値に等しい文字列リスト。

省略可: IdP から暗号化された SAML アサーションを受け入れる

SAML 2.0 IdP が Workforce Identity 連携で受け入れられる暗号化された SAML アサーションを生成できるようにするには、次のようにします。

  • Workforce Identity 連携で、次の操作を行います。
    • Workforce Identity プールのプロバイダ用に非対称鍵ペアを作成します。
    • 公開鍵を含む証明書ファイルをダウンロードします。
    • 公開鍵を使用して、発行する SAML アサーションが暗号化されるように SAML IdP を構成します。
  • IdP で次の操作を行います。
    • アサーション暗号化(トークン暗号化)を有効にします。
    • Workforce Identity 連携で作成した公開鍵をアップロードします。
    • IdP が暗号化された SAML アサーションを生成することを確認します。
SAML 暗号化プロバイダの鍵が構成されている場合でも、Workforce Identity 連携は平文のアサーションを処理できます。

Workforce Identity 連携の SAML アサーション暗号鍵を作成する

このセクションでは、Workforce Identity 連携で暗号化された SAML アサーションを受け入れる非対称鍵ペアの作成について説明します。

Google Cloud は秘密鍵を使用して、IdP が発行する SAML アサーションを復号します。SAML 暗号化で使用する非対称鍵ペアを作成するには、次のコマンドを実行します。詳細については、サポートされている SAML 暗号化アルゴリズムをご覧ください。

gcloud iam workforce-pools providers keys create KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider PROVIDER_ID \
    --location global \
    --use encryption \
    --spec KEY_SPECIFICATION

次のように置き換えます。

  • KEY_ID: 任意の鍵名
  • WORKFORCE_POOL_ID: プール ID
  • PROVIDER_ID: プロバイダ ID
  • KEY_SPECIFICATION: 鍵仕様(rsa-2048rsa-3072rsa-4096 のいずれか)。

鍵ペアを作成したら、次のコマンドを実行して、公開鍵を証明書ファイルにダウンロードします。秘密鍵にアクセスできるのは Workforce Identity 連携だけです。

gcloud iam workforce-pools providers keys describe KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider PROVIDER_ID \
    --location global \
    --format "value(keyData.key)" \
    > CERTIFICATE_PATH

次のように置き換えます。

  • KEY_ID: 鍵名
  • WORKFORCE_POOL_ID: プール ID
  • PROVIDER_ID: プロバイダ ID
  • CERTIFICATE_PATH: 証明書を書き込むパス(例: saml-certificate.cersaml-certificate.pem

暗号化された SAML アサーションを発行するように SAML 2.0 準拠の IdP を構成する

前の手順でダウンロードした公開証明書を使用して、発行する SAML アサーションを暗号化するように SAML IdP を構成します。具体的な手順については、IdP チームにお問い合わせください。

SAML アサーションを暗号化するように IdP を構成したら、IdP によって生成されるアサーションが実際に暗号化されていることを確認することをおすすめします。SAML アサーションの暗号化が構成されている場合でも、Workforce Identity 連携は平文のアサーションを処理できます。

Workforce Identity 連携の暗号鍵を削除する

SAML 暗号鍵を削除するには、次のコマンドを実行します。
  gcloud iam workforce-pools providers keys delete KEY_ID \
      --workforce-pool WORKFORCE_POOL_ID \
      --provider PROVIDER_ID \
      --location global

次のように置き換えます。

  • KEY_ID: 鍵名
  • WORKFORCE_POOL_ID: プール ID
  • PROVIDER_ID: プロバイダ ID

サポートされている SAML 暗号化アルゴリズム

Workforce Identity 連携は、次の主要なトランスポート アルゴリズムをサポートしています。

Workforce Identity 連携は、次のブロック暗号化アルゴリズムをサポートしています。

SAML X.509 署名鍵の要件

SAML X.509 署名鍵には、次の鍵仕様が適用されます。

  • X.509 v3 証明書でラップされた RSA 公開鍵。

  • 証明書の有効性の要件:

    • notBefore: 今後 7 日以内のタイムスタンプ
    • notAfter: 今後 20 年以内のタイムスタンプ
  • 推奨されるアルゴリズム:

Workforce Identity プール プロバイダは、一度に最大 3 つの署名鍵で構成できます。複数のキーが存在する場合、Google Cloud はそれらのキーを反復処理し、期限切れでないキーを使用してトークン交換リクエストを実行しようとします。

セキュリティのベスト プラクティスとして、他のサービスで同じ鍵ペアを再利用しないことを強くおすすめします。

鍵管理

IdP の署名鍵を更新する手順は次のとおりです。

  1. 新しい非対称鍵ペアを作成し、その鍵ペアで SAML ID プロバイダを構成します。最初は無効に設定し、後のステップで有効にします。

  2. IdP から SAML メタデータ XML ドキュメントをダウンロードします。

  3. SAML メタデータ ドキュメントを使用して、Workforce Identity プールのプロバイダ リソースを更新します。複数の鍵が存在する場合、Google Cloud は期限切れではない各鍵を反復処理し、トークン交換リクエストを実行しようとします。

    Workforce Identity プールのプロバイダを SAML メタデータで更新するには、次のコマンドを実行します。

    gcloud iam workforce-pools providers update-saml PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    次のように置き換えます。

    • PROVIDER_ID: プロバイダ ID
    • WORKFORCE_POOL_ID: Workforce Identity プールの ID
    • SAML_METADATA_FILE_PATH: SAML メタデータ ファイルのパス
  4. 前の手順で返されたオペレーションが完了するのを待ち(オペレーションが「完了」としてマークされるまで待ち)、SAML IdP で新しい署名鍵を有効にします。古い署名鍵は「非アクティブ」としてマークされています。IdP によって発行されたアサーションは、新しい鍵を使用して署名されます。

以下の手順は省略可能ですが、ベスト プラクティスとして行うことをおすすめします。

  1. 無効になった古い署名鍵を IdP から削除します。
  2. IdP から SAML メタデータ XML ドキュメントをダウンロードします。
  3. SAML メタデータ ドキュメントを使用して、Workforce Identity プールのプロバイダ リソースを更新します。Google Cloud では、期限切れの署名鍵で署名されたアサーションは拒否されます。ドキュメントを更新するには、次のコマンドを実行します。

    gcloud iam workforce-pools providers update-saml PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    次のように置き換えます。

    • PROVIDER_ID: プロバイダ ID
    • WORKFORCE_POOL_ID: Workforce Identity プールの ID
    • SAML_METADATA_FILE_PATH: SAML メタデータのパス

鍵削除の制約

Google Cloud では、削除された鍵で署名されたアサーションは拒否されます。

IAM ポリシーで Workforce プールユーザーを表す

次の表に、単一ユーザー、ユーザー グループ、特定のクレームを持つユーザー、または Workforce プールのすべてのユーザーにロールを付与する際に使用するプリンシパル ID を示します。

ID ID の形式
Workforce Identity プール内の単一の ID principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
グループ内のすべての Workforce ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
特定の属性値を持つすべての Workforce ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
Workforce Identity プール内のすべての ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

プリンシパルに IAM ロールを付与する

単一の ID、ID のグループ、またはプール全体などのプリンシパルにロールを付与できます。

プロジェクトのロールをプリンシパルに付与するには、次のコマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="ROLE" \
    --member="PRINCIPAL"

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • ROLE: 設定するロール
  • PRINCIPAL: プリンシパル。Workforce Identity 連携のプリンシパル ID をご覧ください。

次のコマンドでは、ストレージ管理者(roles/storage.admin)をグループ GROUP_ID 内のすべての ID に付与します。

gcloud projects add-iam-policy-binding my-project \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

プリンシパルの形式の詳細については、Workforce Identity 連携のプリンシパル ID をご覧ください。

ユーザーを削除する

Workforce Identity 連携は、連携ユーザー ID のユーザー メタデータとリソースを作成します。たとえば、IdP でユーザーを削除する場合は、Google Cloud でこれらのリソースも明示的に削除する必要があります。詳しくは、Workforce Identity 連携ユーザーとそのデータを削除するをご覧ください。

削除されたユーザーにリソースが引き続き関連付けられていることがあります。これは、ユーザーのメタデータとリソースの削除には長時間実行オペレーションが必要になるためです。ユーザー ID の削除を開始した後、削除前にユーザーが開始したプロセスは、プロセスが完了するかキャンセルされるまで引き続き実行されます。

次のステップ