Google Security Operations 用にサードパーティ ID プロバイダを構成する
Google の Workforce Identity 連携機能を使用すると、サービス アカウント キーを使用せずに、Google Cloud リソースへのアクセス権を、オンプレミスまたはマルチクラウドのワークロードに付与できます。Workforce Identity 連携は、OpenID Connect(OIDC)をサポートする任意の ID プロバイダ(IdP)(Microsoft Azure、Okta、SAML 2.0 など)で使用できます。
Google Security Operations では、次の場合に、デフォルトの SSO ブローカーとして Google の Workforce Identity 連携を使用する必要があります。
- FedRAMP High(またはそれ以上)のコンプライアンス要件のあるお客様。
- Google Cloud で有効になっている Google Security Operations でエンタープライズ レベルの制御(Identity and Access Management(IAM)を使用したデータと機能のロールベースのアクセス制御(RBAC)など)にアクセスしているお客様。
- Google Security Operations API へのプログラムによるアクセスにセルフサービス認証情報管理を使用しているお客様。
Google Security Operations は、サービス プロバイダを起点とする(SP を起点とする)SAML SSO をサポートしています。これにより、ユーザーは直接 Google セキュリティ オペレーションに移動できます。Google Security Operations は、Google Cloud Identity and Access Management(IAM)の Workforce Identity 連携を介してサードパーティ ID プロバイダ(IdP)にリクエストを発行します。
IdP でユーザー ID が認証されると、ユーザーは認証アサーションとともに Google セキュリティ オペレーションに戻ります。Google Cloud Workforce Identity 連携は、認証フローの仲介役として機能します。
Google Security Operations、IAM Workforce Identity 連携、IdP 間の通信
コミュニケーションの概要は次のとおりです。
- ユーザーが Google Security Operations に移動します。
- Google Security Operations は、Google Cloud の Workforce Identity プールで IdP 情報を検索します。
- リクエストが IdP に送信されます。
- SAML アサーションは、Google Cloud の Workforce Identity プールに送信されます。
- 認証が成功すると、Google Security Operations は、Workforce Identity プールで Workforce プロバイダを構成したときに定義された SAML 属性のみを受け取ります。
IdP を起点とするログイン(IdP ダッシュボードからログインを開始する)はサポートされていません。組織でこの機能が必要な場合は、Google セキュリティ運用の担当者に連絡してこの機能をリクエストしてください。
このドキュメントでは、Google Cloud Workforce Identity 連携を使用してサードパーティの ID プロバイダ(IdP)を介した認証を設定する手順の概要を説明します。このドキュメントの手順を行うと、サードパーティの IdP を使用して Google Security Operations にアクセスし、Workforce Identity 連携を介して SAML SSO を使用して Google Security Operations へのアクセスを管理できます。
始める前に
- Cloud Shell、
gcloud
コマンド、Google Cloud コンソールに精通している必要があります。 - Google Security Operations の Google Cloud プロジェクトを構成するの手順を行い、Google Security Operations にバインドするプロジェクトを設定します。
- Google Cloud Workforce Identity 連携について十分に理解してください。
- このドキュメントの手順を実行する権限があることを確認します。オンボーディング プロセスの各フェーズに必要な権限については、必要なロールをご覧ください。
次の手順では、gcloud
コマンドを使用して構成を実行する方法について説明します。手順を Google Cloud コンソールで実行できる場合は、関連する IAM ドキュメントへのリンクが提供されます。
実装を計画する
次のセクションでは、このドキュメントの手順を実行する前に行う必要がある決定と情報について説明します。
Workforce Identity プールとワーカー プロバイダを定義する
このプロセスの一環として、Google Cloud Workforce Identity 連携を認証フローの中継点として構成します。これを行うには、次の Google Cloud リソースを作成します。
- Workforce Identity プール: 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 連携の両方を構成するときに使用します。
次の識別子の値を選択します。
- 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 セキュリティ オペレーションの権限をご覧ください。
この情報は、このプロセスの次の段階で必要になります。
SAML アプリケーションを構成する場合は、計画中に定義されたグループを作成します。アサーションでグループ メンバーを渡すように IdP SAML アプリケーションを構成します。
ワーカー プロバイダを作成するときに、アサーションの属性とグループを Google Cloud の属性にマッピングします。この情報は、ユーザーの ID の一部としてアサーション クレームで送信されます。
Google Security Operations で役割ベースのアクセス制御を設定する場合は、ユーザー属性とグループ情報を使用して Google Security Operations 機能へのアクセスを構成します。
Google Security Operations には、それぞれが特定の機能へのアクセスを許可する複数の事前定義ロールが用意されています。IdP SAML アプリケーションで定義されたグループを、これらの事前定義ロールにマッピングできます。
IdP を構成する
このセクションでは、Google Cloud Workforce Identity 連携および Google Security Operations と統合するために IdP SAML アプリケーションで必要な特定の構成についてのみ説明します。
IdP で新しい SAML アプリケーションを作成します。
次の 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 プロバイダに定義した識別子。これらの値の説明については、実装を計画するをご覧ください。
次のエンティティ 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 プロバイダに定義した識別子。
IdP で名前識別子を構成して、SAML レスポンスで
NameID
フィールドが返されるようにします。これは、組織ポリシーをサポートする値(メールアドレスやユーザー名など)に設定できます。この値の設定については、IdP のドキュメントをご覧ください。この要件の詳細については、Workforce Identity 連携のトラブルシューティングをご覧ください。
必要に応じて、SAML アプリケーションでグループ属性を作成します。 これらは IdP の実装を計画したときに定義したものです。
アプリケーション メタデータ XML ファイルをダウンロードします。次のセクションでは、Cloud Shell を使用して、ローカル システムから Google Cloud ホーム ディレクトリにこのファイルをアップロードします。
Workforce Identity 連携を構成する
このセクションでは、前のセクションで作成した IdP SAML アプリケーションと Workforce Identity 連携を構成するために必要な特定の手順のみについて説明します。 Workforce Identity プールの管理の詳細については、Workforce Identity プール プロバイダを管理するをご覧ください。
Google セキュリティ オペレーションにバインドされたプロジェクトに対して必要な権限を持つユーザーとして Google Cloud コンソールを開きます。このユーザーはすでに特定または作成されています。始める前にをご覧ください。
Cloud Shell セッションを開始する
gcloud CLI を使用して実行されるオペレーションに課金され、割り当てられる Google Cloud プロジェクトを設定します。たとえば、次の
gcloud
コマンドを使用します。gcloud config set billing/quota_project PROJECT_ID
PROJECT_ID
は、Google Security Operations 用に Google Cloud プロジェクトを構成するで作成した、Google Security Operations にバインドされたプロジェクトのプロジェクト ID に置き換えます。プロジェクトを識別するフィールドの詳細については、プロジェクトの作成と管理をご覧ください。割り当ての詳細については、次のドキュメントをご覧ください。
エラーが発生した場合は、割り当てエラーをご覧ください。
Workforce Identity プールを作成して構成する
Workforce Identity プールを構成すると、外部 ID プロバイダ(IdP)と統合するか、Google Workspace または Cloud Identity と統合できます。
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
: 数値の組織 IDWORKFORCE_POOL_DESCRIPTION
: Workforce Identity プールの説明を指定します。WORKFORCE_POOL_DISPLAY_NAME
: Workforce Identity プールにユーザー フレンドリーな名前を指定します。
Google Workspace または Cloud Identity の Workforce Identity プールを作成します。
Google Workspace または Cloud Identity を IdP として使用する場合は、コマンドに
--allowed-services domain=backstory.chronicle.security
フラグを追加します。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
Google Cloud コンソールを使用してこの構成を行うには、プールの作成をご覧ください。
コマンドラインで Chronicle API を有効にするように求められたら、「
Yes
」と入力します。
Workforce Identity プロバイダを作成する
SAML アプリケーション メタデータ ファイルを Cloud Shell ホーム ディレクトリにアップロードするには、> をクリックします。ファイルはホーム ディレクトリにのみアップロードできます。Cloud Shell とローカル ワークステーションの間でファイルを転送するその他のオプションについては、Cloud Shell からファイルとフォルダをアップロードおよびダウンロードするをご覧ください。
その他アイコンCloud Shell で SAML アプリケーション メタデータ XML ファイルをアップロードしたディレクトリ パスをメモします。このパスは次のステップで必要になります。
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
: 従業員プロバイダの説明。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.subject
はgoogle.subject
にマッピング。これは最小要件です。assertion.attributes.name[0]
はgoogle.display_name
にマッピング。assertion.attributes.groups
:google.groups
属性。
Google Security Operations SIEM や Google Security Operations SOAR を含む Google Security Operations に対してこの構成を行う場合は、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.groups
をassertion.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/group
をgoogle.groups
にマッピングしています。google.groups="assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group']"
属性のマッピングの詳細については、属性のマッピングをご覧ください。
Google Cloud コンソールを使用してこの構成を行うには、SAML プロバイダを作成するをご覧ください。
Google セキュリティ オペレーションへのログインを許可するロールを付与する
次の手順は、IAM を使用して特定のロールを付与し、ユーザーが Google セキュリティ オペレーションにログインできるようにする方法について説明します。前の手順で作成した Google セキュリティ オペレーションにバインドされた Google Cloud プロジェクトを使用して構成を行います。
この例では、gcloud
コマンドを使用します。Google Cloud コンソールを使用するには、単一のロールを付与するをご覧ください
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/*"
次のように置き換えます。
PROJECT_ID
: Google Security Operations 用に Google Cloud プロジェクトを構成するで構成した Google Security Operations にバインドされたプロジェクトのプロジェクト ID に置き換えます。プロジェクトを識別するフィールドの詳細については、プロジェクトの作成と管理をご覧ください。WORKFORCE_POOL_ID
: Workforce Identity プール 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
クレーム内のグループです。組織の要件を満たすように追加の IAM ポリシーを構成します。
Google Security Operations 機能のアクセス制御を確認または構成する
google.groups
属性にマッピングされた属性またはグループを使用して Workforce Identity 連携を構成した場合、この情報は Google Security Operations に渡され、Google Security Operations にロールベースのアクセス制御(RBAC)を構成できます。機能。
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
: 従業員プロバイダの説明。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 SecOps でロールの定義に使用するすべてのグループに google.groups
属性をマッピングします。
構成に関する問題のトラブルシューティング
このプロセス中にエラーが発生した場合は、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
必要な権限があることを確認します。詳細については、必要なロールをご覧ください。
次のステップ
このドキュメントの手順を完了したら、次の操作を行います。
Google Security Operations インスタンスを Google Cloud サービスにリンクする手順を行います。
監査ロギングをまだ設定していない場合は、Google Security Operations 監査ロギングを有効にして続行してください。
Google セキュリティ オペレーション用に構成する場合は、Google セキュリティ オペレーションでユーザーをプロビジョニング、認証、マッピングするの追加手順を行います。
機能へのアクセスを構成するには、IAM を使用して機能アクセス制御を構成すると IAM の Google Security Operations 権限の追加の手順を行います。