サードパーティの ID プロバイダを構成する

以下でサポートされています。

Cloud Identity、Google Workspace、またはサードパーティの ID プロバイダ(Okta や Azure AD など)を使用してユーザー、グループ、認証を管理できます。

このページでは、Workforce Identity 連携を構成してサードパーティの ID プロバイダを使用する方法について説明します。Cloud Identity や Google Workspace の使用については、Google Cloud ID プロバイダを構成するをご覧ください。

Google の Workforce Identity 連携を使用すると、サービス アカウント キーを使用せずに、オンプレミスまたはマルチクラウドのワークロードに Google Cloud リソースへのアクセス権を付与できます。Workforce Identity 連携は、OpenID Connect(OIDC)をサポートする任意のサードパーティ ID プロバイダ(IdP)(Microsoft Azure、Okta、SAML 2.0 など)で使用できます。

Google Security Operations では、次の場合に Google の Workforce Identity 連携を SSO ブローカーとして使用する必要があります。

  • FedRAMP High(またはそれ以上)のコンプライアンス要件があるお客様。
  • Google Cloud で有効になっている Google Security Operations のエンタープライズ レベルのコントロールにアクセスしているお客様(Identity and Access Management(IAM)を使用したデータと機能のロールベースのアクセス制御(RBAC)など)。
  • Chronicle API へのプログラマティック アクセスにセルフサービスの認証情報管理を使用しているお客様。

Google Security Operations は、サービス プロバイダを起点とする(SP を起点とする)SAML SSO をサポートしています。これにより、ユーザーは直接 Google Security Operations に移動できます。Google Security Operations は、Google Cloud Identity and Access Management(IAM)の Workforce Identity 連携を通じて、サードパーティの ID プロバイダ(IdP)にリクエストを発行します。

IdP がユーザー ID を認証すると、ユーザーは認証アサーションとともに Google Security Operations にリダイレクトされます。Google Cloud の Workforce Identity 連携は、認証フローの仲介役として機能します。

Google Security Operations、Google Cloud IAM Workforce Identity 連携、IdP 間の通信

Google Security Operations、IAM Workforce Identity 連携、IdP 間の通信

通信の概要は次のとおりです。

  1. ユーザーが Google Security Operations に移動します。
  2. Google Security Operations は、Google Cloud Workforce Identity プールで IdP 情報を検索します。
  3. IdP にリクエストが送信されます。
  4. SAML アサーションは Google Cloud Workforce Identity プールに送信されます。
  5. 認証に成功すると、Google Security Operations は、Workforce Identity プールで Workforce プロバイダを構成したときに定義された SAML 属性のみを受信します。

Google Security Operations 管理者は、ID プロバイダでグループを作成し、アサーションでグループ メンバーシップ情報を渡すように SAML アプリケーションを構成してから、ユーザーとグループを Google Security Operations の IAM の事前定義ロールに関連付けます。

IdP を起点とするログイン(IdP ダッシュボードからログインを開始する)はサポートされていません。組織でこの機能が必要な場合は、Google Security Operations の担当者に連絡してこの機能をリクエストしてください。

このドキュメントでは、Google Cloud Workforce Identity 連携を使用してサードパーティ ID プロバイダ(IdP)による認証を設定する際の概要について説明します。このドキュメントの手順を完了すると、サードパーティの IdP を使用して Google Security Operations にアクセスし、Workforce Identity 連携を介して SAML SSO を使用して Google Security Operations へのアクセスを管理できるようになります。

始める前に

次の手順では、gcloud コマンドを使用して構成を行う方法について説明します。手順を Google Cloud コンソールで実行できる場合は、関連する IAM ドキュメントへのリンクが提供されます。

実装を計画する

次のセクションでは、このドキュメントの手順を実行する前に決定する必要がある事項と定義する情報について説明します。

Workforce Identity プールとワーカー プロバイダを定義する

このプロセスの一環として、認証フローの仲介者として Google Cloud Workforce Identity 連携を構成します。これを実現するために、次の Google Cloud リソースを作成します。

  • Workforce プール: Workforce Identity プールを使用すると、人材(従業員など)に Google Security Operations へのアクセス権を付与できます。
  • Workforce プロバイダ: Workforce プロバイダは、Workforce Identity プールのサブリソースです。1 つの IdP の詳細が保存されます。

