对搜索结果进行去重
在 Google Security Operations 中,如果多个系统记录同一事件(例如,身份验证系统和防火墙都记录一次登录),则搜索结果可能会包含重复项。
如需仅返回唯一结果,请在 YARA-L 语法中使用 dedup 部分。将 UDM 字段添加到此部分可确保查询针对每个不同的值组合返回单个结果。
性能准则
dedup 运算符会将时间范围内的所有数据作为一个单元进行处理,以确保正确性。
- 最佳范围:范围小于或等于 1 天时,性能最佳。
- 延迟:范围介于 7 到 30 天之间时,延迟会显著增加,并可能导致查询超时。
我们建议您在应用 dedup 运算符时,始终使用适合调查的最短时间范围。
按查询类型进行去重
去重行为取决于查询是否使用聚合,并适用于以下类型的搜索查询和信息中心查询。
聚合搜索查询
聚合搜索查询包含 match、match 和 outcome 或 aggregated outcome 部分。去重在确定结果 后 发生。
对于这些查询,请将以下字段添加到 dedup 部分:
match部分中的字段outcome部分中的字段
UDM 搜索查询
UDM 搜索查询不包含 match、outcome 或聚合 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.ip 和 target.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