使用高级 BigQuery Export 功能流式传输数据

支持的平台:

本文档介绍了如何使用 Advanced BigQuery Export 功能在 BigQuery 中访问和使用 Google SecOps 数据。作为企业 Plus 版客户,您可以使用此功能通过全代管式的流式数据流水线近乎实时地访问安全数据。此功能有助于解决安全运营中的数据延迟这一关键挑战,从而更及时有效地检测和应对威胁。

准备工作

我们建议您查看以下几点,了解资格要求和必要措施:

  • 仅限企业 Plus 版客户:此功能仅适用于 Google SecOps 企业 Plus 版客户。对于所有其他客户,请参阅在自行管理的 Google Cloud 项目中配置向 BigQuery 导出数据

  • 需要启用功能:此功能可根据要求启用,可能需要在贵组织的 Google SecOps 实例中进行初始配置。如有必要,请与您的 Google SecOps 代表联系,确认是否已启用此功能。

  • 迁移提醒:启用此功能后,系统会替换旧方法,旧方法请参阅 BigQuery 中的 Google SecOps 数据。在迁移到高级 BigQuery Export 期间,我们会让旧版流水线在过渡期内保持有效。这种双重操作旨在支持您顺利过渡到新功能,而不会造成中断。在为您的账号停用旧版导出流水线之前,我们会提前通知您。

功能概览

高级 BigQuery Export 会在 Google 管理的安全 BigQuery 项目中自动预配和管理必要的 Google SecOps 数据集,包括统一数据模型 (UDM) 事件、规则检测和入侵指标 (IoC) 匹配项。您可以通过 BigQuery 关联的数据集安全地以只读方式访问这些数据,该数据集会直接显示在您自己的 Google Cloud 项目中。借助此功能,您可以像查询本地存储的安全数据一样查询安全数据,而无需管理数据流水线或存储空间。

Google SecOps 会将以下类别的安全数据导出到 BigQuery:

  • UDM 事件记录:根据客户提取的日志数据创建的 UDM 记录。这些记录会通过别名信息进行丰富。
  • 规则匹配项(检测结果):规则与一个或多个事件匹配的实例。
  • IoC 匹配项:与 IoC Feed 匹配的事件中的制品(例如网域或 IP 地址)。这包括与全球 Feed 和特定于客户的 Feed 的匹配。
  • 注入指标:统计信息,例如注入的日志行数、从日志生成的事件数,以及指示无法解析日志的日志错误数。
  • 实体图和实体关系:实体及其与其他实体之间关系的说明。

主要优势

高级 BigQuery Export 的核心优势包括:

  • 近乎实时的数据新鲜度:流式架构可让您在提取安全数据后的几分钟内查询这些数据。UDM 事件、规则检测和 IoC 匹配项的预期延迟时间为 5-10 分钟。
  • 简化且可预测的费用模式:Google SecOps 会涵盖受管理的 BigQuery 项目中的所有数据注入和存储费用。您的组织仅需承担运行查询时产生的 BigQuery 分析费用。
  • 无需维护的数据访问权限:底层基础架构完全由 Google 管理,让您的团队专注于数据分析,而不是数据工程。

典型使用场景

高级 BigQuery Export 专为安全分析师、威胁搜寻者、数据科学家和安全工程师而设计,可让他们直接、高效地访问最新的安全数据,以便进行临时调查、自定义分析以及与商业智能工具集成。

高级 BigQuery Export 的典型应用场景包括:

  • 直接在 BigQuery 中运行临时查询。
  • 使用您自己的商业智能工具(例如 Microsoft Power BI)创建信息中心、报告和分析。
  • 将 Google SecOps 数据与第三方数据集联接。

架构

高级 BigQuery Export 架构使用持续的流式传输流水线。Google SecOps 实例中的数据会使用高吞吐量的 BigQuery Storage Write API 推送到安全的 Google 管理的租户项目。

Google SecOps 使用 BigQuery 共享功能创建安全的数据清单,并为您提供访问权限。在 BigQuery 的探索器窗格中,您的 Google Cloud 项目会自动订阅此清单,该清单会显示为secops_linked_data 关联的数据集

此模型支持强大的数据隔离,同时为您提供无缝的只读查询访问权限。

使用高级 BigQuery Export

本部分介绍了如何在 BigQuery 中访问和使用 Google SecOps 数据。

