对搜索结果进行去重

支持:

在 Google Security Operations 中,如果多个系统记录同一事件(例如,身份验证系统和防火墙都记录一次登录),则搜索结果可能会包含重复项。

如需仅返回唯一结果,请在 YARA-L 语法中使用 dedup 部分。将 UDM 字段添加到此部分可确保查询针对每个不同的值组合返回单个结果。

性能准则

dedup 运算符会将时间范围内的所有数据作为一个单元进行处理,以确保正确性。

  • 最佳范围:范围小于或等于 1 天时,性能最佳。
  • 延迟:范围介于 7 到 30 天之间时,延迟会显著增加,并可能导致查询超时。

我们建议您在应用 dedup 运算符时,始终使用适合调查的最短时间范围。

按查询类型进行去重

去重行为取决于查询是否使用聚合,并适用于以下类型的搜索查询和信息中心查询。

聚合搜索查询

聚合搜索查询包含 matchmatchoutcomeaggregated outcome 部分。去重在确定结果 发生。

对于这些查询,请将以下字段添加到 dedup 部分:

  • match 部分中的字段
  • outcome 部分中的字段

UDM 搜索查询

UDM 搜索查询不包含 matchoutcome 或聚合 outcome 部分。注意:只要没有聚合且没有 match 部分,UDM 搜索查询就可以包含 outcome 部分。

如需对 UDM 搜索进行去重,请将以下字段添加到 dedup 部分:

  • 任何非重复、非数组和非分组的事件字段。
  • events 部分中的占位符字段。
  • outcome 部分中的结果变量(如果没有聚合)。

本部分显示了 YARA-L 语法,可以在 搜索中运行。

示例:搜索唯一 IP 地址

以下示例查询用于识别内部 IP 和外部 IP 之间的网络连接,并按内部 IP (principal.ip) 进行去重:

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

match:
   target.ip, principal.ip

dedup:
   principal.ip

示例:具有流量的唯一 IP 地址

与上一个示例类似,以下示例搜索会显示具有唯一 IP 地址的网络连接事件。将 dedup 应用于 principal.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 去重

以下示例用于搜索对所有日志类型中访问的唯一主机名的概览。将 dedup 应用于 target.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 专业人士的解答。