Workforce Identity プール、Workforce プロバイダ、Google Security Operations インスタンス(単一のカスタマー サブドメインで識別)の関係は次のとおりです。

  • Workforce Identity プールは組織レベルで定義されます。
  • 各 Google Security Operations インスタンスには、Workforce Identity プールが構成され、関連付けられています。
  • 1 つの Workforce Identity プールに複数の Workforce プロバイダを設定できます。
  • 各 Workforce プロバイダは、サードパーティの IdP を Workforce Identity プールに統合します。
  • これらの手順で作成する Workforce Identity プールは、Google SecOps 専用にする必要があります。他の目的で複数の Workforce Identity プールを管理できますが、Google SecOps 用に作成された Workforce Identity プールは共有できません。
  • Workforce Identity プールは、Google SecOps にバインドされているプロジェクトを含む同じ Google Cloud 組織に作成することをおすすめします。

Workforce Identity プールと Workforce プロバイダに関する情報を事前に定義しておくと、時間を節約できます。この情報は、IdP SAML アプリケーションと Workforce Identity 連携の両方を構成するときに使用します。

次の ID の値を選択します。

  • Workforce Identity プール ID(WORKFORCE_POOL_ID): Workforce プールの範囲または目的を示す値を選択します。値は次の要件を満たす必要があります。
    • グローバルに一意でなければなりません。
    • 使用できるのは、小文字の [a-z]、数字 [0-9]、ダッシュ [-] のみです。
    • 先頭は小文字の [a-z] にする必要があります。
    • 末尾は小文字の [a-z] または数字 [0-9] にする必要があります。
    • 長さは 4~61 文字にできます。
  • Workforce Identity プールの表示名(WORKFORCE_POOL_DISPLAY_NAME): Workforce プールのわかりやすい名前を定義します。
  • Workforce Identity プールの説明(WORKFORCE_POOL_DESCRIPTION): Workforce プールの詳細な説明を定義します。
  • Workforce プロバイダ ID(WORKFORCE_PROVIDER_ID): それが表す IdP を示す値を選択します。値は次の要件を満たす必要があります。
    • 使用できるのは、小文字の [a-z]、数字 [0-9]、ダッシュ [-] のみです。
    • 長さは 4~32 文字にできます。
  • Workforce プロバイダの表示名(WORKFORCE_PROVIDER_DISPLAY_NAME): Workforce プロバイダには、わかりやすい名前を定義します。32 文字未満で指定してください。
  • Workforce プロバイダの説明(WORKFORCE_PROVIDER_DESCRIPTION): Workforce プロバイダの詳細な説明を定義します。

IdP でユーザー属性とグループを定義する

IdP で SAML アプリケーションを作成する前に、Google Security Operations の機能へのアクセスを構成するために必要なユーザー属性とグループを特定します。詳細については、IAM を使用した機能のアクセス制御を構成するIAM での Google Security Operations の権限をご覧ください。

この情報は、このプロセスの次のフェーズで必要になります。

  • SAML アプリケーションを構成するときに、計画時に定義したグループを作成します。アサーションでグループ メンバーシップを渡すように IdP SAML アプリケーションを構成します。

  • Workforce プロバイダを作成するときに、アサーション属性とグループを Google Cloud 属性にマッピングします。この情報は、ユーザーの ID の一部としてアサーション クレームで送信されます。

  • Google Security Operations でロールベースのアクセス制御を設定する場合は、ユーザー属性とグループ情報を使用して、Google Security Operations の機能へのアクセスを構成します。

    Google Security Operations には、それぞれ特定の機能へのアクセスを許可する複数の事前定義ロールが用意されています。IdP SAML アプリケーションで定義されたグループを、これらの事前定義ロールにマッピングできます。

SOAR 関連機能にアクセスできるユーザーとグループを構成する管理者用の IdP グループを作成してください。オンボーディング プロセスでこのグループ名を指定すると、このグループのユーザーは SOAR 関連機能のアクセス制御を設定できるようになります。

IdP を構成する