关键术语和概念

以下是高级 BigQuery Export 的一些关键术语和概念:

  • 关联的数据集:一个只读 BigQuery 数据集,用作其他项目中共享数据集的符号链接或指针。这样一来,您无需复制数据即可查询数据,在数据提供方管理物理存储的同时,确保安全访问。
  • BigQuery Sharing: Google Cloud 服务,可让组织在内部和外部安全地共享数据和分析资产,例如 BigQuery 数据集。
  • 租户项目:由 Google SecOps 拥有和管理的 Google Cloud 项目。此项目用于实际存储和管理导出的安全数据。您无法直接访问此项目。
  • 您的项目:贵组织拥有并与您的 Google SecOps 实例相关联的 Google Cloud 项目。关联的数据集会显示在此项目中,您可以在此项目中运行查询并产生分析费用。
  • 项目 ID:项目的全局唯一标识符。
  • 统一数据模型 (UDM):Google 的可扩展标准架构,用于将数百种供应商产品的安全遥测数据解析和标准化为一致的格式。

设置系统

请按照以下步骤设置系统以使用高级 BigQuery Export 功能,并开始查询数据:

  1. 确认许可:确保您的组织拥有 Google SecOps 企业 Plus 版许可。
  2. 确定您的项目:登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例相关联的 Google Cloud 项目。
  3. 找到关联的数据集:在 BigQuery 控制台中,使用探索器窗格导航到项目的资源。您会看到一个名为 secops_linked_data 的关联数据集。此数据集是指向由 Google SecOps 管理的实时安全数据的只读指针。
  4. Identity and Access Management (IAM) 权限:如需查询数据,您的用户账号或服务账号必须在您的项目上获得以下 IAM 角色:

    • roles/bigquery.dataViewer
    • roles/bigquery.jobUser

    通过这些角色,用户(例如安全分析师和数据使用者)可以查询关联数据集中的数据,并在其项目中运行 BigQuery 作业。

  5. 运行测试查询:打开 BigQuery SQL 工作区,然后运行基本查询,以验证您的访问权限是否已正确配置。您可以使用以下代码段(将 PROJECT_ID 替换为您的实际 Google Cloud 项目 ID):

    SELECT *
    FROM `PROJECT_ID.secops_linked_data.events`
    LIMIT 10;
    

查询 BigQuery 数据

您可以直接在 BigQuery 中运行查询,也可以将自己的商业智能工具(例如 Microsoft Power BI)连接到 BigQuery。

如需详细了解查询,请参阅以下内容:

BigQuery 中的数据保留期限

BigQuery 中数据的保留期限与为 Google SecOps 租户配置的数据保留期限相同。没有单独的可配置设置来为 BigQuery 中的数据自定义保留政策。当数据超出租户的保留期限时,系统会自动从 BigQuery 表中清除这些数据。

关联的数据集

关联的数据集包含多个表,每个表对应于不同类型的安全数据。

下表汇总了可用的数据集、其目标数据新鲜度以及用于确保数据完整性的主键:

数据集名称 说明 最佳预期新鲜度 用于重复信息删除的主键
events 采用 UDM 架构的标准化安全事件。
如需了解该架构,请参阅 Google SecOps 事件架构
5 分钟内 metadata.id
(字符串表示形式)

查询示例

以下示例演示了如何针对常见的安全用例查询数据集。请务必将 PROJECT_ID 替换为您的实际 Google Cloud 项目 ID。

示例 - 查找过去 24 小时内来自特定 IP 地址的所有网络连接

此查询会在 events 表中搜索来自可疑 IP 地址的近期网络活动。

SELECT
  metadata.product_event_type,
  principal.ip,
  target.ip,
  network.application_protocol
FROM
  `PROJECT_ID.secops_linked_data.events`
WHERE
  principal.ip = '192.0.2.1'
  AND metadata.event_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR);

示例 - 统计检测次数最多的前 10 条规则

以下针对 rule_detections 表的查询有助于确定您的环境中检测到的最常见威胁或政策违规行为。

SELECT
  rule_name,
  COUNT(*) AS detection_count
FROM
  `PROJECT_ID.secops_linked_data.rule_detections`
WHERE
  detection.id IS NOT NULL
GROUP BY
  1
ORDER BY
  2 DESC
LIMIT
  10;

最佳做法

