实现没有匹配部分的联接
本文档介绍了 Google Security Operations 搜索中不含 match 部分或数据联接的联接操作的概念。
您可以使用联接操作,根据共同的字段值关联和合并来自多个来源的原始数据。通过将相关的安全事件和实体整合到一个全面的视图中,您可以更有效地检测和调查威胁。
与需要使用 match 部分来汇总结果的统计联接不同,数据联接会检索完整的事件或实体数据,并显示这些数据,而不会进行任何汇总。
数据联接的运作方式
您可以通过关联不同事件块或实体块中的通用字段来创建数据联接。您可以通过以下任一方法执行此操作:
直接将字段等同起来(例如,
$e1.principal.hostname = $e2.principal.hostname)将这两个字段分配给同一个占位变量(例如
$host = $e1.principal.hostname和$host = $e2.principal.hostname)。
在这两种情况下,搜索都会隐式联接这些字段的值相同的块。
支持的数据联接类型
您可以在搜索查询中使用以下数据联接类型:
事件到事件联接:关联两种不同的统一数据模型 (UDM) 事件类型之间的数据。
事件到 ECG 的联接:使用实体情境图 (ECG) 中的信息扩充 UDM 事件数据。
事件到事件联接
事件到事件联接最适合关联两个不同的 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
限制
最多可以联接两个事件。
查询时间范围最长为 14 天。
查询次数上限为每小时 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
“事件到实体”上下文图表联接
事件到 ECG 的联接最适合使用 ECG 中的相关实体(例如资产、用户)的背景数据来丰富 UDM 事件。此联接通过将实时事件数据与历史和关系型实体信息相结合,提供更全面的数据视图。
限制
查询时间范围最长为 14 天。
查询限制为 120 QPH。
查询中最多可以联接两个 UDM 事件。
查询中最多可以联接一个 ECG 事件。
不支持将“事件到 ECG”联接查询导出到数据表。
不支持 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 文件,以供离线分析。
导出到数据表:将结果保存到实例中的数据表,以供参考或进一步关联(仅适用于事件到事件联接)。
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。