このセクションでは、Google Cloud Workforce Identity 連携と Google Security Operations と統合するために IdP SAML アプリケーションで必要な構成のみについて説明します。

  1. IdP で新しい SAML アプリケーションを作成します。

  2. 次の Assertion Consumer Service(ACS)URL を使用してアプリケーションを構成します。この URL は、サービス プロバイダによってはシングル サインオン URL とも呼ばれます。

    https://auth.backstory.chronicle.security/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    以下を置き換えます。

    • WORKFORCE_POOL_ID: Workforce Identity プールに定義した識別子。
    • WORKFORCE_PROVIDER_ID: Workforce プロバイダに定義した識別子。

      これらの値の説明については、実装を計画するをご覧ください。

  3. 次のエンティティ ID(SP エンティティ ID とも呼ばれる)を使用してアプリケーションを構成します。

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    以下を置き換えます。

    • WORKFORCE_POOL_ID: Workforce Identity プールに定義した識別子。
    • WORKFORCE_PROVIDER_ID: Workforce プロバイダに定義した識別子。
  4. SAML レスポンスで NameID フィールドが返されるように、IdP で名前 ID を構成します。

    これは、組織ポリシーをサポートする値(メールアドレスやユーザー名など)に設定できます。この値の構成については、IdP のドキュメントをご覧ください。この要件の詳細については、Workforce Identity 連携のトラブルシューティングをご覧ください。

  5. 必要に応じて、SAML アプリケーションでグループ属性を作成します。 これらは、IdP の実装を計画するときに定義しました。

  6. アプリケーションのメタデータ XML ファイルをダウンロードします。次のセクションでは、Cloud Shell を使用して、このファイルをローカル システムから Google Cloud のホーム ディレクトリにアップロードします。

Workforce Identity 連携を構成する

このセクションでは、前のセクションで作成した IdP SAML アプリケーションを使用して Workforce Identity 連携を構成するために必要な具体的な手順のみについて説明します。Workforce Identity プールの管理の詳細については、Workforce Identity プール プロバイダを管理するをご覧ください。

  1. Google Security Operations にバインドされたプロジェクトに対して必要な権限を持つユーザーとして Google Cloud コンソールを開きます。このユーザーはすでに特定または作成されています。始める前にをご覧ください。

  2. Cloud Shell セッションを開始する

  3. gcloud CLI を使用して実行されるオペレーションに課金され、割り当てられる Google Cloud プロジェクトを設定します。次の gcloud コマンドを使用します。

    gcloud config set billing/quota_project PROJECT_ID
    

    PROJECT_IDGoogle Security Operations 用に Google Cloud プロジェクトを構成するで構成した Google Security Operations にバインドされたプロジェクトのプロジェクト ID に置き換えます。プロジェクトを識別するフィールドの説明については、プロジェクトの作成と管理をご覧ください。

    割り当ての詳細については、次のドキュメントをご覧ください。

    エラーが発生した場合は、割り当てエラーをご覧ください。

Workforce Identity プールを作成して構成する

