将 BigQuery 与 Google SecOps 集成
本文档介绍了如何将 BigQuery 与 Google Security Operations 集成。
使用场景
BigQuery 集成使用 Google SecOps 功能来支持以下用例:
威胁情报丰富:使用存储在 BigQuery 中的威胁情报数据自动丰富安全提醒,以评估潜在威胁的严重程度和可信度。
用户行为分析:通过分析存储在 BigQuery 中的历史日志来识别异常用户活动,从而检测内部威胁和被盗账号。
安全数据湖分析:使用 BigQuery 查询功能分析从各种来源汇总的大量安全数据,以改进威胁搜寻。
高级机器学习/AI 分析:使用历史安全数据和 BigQuery ML 构建自定义模型,以实现预测性防御和自动风险评分。
长期数据保留:将已解决的突发事件数据归档到 BigQuery 中,以实现经济实惠的长期存储,从而支持合规性和取证审核。
准备工作
在 Google SecOps 中配置 BigQuery 集成之前,请完成以下前提条件步骤:
选择并配置以下身份验证方法之一:
方法 1:Workload Identity(推荐):此方法使用服务账号模拟来使用短期有效的临时访问令牌。
方法 2:服务账号 JSON 密钥:此方法依赖于静态、长期有效的密钥文件。
授予 IAM 角色
向服务账号授予必要的权限后,集成便可运行作业并访问您的数据。以下标准角色由 Google Cloud 管理,如果 API 要求发生变化,这些角色会自动更新。如需将这些角色分配给您的服务账号,请完成以下步骤:
在 Google Cloud 控制台中,前往 IAM。
在主账号列表中找到您的服务账号,然后点击修改主账号 (edit)。
点击添加其他角色,然后选择以下角色:
BigQuery User (
roles/bigquery.user):允许集成在项目中运行作业(包括查询)。BigQuery Data Viewer (
roles/bigquery.dataViewer):允许集成从数据集和表中读取数据和元数据。Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer):如果您在集成设置中配置Quota Project ID,则此角色是必需的。
点击保存。
创建服务账号
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
点击 add 创建服务账号。
提供名称和说明,然后点击创建并继续。
在向此服务账号授予对项目的访问权限步骤中,添加上一步中确定的角色。
点击完成。记下服务账号的邮箱。
配置 Workload Identity 凭证
建议使用 Workload Identity,因为它通过服务账号模拟使用短期有效的访问令牌。
识别唯一实例身份
建立连接需要向 Google SecOps 实例授予模拟服务账号的权限。
在 Google SecOps 中,前往内容中心 > 响应集成。
选择 BigQuery 集成,然后在
Workload Identity Email字段中输入您的服务账号邮箱。依次点击保存 > 测试。测试预计会失败。
点击测试旁边的 close_small 按钮,然后找到以
gke-init-python@...或soar-python@...开头的身份电子邮件。复制此唯一邮箱。
在 Google Cloud中授权实例身份
在 Google Cloud 控制台中,前往 IAM 和管理 > 服务账号。
选择目标服务账号,然后依次前往权限 > 授予访问权限。
将唯一邮箱粘贴到新的主账号字段中,并分配 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator)。
配置 JSON 密钥
静态、长期有效的密钥文件需要手动轮替。仅当 Workload Identity 身份验证不可用时,才使用此方法。
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。
前往密钥标签页,然后依次点击添加密钥 > 创建新密钥。
选择 JSON,然后点击创建。文件会自动下载到您的计算机上。
手动配置各个参数
如果您选择手动输入凭证,请在文本编辑器中打开下载的 JSON 密钥文件,以复制集成设置中所需的各个值。
集成参数
如需在 Google SecOps 与 BigQuery 之间建立连接,您必须配置以下参数。该集成支持三种不同的身份验证路径。选择以下方法之一来提供凭据。
Workload Identity:使用
Workload Identity Email和Quota Project ID。服务账号 JSON 文件:使用
Service Account Json File Content一次性提供整个密钥。手动输入各个参数:使用从 JSON 密钥中手动复制的单独字段。
| 参数 | 说明 |
|---|---|
API Root |
可选。 BigQuery 实例的 API 根(例如 |
Workload Identity Email |
可选。 服务账号的客户端邮箱。请将其用于 Workload Identity 身份验证。 |
Service Account Json File Content |
可选。 服务账号密钥 JSON 文件的完整内容。 如果您配置此参数,集成会忽略各个凭据参数。 |
Quota Project ID |
可选。 用于 API 使用和结算的项目 ID。使用 Workload Identity 身份验证时,此参数是必需的。 |
Project ID |
可选。 BigQuery 中的目标项目 ID。 |
Verify SSL |
必填。 验证连接的 SSL 证书。默认处于启用状态。 |
个人凭证参数
仅当您手动输入凭证(而非使用完整的 JSON 文件内容或 Workload Identity)时,才使用以下参数。
| 参数 | 说明 |
|---|---|
Account Type |
可选。 在 JSON 密钥的 |
Private Key ID |
可选。 在 JSON 密钥的 |
Private Key |
可选。 在 JSON 密钥的 |
Client Email |
可选。 在 JSON 密钥的 |
Client ID |
可选。 在 JSON 密钥的 |
Auth URI |
可选。 在 JSON 密钥的 默认值为 |
Token URI |
可选。 在 JSON 密钥的 默认值为 |
Auth Provider X509 URL |
可选。 在 JSON 密钥的 |
Client X509 URL |
可选。 在 JSON 密钥的 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。
Ping
使用 Ping 操作测试与 BigQuery 的连接。
此操作不会在 Google SecOps 实体上运行。
操作输入
无。
操作输出
Ping 操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 不可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
输出消息
Ping 操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully connected to the Google BigQuery server with
the provided connection parameters! |
操作成功。 |
Failed to connect to the Google BigQuery server! Error is
ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用 Ping 操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
运行自定义查询
使用运行自定义查询操作在 BigQuery 中执行自定义查询。
此操作不会在 Google SecOps 实体上运行。
操作输入
运行自定义查询操作需要以下参数:
| 参数 | 说明 |
|---|---|
Query |
必填。 要执行的 SQL 查询。 |
Max Results To Return |
可选。 每个响应要返回的结果数。 默认值为 |
操作输出
运行自定义查询操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例展示了使用运行自定义查询操作时收到的 JSON 结果输出:
{
"Airport_Code": "CODE",
"Airport_Name": "NAME",
"Time_Label": "2015/05",
"Time_Month": 5,
"Time_Month_Name": "May",
"Time_Year": 2015,
"Statistics___of_Delays_Carrier": 351,
"Statistics___of_Delays_Late_Aircraft": 546,
"Statistics___of_Delays_National_Aviation_System": 292,
"Statistics___of_Delays_Security": 2,
"Statistics___of_Delays_Weather": 100,
"Statistics_Carriers_Names": "Example Air Lines Inc., Example Airlines Co.",
"Statistics_Carriers_Total": 3,
"Statistics_Flights_Cancelled": 88,
"Statistics_Flights_Delayed": 1289,
"Statistics_Flights_Diverted": 32,
"Statistics_Flights_On_Time": 6182,
"Statistics_Flights_Total": 7591,
"Statistics_Minutes_Delayed_Carrier": 19332,
"Statistics_Minutes_Delayed_Late_Aircraft": 34376,
"Statistics_Minutes_Delayed_National_Aviation_System": 12346,
"Statistics_Minutes_Delayed_Security": 48,
"Statistics_Minutes_Delayed_Total": 76163,
"Statistics_Minutes_Delayed_Weather": 100061
}
输出消息
运行自定义查询操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully executed query in Google BigQuery! |
操作成功。 |
Error executing action "Run Custom Query". Reason:
ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用运行自定义查询操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
运行 SQL 查询
使用运行 SQL 查询操作在 BigQuery 中执行查询。
此操作不会在 Google SecOps 实体上运行。
操作输入
运行 SQL 查询操作需要以下参数:
| 参数 | 说明 |
|---|---|
Dataset Name |
必填。 执行查询时要使用的数据集的名称。 |
Query |
必填。 要执行的 SQL 查询。 |
Max Results To Return |
可选。 每个响应要返回的结果数。 默认值为 |
操作输出
运行 SQL 查询操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 不可用 |
| 丰富化表 | 不可用 |
| JSON 结果 | 不可用 |
| 输出消息 | 可用 |
| 脚本结果 | 可用 |
JSON 结果
以下示例说明了使用运行 SQL 查询操作时收到的 JSON 结果输出:
{
"Airport_Code": "CODE",
"Airport_Name": "NAME",
"Time_Label": "2015/05",
"Time_Month": 5,
"Time_Month_Name": "May",
"Time_Year": 2015,
"Statistics___of_Delays_Carrier": 351,
"Statistics___of_Delays_Late_Aircraft": 546,
"Statistics___of_Delays_National_Aviation_System": 292,
"Statistics___of_Delays_Security": 2,
"Statistics___of_Delays_Weather": 100,
"Statistics_Carriers_Names": "Example Airlines Inc.,Example Airlines Co.",
"Statistics_Carriers_Total": 3,
"Statistics_Flights_Cancelled": 88,
"Statistics_Flights_Delayed": 1289,
"Statistics_Flights_Diverted": 32,
"Statistics_Flights_On_Time": 6182,
"Statistics_Flights_Total": 7591,
"Statistics_Minutes_Delayed_Carrier": 19332,
"Statistics_Minutes_Delayed_Late_Aircraft": 34376,
"Statistics_Minutes_Delayed_National_Aviation_System": 12346,
"Statistics_Minutes_Delayed_Security": 48,
"Statistics_Minutes_Delayed_Total": 76163,
"Statistics_Minutes_Delayed_Weather": 100061
}
输出消息
运行 SQL 查询操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
Successfully executed query in the BigQuery dataset
DATASET_NAME. |
操作成功。 |
Error executing action "Run SQL Query". Reason:
ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用运行 SQL 查询操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。