以下是使用高级 BigQuery Export 进行查询的一些最佳实践:

  • 优化费用:避免使用 SELECT *。在查询中,仅指定所需的列,以减少扫描的数据量并降低查询费用。
  • 使用分区过滤条件events 表按 hour_time_bucket 列进行分区。请务必在此列中添加 WHERE 子句过滤条件,以将查询限制在尽可能小的时间窗口内,从而显著提高性能并降低费用。
  • 编写高效的查询:UDM 架构范围广且稀疏。如需高效过滤特定事件类型,请在相关字段上使用 WHERE... IS NOT NULL。例如,如需仅查找 DNS 查询,请过滤 WHERE network.dns.questions.name IS NOT NULL
  • 验证查询:在运行查询之前,请使用 BigQuery 网页界面中的查询验证器来估算数据处理的大小和费用。这有助于避免可能产生大量费用的大型查询。
  • 根据聚簇列进行过滤:在 WHERE 子句中使用聚簇列,以缩短查询延迟时间并降低扫描费用。根据聚簇列进行过滤的效率更高,因为这样一来,BigQuery 可以更有效地缩小需要处理的数据范围。

    events 表中的聚簇列为 metadata.log_typemetadata.event_typemetadata.product_event_type

已知限制

以下是高级 BigQuery Export 功能的已知限制:

  • 实体图延迟时间entity_graph 数据集使用批量处理流程导出,数据新鲜度约为 4 小时。
  • 客户管理的加密密钥 (CMEK):如果客户已在 Google SecOps 实例中启用 CMEK,则无法使用高级 BigQuery Export。
  • UDM 架构列:BigQuery 对每个表的列数设置了 10,000 列的软限制。UDM 架构包含超过 27,000 个字段,并且填充稀疏。导出流水线会智能地仅包含给定事件的已填充列,从而使大多数客户的导出量远低于上限。Google SecOps 会监控列使用情况,并在列使用量接近此阈值时主动为您的租户项目申请提高限额。
  • 保留政策:导出到 BigQuery 的所有安全数据的数据保留期限会自动与 Google SecOps 项目的数据保留期限同步,无法单独配置。
  • 延迟到达的数据:在极少数情况下,如果数据到达处理流水线的时间明显延迟,则数据可能无法正确合并。系统旨在最大限度地减少这种情况,但这是依赖最终一致性的高吞吐量流式传输系统的已知特征。
  • 丰富的数据:覆盖范围仅限于单次丰富 UDM 事件。重新丰富的 UDM 事件不会导出到租户项目的 BigQuery 实例。
  • 历史数据:数据导出从启用高级 BigQuery 导出功能的那一刻开始,旧数据仍可在现有项目中访问。如需查询在启用高级 BigQuery 导出功能之前导出的数据,您需要使用单个查询来联接两个项目中的数据,或者针对相应项目运行两个单独的查询(一个用于旧数据集,另一个用于新数据集)。

问题排查和支持

下表提供了您可能会遇到的常见问题的解决方案:

观测到的症状 可能的原因 推荐措施
查询失败,并显示 Access Denied: User does not have permission. 用户或服务账号缺少与 Google SecOps 实例关联的 Google Cloud 项目的必要 BigQuery IAM 角色。 向该正文授予 BigQuery Data ViewerBigQuery Job User 角色。使用 gcloud projects get-iam-policy YOUR_PROJECT_ID --flatten="bindings.members" --format='table(bindings.role)' --filter="bindings.members:user:your-user@example.com" 验证此信息
secops_linked_data 数据集未显示在我的 BigQuery 项目中。 1. 您不在正确的 Google Cloud 项目
中。2. 贵组织未订阅企业 Plus 版。
3. 您的组织使用的是企业 Plus 版方案,但您的 Google SecOps 实例中未启用高级 BigQuery Export。
1. 在 Google Cloud 控制台中,验证您是否已选择与 Google SecOps 实例关联的项目。
2. 请与您的 Google 代表联系,确认您的 Google SecOps 许可层级。
3. 与您的 Google SecOps 代表联系,让对方在您的 Google SecOps 实例中启用高级 BigQuery Export 功能。
在查询结果中看到看似重复的事件。 这可能是因为高吞吐量数据流中存在延迟到达的数据。系统使用至少一次传送语义。 如果您怀疑存在重复项,请按数据集中列出的主键对查询进行分组,以获取计数。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。