Workforce Identity プールを構成すると、外部 ID プロバイダ(IdP)と統合するか、Google Workspace または Cloud Identity と統合できます。

  1. Workforce Identity プールを作成します。

    • サードパーティの IdP 用の Workforce Identity プールを作成します。

      次の gcloud コマンドを使用します。

      gcloud iam workforce-pools create WORKFORCE_POOL_ID\
        --location="global" \
        --organization="ORGANIZATION_ID" \
        --description="WORKFORCE_POOL_DESCRIPTION" \
        --display-name="WORKFORCE_POOL_DISPLAY_NAME"
      

      以下を置き換えます。

      • WORKFORCE_POOL_ID: Workforce Identity プールに定義した識別子。
      • ORGANIZATION_ID: 数値の組織 ID
      • WORKFORCE_POOL_DESCRIPTION: Workforce Identity プールの説明を指定します。
      • WORKFORCE_POOL_DISPLAY_NAME: Workforce Identity プールにユーザー フレンドリーな名前を指定します。

      Google Cloud コンソールを使用してこの構成を行うには、プールを作成するをご覧ください。

      Google Workspace または Cloud Identity を使用して Google SecOps にログインする場合は、--allowed-services domain=backstory.chronicle.security フラグと --disable-programmatic-signin フラグをコマンドに追加します。

      gcloud iam workforce-pools create WORKFORCE_POOL_ID\
            --location="global" \
            --organization="ORGANIZATION_ID" \
            --description="WORKFORCE_POOL_DESCRIPTION" \
            --display-name="WORKFORCE_POOL_DISPLAY_NAME" \
            --allowed-services domain=backstory.chronicle.security \
            --disable-programmatic-signin
      

      このコマンドは、Google Cloud へのログインに使用できない Workforce プールを作成します。これらのシナリオに対処するには、これらのフラグを使用する必要があります。

  2. コマンドラインで Chronicle API を有効にするように求められたら、Yes と入力します。

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

  1. [その他] > をクリックして、SAML アプリケーション メタデータ ファイルを Cloud Shell のホーム ディレクトリにアップロードします。ファイルをアップロードできるのはホーム ディレクトリに限られます。Cloud Shell とローカル ワークステーションの間でファイルを転送するその他のオプションについては、Cloud Shell からファイルとフォルダをアップロードおよびダウンロードするをご覧ください。

  2. Cloud Shell で SAML アプリケーション メタデータ XML ファイルをアップロードしたディレクトリ パスをメモします。このパスは次のステップで必要になります。

  3. Workforce Identity プール プロバイダを作成し、IdP の詳細を指定します。

    次の gcloud コマンドを使用します。

    gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
      --workforce-pool="WORKFORCE_POOL_ID" \
      --location="global" \
      --display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \
      --description="WORKFORCE_PROVIDER_DESCRIPTION" \
      --idp-metadata-path=PATH_TO_METADATA_XML \
      --attribute-mapping="ATTRIBUTE_MAPPINGS"
    

    これらの値の詳細については、実装を計画するをご覧ください。

    以下を置き換えます。

    • WORKFORCE_PROVIDER_ID: Workforce プロバイダ ID に定義した値。
    • WORKFORCE_POOL_ID: Workforce Identity プール ID に定義した値。
    • WORKFORCE_PROVIDER_DISPLAY_NAME: Workforce プロバイダのわかりやすい名前。32 文字未満で指定してください。
    • WORKFORCE_PROVIDER_DESCRIPTION: Workforce プロバイダの説明。
    • PATH_TO_METADATA_XML: Cloud Shell を使用してアップロードしたアプリケーション メタデータ XML ファイルの Cloud Shell ディレクトリの場所(例: /path/to/sso_metadata.xml)。
    • ATTRIBUTE_MAPPINGS: アサーション属性を Google Cloud 属性にマッピングする方法の定義。これらのマッピングの解釈には Common Expression Language が使用されます。次に例を示します。

      google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.groups

      上の例では、次の属性がマッピングされています。

      • assertion.subjectgoogle.subject にマッピング。これは最小要件です。
      • assertion.attributes.name[0]google.display_name にマッピング。
      • assertion.attributes.groupsgoogle.groups 属性に変更します。

      Google Security Operations(Google Security Operations SIEM と Google Security Operations SOAR を含む)でこの構成を行う場合は、Google Security Operations SOAR で必要な次の属性もマッピングする必要があります。

      • attribute.first_name
      • attribute.last_name
      • attribute.user_email
      • google.groups

      詳細については、Google Security Operations SOAR のユーザーのプロビジョニングとマッピングをご覧ください。

      デフォルトでは、Google Security Operations は、大文字と小文字を区別しないアサーション属性名(_assertion.attributes.groups__assertion.attributes.idpGroup__assertion.attributes.memberOf_)からグループ情報を読み取ります。

      アサーションでグループ メンバー情報を渡すように SAML アプリケーションを構成する場合は、グループ属性名を _group__idpGroup_、または _memberOf_ に設定します。

      コマンドの例では、assertion.attributes.groupsassertion.attributes.idpGroup または assertion.attributes.memberOf に置き換えることができます。これは、IdP SAML アプリケーションで構成し、アサーションでグループ メンバーシップ情報を含むグループ属性の名前を表します。

      次の例では、複数のグループを google.groups 属性にマッピングしています。

      google.groups="(has(assertion.attributes.idpGroup) ? assertion.attributes.idpGroup : []) + (has(assertion.attributes.groups) ? assertion.attributes.groups : []) + (has(assertion.attributes.memberof) ? assertion.attributes.memberof : [])"

      次の例では、特殊文字を含むグループ http://schemas.xmlsoap.org/ws/2005/05/identity/claims/groupgoogle.groups にマッピングしています。

      google.groups="assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group']"

      属性のマッピングの詳細については、属性のマッピングをご覧ください。

      Google Cloud コンソールを使用してこの構成を行うには、SAML プロバイダを作成するをご覧ください。

Google Security Operations へのログインを有効にするためのロールを付与する

次の手順では、ユーザーが Google Security Operations にログインできるように IAM を使用して特定のロールを付与する方法について説明します。先ほど作成した Google Security Operations にバインドされた Google Cloud プロジェクトを使用して構成を行います。

