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

支持的服务:

本文档介绍了如何使用高级 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 Sharing 创建安全的 数据列表 并为您提供访问权限。在 BigQuery 的探索器 面板中,您的 Google Cloud 项目会自动订阅此列表,该列表会显示为 secops_linked_data 关联数据集

此模型支持强大的数据隔离,同时让您能够无缝地以只读方式进行查询。

使用高级 BigQuery Export

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

关键术语和概念

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

  • 关联数据集:一个只读 BigQuery 数据集,用作另一个项目中共享数据集的符号链接或指针。借助此功能,您无需复制数据即可查询数据,在数据提供方管理物理存储空间的同时提供安全访问。
  • BigQuery Sharing:一项服务,可让组织在内部和外部安全地共享数据和分析资产,例如 BigQuery 数据集。 Google Cloud
  • 租户项目:由 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 事件架构

此表按 hour_time_bucket 分区,并按 hour_time_bucketlog_typeevent_type 聚簇。
< 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 子句过滤条件,以将查询限制为尽可能小的时间窗口。如需进一步提升性能并降低费用,请按顺序过滤聚簇列(events 表的 hour_time_bucket,然后是 log_type,然后是 event_type)。这样,BigQuery 就可以有效地删减块,并仅扫描必要的数据。
  • 编写高效的查询 :UDM 架构宽而稀疏。如需高效过滤特定事件类型,请在相关字段上使用 WHERE ... IS NOT NULL。例如,如需仅查找 DNS 查询,请过滤 WHERE network.dns.questions.name IS NOT NULL
  • 验证查询 :在运行查询之前,请使用 BigQuery 网页界面中的查询验证器估算数据处理的大小和费用。这有助于避免可能很大且费用高昂的查询。

已知限制

以下是高级 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 Export 的那一刻开始,旧数据仍可在现有项目中访问。如需查询在启用高级 BigQuery Export 之前导出的数据,您需要使用 单个查询联接两个项目中的数据,或者在相应项目上 运行两个单独的查询(一个用于旧数据集,一个用于新数据集)。

问题排查和支持

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

观察到的症状 可能的原因 推荐措施
查询失败,并显示 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 专业人士的解答。