PingFederate を使用して Workforce Identity 連携を構成する

このドキュメントでは、PingFederate ID プロバイダ(IdP)を使用して Workforce Identity 連携を構成し、 へのアクセスを管理する方法について説明します。 Google CloudPingFederate IdP を構成すると、連携ユーザーは SAML 2.0 プロトコルを使用して Workforce Identity 連携をサポートする サービスにアクセスできます。 Google Cloud

始める前に

  1. 組織を設定していることを確認します。 Google Cloud
  2. Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。

    gcloud init

    外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります

  3. SAML 2.0 プロトコルを使用する PingFederate アプリケーションを設定するには、PingFederate で次の操作を行います。

    1. PingFederate IdP の SAML 2.0 エンティティ ID を設定します。詳細については、連携情報の指定をご覧ください。
    2. SAML 2.0 SP 接続を作成します。SP 接続タイプの選択を参照して、次の操作を行います。

      1. In [Connection Type], select [Browser SSO Profiles] and [SAML 2.0 protocol].
      2. [Import Metadata] で [None] を選択します。
    3. [General Info] で、[Partner's Entity ID (Connection ID)] を次のように設定します。

      https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      
    4. [SAML Profiles] で、[SP-initiated SSO] を有効にします。IdP で開始されたシングル サインオン(SSO)も使用する場合は、有効にすることもできます。

    5. [Attribute Contract] で、アサーションで渡すカスタム属性(メールやグループなど)を定義します。これらの属性は、後でアクセス管理ポリシーを作成するために使用できます。 Google Cloud

    6. In [Attribute Contract Fulfillment] で、SAML_SUBJECT がユーザーごとに一意の値を持つフィールドにマッピングされていることを確認します。たとえば、メールアドレスは通常、ユーザーごとに一意で、変更されることはありません。また、アクセス管理ポリシーで特定のユーザーを参照するために使用されることがよくあります。 Google Cloud

    7. コンソール(連携)ログインを設定するには、[Assertion Consumer Service URL] に次のエンドポイント URL を追加します。

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

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

      • WORKFORCE_POOL_ID: 前に作成した Workforce プールの ID。
      • WORKFORCE_PROVIDER_ID: 後で作成する Workforce プロバイダの ID。
    8. このエンドポイントの [Binding] を [POST] に設定します。

    9. コンソール(連携)ログインを有効にするには、[Allowable SAML Bindings] で [Redirect] を選択します。

    10. [**Signature Policy**] で、[**Sign Response As Required**] を選択します。

    11. 接続を保存して有効にします。

    属性を使用する

    このセクションでは、SAML アサーションの属性を使用する方法について説明します。

    属性契約を使用して、生成された SAML アサーションのカスタム属性を指定します。 属性を構成したら、それらを使用してアクセス管理ポリシーを作成できます。 Google Cloud 属性契約の詳細については、PingFederate サーバーのドキュメントの属性契約をご覧ください。

    たとえば、このガイドでは、PingOne を PingFederate のデータストアとして使用し、PingOne データストアのユーザー属性を使用して、emailfirstName、および groups の属性契約を次のようにマッピングします。

    属性契約
    email email
    firstName name.given
    groups memberOfGroupIDs

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

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

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

    1. SAML アプリケーションを構成するには、次の操作を行います。

      gcloud

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

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

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

      • WORKFORCE_PROVIDER_ID: プロバイダ ID。
      • WORKFORCE_POOL_ID: Workforce Identity プールの ID。
      • DISPLAY_NAME: 表示名。
      • DESCRIPTION: 説明。
      • XML_METADATA_PATH: PingFederate の XML 形式のメタデータ ファイルのパス。
      • ATTRIBUTE_MAPPING属性マッピング。例: google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0]
      • ATTRIBUTE_CONDITION:オプションの属性条件。たとえば、ipaddr属性を特定の IP 範囲に制限するには、条件をassertion.ipaddr.startsWith('98.11.12.')に設定します。

      このコマンドは、SAML アサーションの subjectgroupsdepartment を、それぞれ google.subjectgoogle.groupsattribute.department の属性に割り当てます。また、属性条件は、特定の IP 範囲内のユーザーのみがこの Workforce プロバイダを使用してログインできるようにします。

      コンソール

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

      1. コンソールで、[Workforce Identity プール] ページに移動します: Workforce Identity プールに移動 Google Cloud
      2. [Workforce Identity プール] テーブルで、プロバイダを作成するプールを選択します。
      3. [プロバイダ] セクションで [プロバイダを追加] をクリックします。
      4. [プロバイダ ベンダーを選択] リストで、[汎用 ID プロバイダ] を選択します。
      5. [**認証プロトコルを選択する**] で、[**SAML**] を選択します。
      6. [プロバイダを作成する] セクションで、次の操作を行います。
        1. [**名前**] にプロバイダの名前を入力します。
        2. [IDP メタデータ ファイル(XML)] で、PingFederate のメタデータ XML ファイルを選択します。
        3. [続行] をクリックします。
      7. [プロバイダ情報を共有する] セクションで [続行] をクリックします。
      8. [プロバイダを構成する] セクションで、次の操作を行います。

        1. [属性のマッピング] で、google.subject の CEL 式を入力します(例: assertion.subject)。
        2. 省略可: 他のマッピングを入力するには、[マッピングを追加] をクリックして他のマッピングを入力します。次に例を示します。

          google.subject=assertion.subject,
          google.groups=assertion.attributes['https://example.com/aliases'],
          attribute.costcenter=assertion.attributes.costcenter[0]
          
      9. 詳細な監査ロギングを有効にするには、[詳細なロギング] で [属性値の監査ロギングを有効にする] 切り替えボタンをクリックします。

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

    リソースへのアクセスを管理する Google Cloud

    このセクションでは、PingFederate ユーザーの Google Cloud リソースへのアクセスを管理する方法について説明します。

    このガイドで使用されているサンプル プロジェクトは、Workforce Identity 連携の設定に使用したプロジェクトと異なる場合があります。

    単一の ID、ID のグループ、プール全体でロールを管理できます。詳細については、 許可ポリシーの Workforce プリンシパル ID をご覧ください。

    マッピングされた部門属性を使用する

    TEST_PROJECT_ID プロジェクトの特定の部門内のすべての ID にストレージ管理者ロール(roles/storage.admin)を付与するには、次のコマンドを実行します。

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
    

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

    • TEST_PROJECT_ID: プロジェクト ID。
    • WORKFORCE_POOL_ID: Workforce Identity プールの ID。
    • DEPARTMENT_VALUE: マッピングされた attribute.department の値。

    マッピングされたグループを使用する

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

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

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

    • TEST_PROJECT_ID: プロジェクト ID。
    • WORKFORCE_POOL_ID: Workforce Identity プールの ID。
    • GROUP_ID: マッピングされた google.groups クレーム内のグループ。

    ログインしてアクセスをテストする

    このセクションでは、Workforce Identity プールユーザーとしてログインし、アクセスをテストします。

    ログイン

    コンソール(連携)ログイン

    Google Cloud Workforce Identity 連携コンソール(コンソール(連携))にログインするには、次の操作を行います。

    1. コンソール(連携)のログインページに移動します。

      コンソール(連携)に移動

    2. プロバイダ名を入力します。形式は次のとおりです。
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. プロンプトが表示されたら、PingFederate の認証情報を入力します。

    gcloud CLI ブラウザベースのログイン

    ブラウザベースのログインフローを使用して gcloud CLI にログインするには:

    次のコマンドを実行してログイン構成ファイルを作成します。

    Linux / macOS

    gcloud iam workforce-pools create-login-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --output-file=LOGIN_CONFIG_PATH

    Windows(PowerShell)

    gcloud iam workforce-pools create-login-config `
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID `
        --output-file=LOGIN_CONFIG_PATH

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

    • WORKFORCE_POOL_ID: Workforce Identity 連携プール ID
    • WORKFORCE_PROVIDER_ID: Workforce Identity 連携プロバイダ ID
    • LOGIN_CONFIG_PATH: ログイン構成ファイルの書き込み先パス 。例: login-config.json

    ログイン構成ファイルには、gcloud CLI でブラウザベースの認証フローを有効にし、Workforce Identity プール プロバイダで構成された IdP にオーディエンスを設定するために使用するエンドポイントが含まれています。ファイルに機密情報は含まれていません。

    ログイン構成ファイルの内容は次のようになります。

    {
      "universe_domain": "googleapis.com",
      "universe_cloud_web_domain": "cloud.google",
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.google/authorize",
      "token_url": "https://sts.googleapis.com/v1/oauthtoken",
      "token_info_url": "https://sts.googleapis.com/v1/introspect"
    }

    環境変数、アクティブな gcloud CLI 構成のプロパティを使用してログイン構成ファイルを指定するか、gcloud auth login コマンドで直接使用します:

    環境変数

    環境変数でログイン構成ファイルを使用するには、次の手順を完了します。

    1. 環境変数 CLOUDSDK_AUTH_LOGIN_CONFIG_FILE をログイン構成ファイルのパスに設定します。
    2. 次のコマンドを実行します。

      gcloud auth login
    3. gcloud CLI は環境変数を参照してログイン 構成ファイルを見つけ、認証プロセスを開始します。ブラウザベースの フローに沿って認証を行い、今後のコマンドでリソースにアクセスできるように gcloud CLI を承認します。

    gcloud auth login コマンドでログイン構成ファイルの使用を停止するには、CLOUDSDK_AUTH_LOGIN_CONFIG_FILE 環境変数をクリアします。

    gcloud CLI 構成

    gcloud CLI 構成プロパティでログイン構成ファイルを使用するには、 次の手順を完了します。

    1. アクティブな gcloud CLI 構成の auth/login_config_file プロパティを次のコマンドを使用してログイン構成ファイルのパスに設定します。

      gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
    2. 次のコマンドを実行します。

      gcloud auth login
    3. gcloud CLI は構成プロパティを参照してログイン 構成ファイルを見つけ、認証プロセスを開始します。ブラウザベースの フローに沿って認証を行い、今後のコマンドでリソースにアクセスできるように gcloud CLI を承認します。

    gcloud auth login コマンドでログイン構成ファイルの使用を停止するには、次のコマンドを使用してプロパティの設定を解除します。

    gcloud config unset auth/login_config_file

    gcloud auth login

    `gcloud auth login command` コマンドでログイン構成ファイルを直接使用するには、次の手順を完了します。

    • ログイン構成ファイルの作成時に --activate フラグを使用した場合は、次のコマンドを実行します。

      gcloud auth login
    • ログイン構成ファイルの作成時に --activate フラグを使用しなかった場合は、次のコマンドを実行します。

      Linux / macOS

      gcloud auth login \
          --login-config=LOGIN_CONFIG_PATH

      Windows(PowerShell)

      gcloud auth login `
          --login-config=LOGIN_CONFIG_PATH

      LOGIN_CONFIG_PATH は、ログイン構成ファイルのパスに置き換えます。

    gcloud auth login コマンドは、アクセス 認証情報をホーム ディレクトリに保存します。認証されたプリンシパルは、アクティブな gcloud CLI 構成のアクティブなプリンシパルになります。 オーバーライドしない限り、gcloud CLI は 保存された認証情報を使用して にアクセスします Google Cloud.

    gcloud CLI ヘッドレス ログイン

    SAML プロトコルを使用して gcloud CLI で PingFederate にログインするには、次の操作を行います。

    1. PingFederate アプリにユーザーをログインさせ、SAML レスポンスを取得します。
    2. PingFederate から返された SAML レスポンスをローカルマシンの安全な場所に保存します。パスを環境変数に保存します。例: SAML_ASSERTION_PATH=/path/to/assertion.xml
    3. 構成ファイルを生成します。

      gcloud iam workforce-pools create-cred-config \
          locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
          --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
          --credential-source-file=SAML_ASSERTION_PATH \
          --workforce-pool-user-project=PROJECT_ID \
          --output-file=config.json
      

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

      • SAML_ASSERTION_PATH: SAML アサーション ファイルのパス。
      • PROJECT_ID: プロジェクト ID。
    4. 生成された構成ファイルは次のようになります。

      {
        "type": "external_account",
        "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
        "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
        "token_url": "https://sts.googleapis.com/v1/token",
        "credential_source": {
          "file": "SAML_ASSERTION_PATH"
        },
        "workforce_pool_user_project": "PROJECT_ID"
      }
      
    5. トークン交換を使用して gcloud CLI にログインするには、次のコマンドを実行します。

      gcloud auth login --cred-file=config.json
      

      gcloud は、PingFederate の認証情報を一時的な Google Cloud アクセス トークンと透過的に交換して、 に対する他の gcloud 呼び出しを許可します Google Cloud。出力は次のようになります。

      Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

    6. 認証されたアカウントとアクティブなアカウントを一覧表示するには、次のコマンドを実行します。

      gcloud auth list
      

    アクセスをテストする

    Workforce Identity 連携をサポートする Google Cloud サービスと、アクセス権を持つ対象にアクセスできます。このガイドでは、プロジェクト TEST_PROJECT_ID の特定の部門またはグループ内のすべての ID にストレージ管理者ロールを付与しました。Cloud Storage バケットを一覧表示して、アクセスできることをテストできます。

    コンソール(連携)ログイン

    コンソール(連携)でアクセスを確認するには、次の操作を行います。

    1. Cloud Storage ページに移動
    2. プロジェクト TEST_PROJECT_ID の既存バケットの一覧が表示できることを確認します。

    gcloud CLI

    アクセス権を持っているプロジェクトの Cloud Storage バケットとオブジェクトを一覧表示するには、次のコマンドを実行します。

    gcloud alpha storage ls --project="TEST_PROJECT_ID"
    

    プリンシパルには、gcloud CLI セッションで設定されたプロジェクト(PROJECT_ID)に対する serviceusage.services.use 権限が必要です。

    次のステップ