この例では、gcloud コマンドを使用します。Google Cloud コンソールを使用するには、単一のロールを付与するをご覧ください

  1. Google Security Operations アプリケーションへのアクセス権を付与するユーザーまたはグループに Chronicle API 閲覧者(roles/chronicle.viewerロールを付与します。

    次の例では、前に作成した Workforce Identity プールと Workforce プロバイダを使用して管理される ID に Chronicle API 閲覧者ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role roles/chronicle.viewer \
      --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/*"
    

    以下を置き換えます。

    特定のグループに Chronicle API 閲覧者のロールを付与するには、次のコマンドを実行します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role roles/chronicle.viewer \
      --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    GROUP_IDは、マッピングされた google.groups クレーム内のグループです。

  2. 組織の要件を満たすように IAM ポリシーを追加で構成します。

Google Security Operations の機能アクセス制御を確認または構成する

google.groups 属性にマッピングされた属性またはグループを使用して Workforce Identity 連携を構成した場合、この情報は Google Security Operations に渡され、Google Security Operations 機能へのロールベースのアクセス制御(RBAC)を構成できます。

Google Security Operations インスタンスに既存の RBAC 構成がある場合は、元の構成が想定どおりに機能することを確認します。

アクセス制御をまだ構成していない場合は、機能へのアクセスを制御する方法について、IAM を使用して機能アクセス制御を構成するをご覧ください。

Workforce Identity 連携の構成を変更する

Workforce Identity プールまたは Workforce プロバイダを更新する必要がある場合は、構成の更新について Workforce Identity プール プロバイダの管理をご覧ください。

SAML 従業員プール プロバイダの作成鍵管理セクションで、IdP 署名鍵を更新してから、最新のアプリケーション メタデータ XML ファイルで Workforce プロバイダ構成を更新する方法について説明しています。

以下に、ワークフォース プロバイダの構成を更新する gcloud コマンドの例を示します。

gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
  --workforce-pool=WORKFORCE_POOL_ID \
  --location="global" \
  --display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \
  --description="WORKFORCE_PROVIDER_DESCRIPTION" \
  --idp-metadata-path=PATH_TO_METADATA_XML \
  --attribute-mapping="ATTRIBUTE_MAPPINGS"

以下を置き換えます。

  • WORKFORCE_PROVIDER_ID: Workforce プロバイダ ID に定義した値。
  • WORKFORCE_POOL_ID: Workforce Identity プール ID に定義した値。
  • WORKFORCE_PROVIDER_DISPLAY_NAME: Workforce プロバイダのわかりやすい名前。値は 32 文字未満で指定してください。
  • WORKFORCE_PROVIDER_DESCRIPTION: Workforce プロバイダの説明。
  • PATH_TO_METADATA_XML: 更新されたアプリケーション メタデータ XML ファイルの場所(例: /path/to/sso_metadata_updated.xml)。
  • ATTRIBUTE_MAPPINGS: Google Cloud 属性にマッピングされたアサーション属性。次に例を示します。

    google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.memberOf

Google SecOps RBAC が引き続き期待どおりに機能するように、google.groups 属性を Google SecOps でロールの定義に使用されるすべてのグループにマッピングします。

構成に関する問題のトラブルシューティング

このプロセスでエラーが発生した場合は、Workforce Identity 連携のトラブルシューティングで一般的な問題を解決してください。次のセクションでは、このドキュメントの手順を実行する際に発生する一般的な問題について説明します。

それでも問題が解決しない場合は、Google SecOps の担当者に連絡して、Chrome ネットワーク ログファイルをお知らせください。

Workforce Identity プール プロバイダを作成するときに command not found エラーが発生する

Workforce Identity プール プロバイダを作成し、IdP の詳細を指定するときに、次のエラーが発生します。

Error: bash: --attribute-mapping=google.subject=assertion.subject,
google.display_name=assertion.attributes.name[0],
google.groups=assertion.attributes.groups: command not found

PATH_TO_METADATA_XML が、SAML アプリケーション メタデータ XML ファイルを Cloud Shell のホーム ディレクトリにアップロードした場所であることを確認します。

The caller does not have permission エラー

gcloud projects add-iam-policy-binding コマンドを実行してユーザーまたはグループにロールを付与すると、次のエラーが発生します。

ERROR: (gcloud.organizations.add-iam-policy-binding) User [ ] does not have
permission to access organizations instance [538073083963:getIamPolicy]
(or it may not exist): The caller does not have permission

必要な権限があることを確認します。詳細については、必要なロールをご覧ください。

次のステップ

このドキュメントの手順を完了したら、以下のことを行います。