MSSP マルチテナント オペレーション
このガイドは、マネージド セキュリティ サービス プロバイダ(MSSP)、セキュリティ アナリスト、インシデント対応者が複数の Google Security Operations の顧客インスタンスで同時に検索を実行し、脅威を調査するのに役立ちます。ここでは、フェデレーション インスタンス グループの構成方法、テナント間の統合データモデル(UDM)検索と統計クエリの実行方法、個々のマネージド テナントへのピボット方法について説明します。この方法を使用すると、各テナントに個別にログインする必要がなくなり、分散環境全体で可視性を一元化できます。これにより、運用オーバーヘッドが削減され、テナント間の脅威の検出とインシデント対応が迅速化されます。
フェデレーション検索は、個別のナビゲーション ページではなく、既存の UDM の [検索] ページ([調査> 検索])に直接組み込まれています。既存の Google Cloud Identity and Access Management(IAM)構成を使用して、指定された管理インスタンスを複数のマネージド インスタンスに接続します。
リンクされたサブテナントと必要なフェデレーション IAM ロールを使用して管理インスタンスにログインすると、[検索] ページに [インスタンス] メニューが表示されます(このメニューは標準のシングルテナント インスタンスには表示されません)。このメニューからターゲット インスタンスまたはグループを選択して検索クエリを開始すると、Google はすべてのターゲット インスタンスで認証を確認し、クエリを分散して、一致するイベントと集計された統計情報の全体像を返します。このビューには、ソース インスタンス コードでタグ付けされたデータが含まれます。
主な用語
連携検索とマルチテナント オペレーションには、次の用語が適用されます。
- 管理インスタンス: リンクされたインスタンスの管理、フェデレーション グループの編成、フェデレーション検索の実行に必要な権限を持つ中央の Google SecOps インスタンス。
- マネージド インスタンス: 管理インスタンスから開始された連携リクエストに応答する、接続された Google SecOps インスタンス。
- [インスタンス] メニュー: [調査>検索] のプルダウン セレクタ。連携検索に含めるリンクされたマネージド インスタンスまたはインスタンス グループを選択できます。このメニューは、[SIEM 設定> リンクされたインスタンス] でサブテナントがリンクされている管理インスタンスにログインし、アカウントに
chronicle.googleapis.com/federationAdminまたはchronicle.googleapis.com/federationViewerのロールがある場合にのみ表示されます。 - インスタンス コード: 各マネージド インスタンス(
instance_code)に割り当てられる一意の識別子。この識別子は、返されたイベントと、フェデレーション検索結果の集計された統計行にタグ付けします。 - フェデレーション管理者: フェデレーション グループを作成してフェデレーション検索を実行するために、管理インスタンス プロジェクトで必要な IAM ロール(
chronicle.googleapis.com/federationAdmin)。 - フェデレーション閲覧者: グループの作成や削除を行わずに、フェデレーション構成の表示とフェデレーション検索の実行に対する読み取り専用アクセス権を付与する IAM ロール(
chronicle.googleapis.com/federationViewer)。 - 連携統計情報: 複数のマネージド インスタンスで実行される UDM ベースの統計情報集計クエリ(
countやsumなど)。結果はinstance_codeによって暗黙的にグループ化され、分離されます。
一般的なユースケース
以降のセクションでは、フェデレーション検索がコア セキュリティ ワークフロー全体でマルチテナント データサイロと運用オーバーヘッドにどのように対応するかについて説明します。
データサイロ全体でのテナント間の脅威ハンティング
- 目的: 複数の顧客または子会社のインスタンスに対して単一の YARA-L クエリを同時に実行し、セキュリティ侵害インジケーター(IOC)とインターネット全体の脅威を検出します。
- 価値: 個々のテナントにログインする必要がなくなり、組織の境界やリージョンのコンプライアンス サイロ全体で一元的な可視性が実現します。
インスタンス グループ間のインシデント対応とトリアージ
- 目標: 類似した脅威プロファイル(金融機関など)を持つ顧客テナントを論理インスタンス グループに整理し、これらのグループに対してターゲット検索や統計的集計を実行します。
- 価値: 脅威ハンティングの範囲を特定の顧客セグメントに絞り込み、直ちに修復が必要なテナントを特定することで、調査時間と管理オーバーヘッドを削減します。
テナント管理者との調査結果の共同共有
- 目的: 管理インスタンスのフェデレーション検索結果から個々の管理対象テナントのインターフェースに直接ピボットし、特定の調査結果をそのテナントのローカル管理者と共有します。
- 価値: テナントレベルのデータ分離を維持しながら、中央の MSSP アナリストとローカルの顧客セキュリティ チーム間のハンドオフを効率化します。
始める前に
インスタンス グループを構成する前に、またはフェデレーション検索を実行する前に、次の前提条件が満たされていることを確認してください。
権限: 管理インスタンスに関連付けられている Google Cloud プロジェクトから、次のいずれかの IAM ロールをユーザーに割り当てます。
chronicle.googleapis.com/federationAdmin(フェデレーション管理者): インスタンス グループの作成や削除など、すべてのフェデレーション検索機能への完全アクセス権を付与します。chronicle.googleapis.com/federationViewer(フェデレーション閲覧者): グループを変更せずに、フェデレーション構成を表示し、フェデレーション検索を実行するための読み取り専用アクセス権を付与します。- ユーザーには、管理対象テナント全体で UDM 検索を実行するための
chronicle.events.udmSearch権限も必要です。
環境チェック:
- リージョン スコープ: 参加するすべての Google SecOps インスタンス(管理と管理対象)は、同じ Google Cloud リージョンに存在する必要があります。
- 組織階層: 参加するすべてのインスタンスが同じ Google Cloud 組織に属している必要があります。各マネージド インスタンスは、管理インスタンスの Google Cloud フォルダのサブフォルダに存在する必要があります(管理インスタンスのプロジェクトが Google Cloud フォルダの一部でない場合、同じ Google Cloud 組織内のすべてのインスタンスを管理できます)。
- アクセス制御の適用: フェデレーション検索は、各サブテナントで構成されたデータ ロールベース アクセス制御(RBAC)の設定を尊重します。ユーザーは、割り当てられたロールで許可されているデータにのみアクセスできます。
制限事項
連携検索は、基本的な YARA-L クエリと UDM 統計集計をサポートし、次の機能境界を適用します。
サポートされていないシングルテナント検索機能:
- 未加工ログ検索(以前のバージョンと RLSv2 の両方)
- エンティティ コンテキスト グラフ(ECG)検索
- Gemini と Gemini の概要を使用した YARA-L 2.0 クエリの生成
- UDM 検索
- 顧客管理の暗号鍵(CMEK)を使用するテナント
- [検索と実行に適用] を使用したテナント ID フィルタ
- [イベント ビューア] パネルの [パーサーの管理] ピボット
- リファレンス リストとデータテーブル
- エンティティのレガシービューと、UDM 検索の [概要] パネルからレガシービューへのピボット
- [概要] タブと [アラート] タブ
- 結果の並べ替えと、結果のカンマ区切り値(CSV)形式でのダウンロード
- [イベント] テーブルでのピボット
- API ベースの連携検索(Chronicle API では連携検索はサポートされていません)
連携統計情報の制限:
- テナント間の統合なし: 複数のテナントのデータを 1 つのグローバルな数値に集計することはできません。各統計結果は、特定のテナントに分離されたままになります(たとえば、10 個のテナントに対して 10 行が表示され、10 個のテナントの合計を表す 1 行は表示されません)。
- 結合、データテーブル、マルチステージ クエリはサポートされていません: 結合、マルチステージ クエリ、データテーブルを使用するクエリはサポートされていません。
- スコープ: フェデレーション統計情報は UDM イベントに厳密に制限されます。心電図イベントはサポートされていません。
- 可視化: [可視化] タブ(グラフとチャート)が無効になります。結果は表形式のデータ形式でのみ提供されます。
連携検索グループを構成して管理する
管理インスタンス内で、リンクされたテナントを表示し、論理インスタンス グループに整理して、類似した脅威プロファイルを持つ顧客を管理できます。以降のセクションでは、リンクされたインスタンスを表示してグループを管理する方法について説明します。
リンクされたインスタンスを表示する
グループを作成したり検索を実行したりする前に、管理対象テナントがリンクされ、管理インスタンスに表示されていることを確認します。
- 管理対象の Google SecOps インスタンスにログインします。
- [SIEM 設定] > [リンクされたインスタンス] に移動します。
リンクされたインスタンスの表を確認します。各テナントについて、次の詳細が表示されます。
- 名前: インスタンスの表示名。
- ID: インスタンス ID。
- コード: インスタンスに割り当てられた一意の識別子コード。フェデレーション検索結果に表示されます。
- グループ: 管理用に割り当てられたインスタンス グループ。
連携検索グループを作成する
特定の顧客セグメントに対してターゲットを絞ったフェデレーション検索を実行するために、論理インスタンス グループ(銀行や信用組合のグループ化など)を作成します。
- 管理対象の Google SecOps インスタンスにログインします。
- [SIEM 設定] > [リンクされたインスタンス] をクリックします。
- [グループを管理] をクリックします。
- [追加] をクリックします。
- [グループ名] フィールドに、グループのわかりやすい名前を入力します。
- [インスタンスに割り当てる] リストで、グループに含めるマネージド インスタンスを選択します。
[保存] をクリックします。
複数のインスタンスで連携検索を実行する
管理インスタンスから YARA-L クエリを実行して、イベントを検索し、選択したテナントの集約された UDM 統計情報を検査できます。以降のセクションでは、フェデレーション クエリを実行して結果を分析する方法について説明します。
クロステナント UDM 検索を実行する
フェデレーション検索を実行して、複数のマネージド インスタンスまたはインスタンス グループで一致する UDM イベントを取得します。
- 管理インスタンスにログインします。アカウントに、管理インスタンスと関連するすべてのマネージド インスタンスへのアクセス権があることを確認します。
- ナビゲーション バーで、[調査] > [検索] をクリックします。
- [インスタンス](フェデレーション用に構成されたインスタンスの管理の [検索] ページに表示されます)をクリックし、検索に含める個々のインスタンスまたはインスタンス グループを選択します。
- 検索フィールドに YARA-L クエリを入力し、[検索を実行] をクリックします。
必要に応じて結果の制限を構成します。
- フェデレーション検索で返される結果の合計数は、検索設定で構成された結果セットのサイズによって決まります(デフォルトは 30,000 件、1 ~ 1,000,000 件の間で構成可能)。
検索クエリで
limitキーワードを構成することもできます。これは、ターゲット インスタンスごとに個別に適用されます。ip != "" limit:500010 個のインスタンスを選択した場合、このクエリは各インスタンスから最大 5,000 個のイベントを取得し、合計で最大 50,000 個のイベントを返します。
[結果の概要] メニューでクエリの実行をモニタリングします。このメニューには、各ターゲット インスタンスのステータス インジケーター(実行中、完了、失敗)が表示されます。
インスタンス コードで結果をフィルタして検査します。
- 検索結果の各イベントには、ソース マネージド インスタンスを識別する [テナント](または [インスタンス コード])列が含まれています。
- サイドバーまたはスナップショット ビューのテナント フィルタを使用して、結果を特定のテナントに絞り込みます。
- リストされたイベントをクリックすると、完全な UDM イベントと未加工のログが表示されます。
フェデレーション統計情報を分析してマネージド インスタンスにピボットする
複数のインスタンスで統計 UDM クエリ(count や sum など)を実行して、脅威の仮説を検証し、特定のテナントをドリルダウンします。
- 管理インスタンスのナビゲーション バーで、[調査>検索] をクリックし、[インスタンス] メニューからターゲット インスタンスまたはグループを選択します。
UDM 統計クエリ(
matchセクションとoutcomeセクションを使用)を入力し、[検索を実行] をクリックします。- 連携クエリ エンジンは、すべてのターゲット インスタンスで集計をオーケストレートし、結果を
instance_codeで暗黙的にグループ化します。
- 連携クエリ エンジンは、すべてのターゲット インスタンスで集計をオーケストレートし、結果を
表形式の結果ビューで、インスタンスごとの集計行を確認します。
特定のテナントのイベントを詳しく調査するには、次のいずれかのピボット アクションを選択します。
- 統計結果の任意の行で [UDM クエリを実行] をクリックすると、関連付けられたマネージド インスタンスで基盤となる検索が新しいブラウザタブで直接開始されます。
- [結果の概要] メニューで、インスタンスの行の横にある [新しいタブで開く] をクリックして、そのインスタンスの検索結果のみを表示する新しいブラウザタブを開きます。
検索結果の確認が完了したら、[完了] をクリックします。
例と参考情報
以降のセクションでは、テナント間の脅威ハンティングとインシデント対応を効率化するための YARA-L クエリの例とマルチテナント調査の例を示します。
インスタンス グループ全体のユーザー ログイン アクティビティを追跡する
セキュリティ アナリストが、New York と California のインスタンス グループ全体で USER_LOGIN イベントを検索したいと考えています。
- 管理インスタンスのナビゲーション バーで、[調査] > [検索] をクリックします。
- [インスタンス] をクリックし、[ニューヨーク] と [カリフォルニア] のインスタンス グループを選択します。
検索フィールドに、次の UDM クエリを入力します。
metadata.event_type = "USER_LOGIN"[検索を実行] をクリックします。
[結果の概要] で結果を確認します。
- 各イベントには、ソース インスタンス コードと、選択したテナントで見つかったすべての
USER_LOGINイベントを示す [テナント] 列が含まれます。 - サイドバーのテナント フィルタを使用して、選択したグループ内の特定のテナントに結果を絞り込みます。
- 概要には、ニューヨークとカリフォルニアのインスタンス グループのテナントあたりの
USER_LOGINイベント数が表示されます。
- 各イベントには、ソース インスタンス コードと、選択したテナントで見つかったすべての
テナント間で不審な実行可能ファイルを調査する
マルチテナントのお客様のインシデント レスポンダーが、instance1 の疑わしい実行可能ファイル(malicious.exe)のアラートを調査しようとしています。
instance1 の [調査> 検索] で、次の UDM クエリを実行して結果を検証します。
metadata.event_type = "FILE_OPEN" AND target.file.full_path = "<var>FILE_PATH</var>/malicious.exe"検証が完了したら、管理インスタンスを開き、[調査 > 検索] に移動して、[インスタンス] メニューを使用して関連するインスタンスをすべて選択します。
フェデレーション検索を使用して同じクエリを再実行し、選択したインスタンス全体をスキャンします。
結果の概要には、すべてのテナント インスタンスの結果が表示されます。各イベントにはインスタンス コードが含まれているため、対応者はすべてのテナントで
malicious.exeがアクセスされた場所と時間を特定できます。
フェデレーション統計情報を使用して異常なログイン動作を特定する
次の例は、すべてのフェデレーション インスタンスで、異常な地理的位置からのログインや、異常な時間に発生したログインなど、異常なログイン動作を特定するのに役立ちます。
instance1 の [調査> 検索] で、次の UDM クエリを実行して結果を検証します。
// Filter for successful logins metadata.event_type = "USER_LOGIN" security_result.action = "ALLOW" $user = target.user.userid $machine = target.hostname $ip = principal.ip $country = principal.ip_geo_artifact.location.country_or_region // Match: Group by Machine match: $machine // Check for affected scope: How many unique IPs hit this machine? // Check for logins from multiple countries // Identify the time window of activity outcome: $total_logins = count(metadata.id) $unique_users = count_distinct($user) $unique_source_ips = count_distinct($ip) $distinct_countries = count_distinct($country) $first_login = min(metadata.event_timestamp.seconds) $last_login = max(metadata.event_timestamp.seconds) // Identify machines with the most unique users order: $unique_users desc検証が完了したら、管理インスタンスを開き、[調査 > 検索] に移動して、[インスタンス] メニューを使用して関連するインスタンスをすべて選択します。
フェデレーション検索を使用して同じクエリを再実行し、選択したインスタンス全体をスキャンします。
結果の概要には、すべてのテナント インスタンスの結果が表示されます。各行にはインスタンス コードが含まれており、各インスタンスのログイン異常を脅威ハンターに通知します。
[UDM クエリを実行] をクリックして特定のインスタンスに焦点を当て、不審な動作の詳細な調査を完了します。
調査結果をテナント管理者に共有する
この例では、調査担当者がテナント間の検索で検出された結果を 1 つのマネージド テナントに分離してから、そのテナントのローカル管理者と共有する方法を示します。フェデレーション検索の結果は管理インスタンスの複数のテナントにまたがるため、特定の管理インスタンス(instance2)にピボットして、その顧客に関連する検索クエリとイベントのみを共有します。
- 管理インスタンスの [結果の概要] で、instance2 の一致を見つけます。
- instance2 の横にある [新しいタブで開く] をクリックして、そのテナントの Google SecOps インターフェースで検索結果を新しいブラウザタブで開きます。
- instance2 ページで、検索結果がそのインスタンスのみに限定されていることを確認します。
[共有] または [保存] をクリックして、次のいずれかの操作を行います。
- instance2 にアクセスできるローカル ユーザーと検索(クエリと結果)を共有します。
- 後で使用または調査できるように、検索クエリを instance2 に保存します。
トラブルシューティング
以降のセクションでは、アーキテクチャの制限、想定されるレイテンシ、一般的なフェデレーション検索の問題に対するセルフサービスによる修正について説明します。
レイテンシ、サービス割り当て、上限
連携検索では、マルチテナント環境全体でパフォーマンスを維持するために、次のサービス割り当てと処理上限が適用されます。
- テナント検出のレイテンシ: 新しく作成されたインスタンスまたは移動されたインスタンスは、フェデレーション用にスコープ設定されたフォルダに配置されてから 5 分以内に、[リンクされたインスタンス] リストに自動的に表示されます。
- インスタンスの上限: 各連携検索クエリは、最大 150 個のインスタンスを対象にできます。
- グループの上限: テナントごとに最大 100 個のインスタンス グループを作成できます。
- クエリのレート制限: Google Cloud 組織ごとに 1 時間あたり最大 30 個の連携検索クエリを実行できます。この上限を超えると、
HTTP 409エラーが返されます。 - クエリ結果の上限: フェデレーション検索では、最大 1,000,000 行の結果が返されます。この結果は、クエリの対象となる Google SecOps テナントの総数で均等に分割されます。
- 連携統計情報の結果の上限: 連携統計情報クエリは、表形式で最大 60,000 行を返します。
- クエリの期間: 各連携検索クエリで検索できる最大期間は 30 日間です。
エラーの修復
次の表を使用して、一般的なフェデレーション検索の問題を診断して解決します。
| 問題またはエラーコード | 説明 | 対処可能な修正 |
|---|---|---|
HTTP 409 |
クエリのレート上限を超えました: 組織が 1 時間あたりのフェデレーション検索クエリの最大数である 30 件を超えました。 | 追加のフェデレーション検索を実行する前に、時間単位の割り当てウィンドウがリセットされるまで待つか、個々のマネージド インスタンスでターゲット クエリを直接実行します。 |
| [リンクされているインスタンス] にテナントが表示されない | テナントがフェデレーション リストに表示されない: 新しく作成または移動したインスタンスが、[SIEM 設定] > [リンクされたインスタンス] に表示されない。 | 自動検出の同期が完了するまで最大 5 分待ちます。インスタンスが引き続き見つからない場合は、インスタンスが同じ Google Cloud 組織とリージョンに存在し、管理インスタンスの Google Cloud フォルダのサブフォルダに配置されていることを確認します。 |
| 権限が拒否されたか、承認されていない | 連携クエリを実行できない、またはグループを管理できない: 管理インスタンスにアクセスできない、グループを作成できない、マネージド テナントをクエリできない。 | アカウントに、管理プロジェクトに対する chronicle.googleapis.com/federationAdmin(または federationViewer)、chronicle.events.udmSearch 権限、各ターゲット サブテナントに対するデータ RBAC アクセス権があることを確認します。 |
| クエリのコンパイル エラー | サポートされていないクエリ構文: 結合、データテーブル、参照リスト、ECG フィールドを使用しようとすると、クエリが失敗します。 | 連携クエリから結合、データテーブル、参照リスト、ECG 参照を削除するか、UDM クエリを実行を使用してシングルテナント インスタンスにピボットし、高度なシングルテナント検索を実行します。 |
検証とテスト
最大 150 個のマネージド インスタンスで複雑な YARA-L 検索または統計クエリを実行する前に、まず単一のインスタンスでクエリ構文とフィールド マッピングを検証します。
- 単一のマネージド インスタンス(instance1 など)で、[調査> 検索] に移動し、短い期間で YARA-L クエリを実行します。
- UDM フィールド、イベントタイプ、統計結果変数が正しくコンパイルされ、期待どおりの結果が返されることを確認します。
- 単一インスタンスでクエリを検証したら、管理インスタンスの [調査 > 検索] に移動し、[インスタンス] メニューでターゲット インスタンス グループを選択して、検証済みのクエリをすべてのマネージド テナントで実行します。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。