使用高级 BigQuery Export
本文档介绍了如何使用 Advanced BigQuery Export 功能在 BigQuery 中访问和使用 Google SecOps 数据。作为 Enterprise 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 导出架构使用持续的流式传输流水线。Google SecOps 实例中的数据会使用高吞吐量的 BigQuery Storage Write API 推送到安全的 Google 管理的租户项目。
Google SecOps 会使用 BigQuery 共享功能创建安全的数据清单,并向您授予访问权限。在 BigQuery 的探索器窗格中,您的 Google Cloud 项目会自动订阅此商品详情,并显示为secops_linked_data
关联数据集。
此模型支持强大的数据隔离,同时为您提供无缝的只读查询访问权限。
使用高级 BigQuery Export
本部分介绍了如何在 BigQuery 中访问和使用 Google SecOps 数据。
关键术语和概念
以下是高级 BigQuery 导出功能的一些关键术语和概念:
- 关联数据集:一个只读 BigQuery 数据集,用作指向其他项目中共享数据集的符号链接或指针。这样一来,您无需复制数据即可查询数据,在数据提供方管理物理存储空间的同时,您还可以安全地访问数据。
- BigQuery Sharing: Google Cloud 服务,可让组织在内部和外部安全地共享数据和分析资产,例如 BigQuery 数据集。
- 租户项目:由 Google SecOps 拥有和管理的 Google Cloud 项目。此项目用于实际存储和管理导出的安全数据。您无法直接访问此项目。
- 您的项目:您组织拥有的与 Google SecOps 实例相关联的 Google Cloud 项目。这是关联数据集显示的项目,您可以在其中运行查询并产生分析费用。
- 项目 ID:项目的全局唯一标识符。
- 统一数据模型 (UDM):Google 的可扩展标准架构,用于将数百种供应商产品的安全遥测数据解析和标准化为一致的格式。
设置系统
请按照以下步骤设置系统以使用高级 BigQuery 导出功能,并开始查询数据:
- 确认许可:确保您的组织拥有 Google SecOps 企业 Plus 版许可。
- 确定您的项目:登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例相关联的 Google Cloud 项目。
- 找到关联的数据集:在 BigQuery 控制台中,使用探索器窗格导航到项目的资源。您会看到一个名为
secops_linked_data
的关联数据集。此数据集是指向由 Google SecOps 管理的实时安全数据的只读指针。 Identity and Access Management (IAM) 权限:如需查询数据,您的用户账号或服务账号必须在您的项目中获得以下 IAM 角色:
roles/bigquery.dataViewer
roles/bigquery.jobUser
通过这些角色,用户(例如安全分析师和数据使用者)可以查询关联数据集中的数据,并在其项目中运行 BigQuery 作业。
运行测试查询:打开 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 (字符串表示形式) |
rule_detections |
由 Google SecOps 检测引擎规则生成的检测结果。 如需了解架构,请参阅在 Google SecOps 中查看提醒和 IoC。 |
5 分钟内 | 无 |
ioc_matches |
在 UDM 事件中发现的 IoC 匹配项。 如需了解架构,请参阅在 Google SecOps 中查看提醒和 IoC。 |
5 分钟内 | 无 |
entity_graph |
有关实体(用户、资产)及其关系的情境数据。 如需了解架构,请参阅使用 Google SecOps 丰富事件和实体数据。 |
约 4 小时 (批量) |
无 |
ingestion_metrics |
有关日志提取量和数据源的统计信息。 如需了解架构,请参阅 Google SecOps 中的提取指标架构和 Looker 和 BigQuery 的提取指标参考。 |
约 5 分钟 | 无 (仅附加的时序) |
查询示例
以下示例展示了如何针对常见的安全用例查询数据集。请务必将 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 界面中的查询验证器。查询验证器会提供数据处理量的估计值,帮助您避免意外的大型查询和高费用查询。
已知限制
以下是高级 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 导出功能之前导出的数据,您需要使用单个查询来联接两个项目中的数据,或者针对相应项目运行两个单独的查询(一个用于旧数据集,另一个用于新数据集)。
问题排查和支持
下表提供了您可能会遇到的常见问题的解决方案:
观察到的症状 | 可能的原因 | 建议采取的操作 |
---|---|---|
查询失败,并显示 Access Denied: User does not have permission. |
用户或服务账号在与 Google SecOps 实例关联的 Google Cloud 项目中缺少必要的 BigQuery IAM 角色。 | 向相应正文授予 BigQuery Data Viewer 和 BigQuery 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 导出功能。 |
在查询结果中看到看似重复的事件。 | 这可能是因为高吞吐量数据流中存在延迟到达的数据。系统使用至少一次交付语义。 | 如果您怀疑存在重复项,请按数据集中列出的主键对查询进行分组,以获取计数。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。