实现没有匹配部分的联接
本文档介绍了 Google Security Operations 搜索中的联接操作(没有 match 部分)或数据联接的概念。
您可以使用联接操作,根据通用字段值关联和合并来自多个来源的原始数据。通过将相关的安全事件和实体合并到单个综合视图中,您可以提供更有效的威胁检测和调查。
与需要 match 部分来汇总结果的 统计联接 不同,
数据联接会检索完整的事件或实体数据并显示这些数据,
而不会进行任何汇总。
数据联接的工作原理
您可以通过关联不同事件或实体块中的通用字段来创建数据联接。您可以通过以下方法之一来完成此操作:
直接使字段相等(例如
$e1.principal.hostname = $e2.principal.hostname)将这两个字段分配给同一个占位符变量(例如
$host = $e1.principal.hostname和$host = $e2.principal.hostname)。
在这两种情况下,搜索都会隐式联接这些字段的值相同的块。
支持的数据联接类型
您可以在搜索查询中使用以下数据联接类型:
事件到事件联接 :关联两种不同统一数据模型 (UDM) 事件类型之间的数据。
事件到 ECG 联接 :使用实体情境图 (ECG) 中的信息丰富 UDM 事件数据。
事件到事件联接
事件到事件联接最适合关联两种不同的 UDM 事件类型之间的字段。这对于查找涉及不同日志来源或事件类型中相同实体的事件或操作序列非常有用。
以下查询示例查找源自主机的所有网络连接 (NETWORK_CONNECTION),其中也发生了用户登录 (USER_LOGIN):
// 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)。
示例
以下查询示例查找源自主机的所有网络连接
(NETWORK_CONNECTION),其中也发生了用户登录
(USER_LOGIN):
// 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 到 ECG 联接。
不支持 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 文件以进行离线分析。
导出到数据表 :将结果保存到实例中的数据表,以供参考或进一步关联(仅适用于事件到事件联接)。