一致セクションのない結合を実装する
このドキュメントでは、Google Security Operations Search 内の match セクションまたはデータ結合のない結合オペレーションのコンセプトについて説明します。
結合オペレーションを使用すると、共通のフィールド値に基づいて複数のソースの生データを関連付けて結合できます。関連するセキュリティ イベントとエンティティを 1 つの包括的なビューに統合することで、より効果的な脅威の検出と調査が可能になります。
結果を集計するために match セクションが必要な統計結合とは異なり、データ結合では、イベントまたはエンティティの完全なデータが取得され、集計なしで表示されます。
データ結合の仕組み
データ結合は、異なるイベント ブロックまたはエンティティ ブロックの共通フィールドを関連付けることで作成できます。これを行うには、次のいずれかの方法を使用します。
フィールドを直接等しくする(
$e1.principal.hostname = $e2.principal.hostnameなど)両方のフィールドを同じプレースホルダ変数(
$host = $e1.principal.hostnameや$host = $e2.principal.hostnameなど)に割り当てます。
どちらの場合も、Search はこれらのフィールドの値が同一のブロックを暗黙的に結合します。
サポートされているデータ結合タイプ
検索クエリでは、次のデータ結合タイプを使用できます。
イベント間の結合: 2 つの異なる統合データモデル(UDM)イベントタイプ間でデータを関連付けます。
イベントと ECG の結合: エンティティ コンテキスト グラフ(ECG)の情報を使用して UDM イベントデータを拡充します。
イベント間の結合
イベント間結合は、2 つの異なる UDM イベントタイプ間のフィールドを関連付ける場合に最適です。これは、異なるログソースやイベントタイプにわたって同じエンティティを含むイベントやアクションのシーケンスを見つける場合に便利です。
次のクエリの例では、ユーザー ログイン(USER_LOGIN)も発生したホストから発信されたすべてのネットワーク接続(NETWORK_CONNECTION)を検索します。
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the
$host placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
制限事項
参加できるイベントは最大 2 つです。
クエリの期間は最大 14 日に制限されます。
クエリの上限は 1 時間あたり 120 件のクエリ(QPH)です。
例
次のクエリの例では、ユーザー ログイン(USER_LOGIN)も発生したホストから発信されたすべてのネットワーク接続(NETWORK_CONNECTION)を検索します。
// Find user logins and assign the hostname to the $host placeholder
$e1.metadata.event_type = "USER_LOGIN"
$host = $e1.principal.hostname
// Find network connections and join them where the hostname matches the $host
placeholder
$e2.metadata.event_type = "NETWORK_CONNECTION"
$host = $e2.principal.hostname
ユーザー ID で結合する
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.user.userid = $user
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.user.userid = $user
IP アドレスで参加する
$e1.metadata.event_type = "USER_LOGIN"
$e1.security_result.action = "ALLOW"
$e1.principal.ip = $ip
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.principal.ip = $ip
Event-to-Entity Context Graph の結合
イベントと ECG の結合は、ECG の関連エンティティ(アセット、ユーザーなど)に関するコンテキスト データで UDM イベントを拡充する場合に最適です。この結合により、リアルタイムのイベントデータと過去のリレーショナル エンティティ情報を組み合わせて、より完全な全体像を把握できます。
制限事項
クエリの期間は最大 14 日に制限されます。
クエリの上限は 120 QPH です。
クエリで結合できる UDM イベントは最大 2 つです。
クエリで結合できる心電図イベントは 1 つまでです。
イベントと心電図を結合するクエリでは、データテーブルへのエクスポートはサポートされていません。
ECG-to-ECG 結合はサポートされていません。
心電図とデータテーブルの結合はサポートされていません。
例
このクエリは、ホスト名で結合することにより、ECG のアセット情報でネットワーク接続イベントを拡充します。
// Find network connections and assign the hostname to the $host placeholder
$e1.metadata.event_type = "NETWORK_CONNECTION"
$host = $e1.principal.asset.hostname
// Find asset entities in the graph and join where the hostname matches the
$host placeholder
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.asset.hostname
特定のログタイプで IP アドレスを結合する
$ip = $e1.principal.ip
$ip = $g1.graph.entity.ip
$e1.metadata.log_type = "WINDOWS_DEFENDER_ATP"
$g1.graph.entity.ip = "10.19.6.24"
特定の IP フィルタを使用してホスト名で参加する
$e1.metadata.event_type = "FILE_CREATION"
$host = $e1.principal.hostname
$e1.principal.ip = "10.0.0.76"
$g1.graph.metadata.entity_type = "ASSET"
$host = $g1.graph.entity.hostname
ベスト プラクティス
パフォーマンスの低下やクエリのタイムアウトを回避するには、結合クエリの各ブロック($e1、$e2、$g1)内で、具体的で絞り込んだフィルタを使用します。
たとえば、次のような広範なクエリの場合:
$e1.metadata.event_type = "USER_LOGIN"
$e2.metadata.event_type = "NETWORK_CONNECTION"
right join $e1.principal.hostname = $e2.principal.hostname
特定の条件を追加することで、次のように最適化できます。
$e1.metadata.event_type = "USER_LOGIN"
$e1.principal.ip = "192.168.1.101"
$e1.principal.user.userid = "alex"
$e2.metadata.event_type = "NETWORK_CONNECTION"
$e2.src.hostname = "altostrat.com"
right join $e1.principal.hostname = $e2.principal.hostname
結果を操作する
データ結合の結果は、相関イベントの両方から結合されたフィールドを含む [結合] テーブルに表示されます。このテーブルは、集計されたカウントではなく、完全なイベントまたはエンティティ データを提供する統計ビューとは異なります。
クエリを実行した後、次の方法で結果を操作できます。
CSV 形式でダウンロード: オフライン分析用に、結果セット全体を CSV ファイルにエクスポートします。
Export to datatables: 結果をインスタンス内のデータテーブルに保存して、参照やさらなる相関関係の分析に利用します(イベント間の結合の場合のみ)。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。