UDM 搜索最佳实践
本文档介绍了 Google 推荐采用的最佳实践, 使用 UDM 搜索进行搜索。UDM 搜索可能需要大量 要完成的计算资源。 效果还会根据应用中数据的规模和复杂程度的不同 Google Security Operations 实例。
UDM 搜索的基本构建
每个条件都必须采用 udm-field operator value
格式。
例如:principal.hostname = "win-server"
。
优化 UDM 搜索的时间范围
请始终尽可能缩小时间范围,只保留必要的信息。Google Security Operations 可以提取大量数据,因此在执行搜索时限制数据的广度可以显著提高搜索性能。
在 UDM 搜索中使用正则表达式
您可以在执行 UDM 搜索时使用正则表达式:
- 请使用
AND
、OR
和NOT
。 - 如果没有其他运算符,则假定为
AND
。 - 使用括号可修改优先级顺序。有数量上限
共有 169 个可以在括号中使用的逻辑运算符(
OR
、AND
和NOT
)。 - 字段运算符可能包括以下内容,具体取决于字段类型:
= != >= > < <=
或者,您也可以使用 参考列表。
使用 nocase 作为搜索修饰符
nocase
可用作修饰符来忽略大小写。
例如,以下搜索无效:
target.user.userid = "TIM.SMITH" nocase
正则表达式不适用于枚举字段
您不能对枚举字段(具有一系列预定义值的字段),例如 metadata.event_type
或 network.ip_protocol
,使用正则表达式。
例如,以下搜索无效:
metadata.eventtype = /NETWORK*/
不过,以下搜索有效(并且近似于尝试运行的结果) ):
(metadata.event_type = "NETWORK_CONNECTION" or
metadata.event_type = "NETWORK_DHCP")
在“事件”字段中使用 any 和 all 运算符
在 UDM 搜索中,某些字段被标记为重复,这意味着它们是值列表或其他类型的消息。与 YARA-L 不同,默认情况下,UDM 搜索中的重复字段始终使用 any
运算符处理,并且没有在搜索中指定 all
的选项。
使用 any
运算符时,只要存在任何值,该谓词的求值结果为 true
则满足该条件。例如,如果您搜索
principal.ip != "1.2.3.4"
和您的搜索内容中的事件同时包括
principal.ip = "1.2.3.4"
和principal.ip = "5.6.7.8"
,搜索将
生成匹配。这样,搜索范围会扩大到包含与任一运算符匹配的结果,而不是与所有运算符匹配的结果。
系统会单独处理重复字段中的每个元素。如果重复的
字段内,则会针对每个
元素。这可能会导致意外行为,尤其是在使用 !=
运算符进行搜索时。
使用 any
运算符时,只要存在任何值,该谓词的求值结果为 true
则满足该条件。
时间戳使用 Unix 纪元时间
时间戳字段使用 Unix 纪元时间(自 1970 年 1 月 1 日星期四 00:00:00 以来经过的秒数)进行匹配。
搜索特定时间戳时,以下时间戳(以公元纪年时间表示)有效:
metadata.ingested_timestamp.seconds = 1660784400
以下时间戳无效:
metadata.ingested_timestamp = "2022-08-18T01:00:00Z"
某些字段会从过滤条件中排除,包括:
metadata.id
metadata.product_log_id
*.timestamp
由于这些字段往往具有唯一值,因此显示它们可以创建 “噪音”UDM 搜索界面中的值。