検索とダッシュボードで重複除去を使用する

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

Google Security Operations では、複数のシステムが同じイベントをログに記録する場合(認証システムとファイアウォールが両方とも単一のログインをログに記録するなど)、検索結果に重複が含まれることがあります。

一意の結果のみを返すには、YARA-L 構文で dedup セクションを使用します。このセクションに UDM フィールドを追加すると、値の一意の組み合わせごとに 1 つの結果がクエリから返されます。

パフォーマンスに関するガイドライン

dedup 演算子は、正確性を維持するために、時間範囲内のすべてのデータを単一の単位として処理します。

  • 最適な範囲: 1 日以下の範囲でパフォーマンスが最適になります。
  • レイテンシ: 7 ~ 30 日の範囲では、レイテンシが大幅に増加し、クエリのタイムアウトが発生する可能性があります。

dedup 演算子を適用する場合は、調査に適した可能な限り短い期間を常に使用することをおすすめします。

クエリタイプ別の重複除去

重複除去の動作は、クエリで集計を使用するかどうかによって異なり、次のタイプの検索クエリとダッシュボード クエリに適用されます。

集計された検索クエリ

集計された検索クエリには、matchmatchoutcome、または aggregated outcome のセクションが含まれます。重複除去は、結果が確定したに行われます。

これらのクエリについては、dedup セクションに次のフィールドを追加します。

  • match セクションのフィールド
  • *outcome セクションのフィールド

UDM 検索クエリ

UDM 検索クエリでは、matchoutcome、または集約された outcome セクションは除外されます。注: 集計がなく、match セクションがない限り、UDM 検索クエリに outcome セクションを含めることができます。

UDM 検索を重複除去するには、次のフィールドを dedup セクションに追加します。

  • 繰り返し、配列、グループ化されていないイベント フィールド。
  • events セクションのプレースホルダ フィールド。
  • outcome セクションの結果変数(集計がない場合)。

このセクションでは、YARA-L 構文を示します。この構文は、検索で実行できます。

例: 一意の IP アドレスを検索する

次のクエリの例では、内部 IP(principal.ip)で重複除去された内部 IP と外部 IP 間のネットワーク接続を特定します。

events:
   metadata.event_type = "NETWORK_CONNECTION"
   target.ip != ""
   principal.ip != ""

match:
   target.ip, principal.ip

dedup:
   principal.ip

例: トラフィック量を含む一意の IP アドレス

前の例と同様に、次の検索例では、一意の IP アドレスを持つネットワーク接続イベントが表示されます。dedupprincipal.ip に適用すると、結果は一意の IP に関連付けられたイベントに絞り込まれます。outcome セクションには、principal.iptarget.ip の間で送信された合計バイト数が表示され、トラフィック量の多い順に結果が並べられます。

events:
   metadata.event_type = "NETWORK_CONNECTION"
   target.ip != ""
   principal.ip != ""

match:
   target.ip, principal.ip

outcome:
   $total_bytes = sum(network.sent_bytes)

dedup:
   principal.ip

order:
   $total_bytes desc

例: 基本的な UDM の重複除去

次の例では、すべてのログタイプでアクセスされた一意のホスト名の概要を検索します。deduptarget.hostname に適用すると、結果は一意の外部ホスト名に関連付けられたイベントに絞り込まれます。注: この形式は、集計を必要としないクエリに有効です。

metadata.log_type != ""

dedup:
    target.hostname

dedup オプションを使用しない同等の例を次に示します。通常、はるかに多くのイベントが返されます。

metadata.log_type != "" AND target.hostname != ""

例: 一意のホスト名

前の例と同様に、この検索では一意のホスト名を持つネットワーク接続イベントが表示されます。dedup オプションを principal.hostname に適用すると、結果は一意のホストに関連付けられたイベントに絞り込まれます。

events:
   metadata.event_type = "NETWORK_CONNECTION"
   target.hostname != ""
   principal.hostname != ""

match:
   target.hostname, principal.hostname

outcome:
   $total_bytes = sum(network.sent_bytes)

dedup:
   principal.hostname

order:
   $total_bytes desc

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。