本文档介绍如何将 Security Command Center 发现结果以按需方式批量导出到 BigQuery。
BigQuery 是 Google Cloud经济实惠的全托管式 PB 级分析数据仓库,可让您近乎实时地分析大量数据。如需详细了解 BigQuery,请参阅 BigQuery 文档。
概览
此功能可提供截至特定时间点的发现结果快照。此功能可与持续 BigQuery 导出功能相辅相成,提供全面的分析和报告。
借助批量导出功能,您可以执行以下操作:
数据集结构
发现结果会以 findings
表中的行的形式导出到 BigQuery,且该表会按 source_id
、finding_id
和 event_time
进行聚簇。
每个数据集包含一个 findings
表,其中包含以下字段:
字段 | 说明 |
---|---|
source_id |
Security Command Center 分配给发现结果来源的唯一标识符。例如,来自 Cloud Anomaly Detection 来源的所有发现结果都具有相同的 示例: |
finding_id |
表示发现结果的唯一标识符。该标识符在组织来源范围内是唯一的。它由字母数字构成,并且少于或等于 32 个字符。 |
event_time |
事件的发生时间或发现结果的更新时间。例如,如果发现结果表明防火墙打开,则 示例: |
bulk_export_id |
对于批量导出(预览版),这是一个 UUID。 对于持续导出,此字段为空。 |
finding |
被注入到 Security Command Center 以进行展示、通知、分析、政策测试和实施的评估数据(如安全、风险、运行状况或隐私)记录。例如,App Engine 应用中的跨站脚本攻击 (XSS) 漏洞是一个发现结果。
如需详细了解嵌套字段,请参阅 |
resource |
与此发现结果关联的 Google Cloud 资源的相关信息。 如需详细了解嵌套字段,请参阅 |
费用
您需要支付与此功能相关的 BigQuery 费用,才能在 BigQuery 中存储数据。如需了解详情,请参阅 BigQuery 存储价格。
准备工作
您必须先完成以下步骤,然后才能启用此功能。
设置权限
如需完成本指南,您必须拥有以下 Identity and Access Management (IAM) 角色:
在要从中导出发现结果的组织中,拥有以下角色之一:
- Security Center BigQuery Exports Editor
(
roles/securitycenter.bigQueryExportsEditor
) - Security Center Admin
(
roles/securitycenter.admin
)
如需详细了解 Security Command Center 角色,请参阅访问权限控制。
- Security Center BigQuery Exports Editor
(
在 BigQuery 数据集中,拥有 BigQuery Data Owner (
roles/bigquery.dataOwner
) 角色如需详细了解 BigQuery 角色,请参阅 BigQuery IAM 角色和权限。
在目标 BigQuery 数据集所属的项目中,拥有 ProjectIAMAdmin (
roles/resourcemanager.projectIamAdmin
) 角色
创建 BigQuery 数据集
按照创建数据集中的步骤创建一个 BigQuery 数据集。
启用 Security Command Center API
如需导出发现结果,您必须按照以下步骤启用 Security Command Center API:
进入 Google Cloud 控制台中的“API 库”页面。
选择要启用 Security Command Center API 的项目。
在搜索字段中,输入
Security Command Center
,然后点击搜索结果中的 Security Command Center。在随即显示的 API 页面上,点击启用。
您的项目随即会启用 Security Command Center API。
在 VPC Service Controls 中授予边界访问权限
如果您使用 VPC Service Controls,请查看在 VPC Service Controls 中授予边界访问权限,并根据需要执行相应步骤。
对于为给定服务边界创建了批量导出的每位用户,都需要重复执行此步骤。
为新的 BigQuery 批量导出创建入站规则
如果您使用 VPC Service Controls,请查看为向 BigQuery 进行的新导出创建入站规则并根据需要执行相应步骤。
BigQuery 批量导出限制
创建 BigQuery 批量导出时,请考虑以下限制:
- 对于单个组织,在任何给定时间,只能同时进行三项批量导出。
- 如果您请求向同一 BigQuery 数据集进行多项非并发批量导出,则系统会将这些导出中的较新发现结果附加到 BigQuery
findings
表。发现结果不会被覆盖。
创建 BigQuery 批量导出
只能在组织级层批量导出发现结果。
如需将发现结果批量导出到 BigQuery 实例,请使用 gcloud CLI 并按照以下步骤操作:
前往 Google Cloud 控制台。
选择启用了 Security Command Center API 的项目。
点击激活 Cloud Shell。
如需创建新的导出配置,请运行以下命令:
gcloud scc findings export-to-bigquery PARENT \ --dataset=DATASET_NAME \ [--location=LOCATION; default="global"] \
替换以下内容:
PARENT
:导出范围的相对名称。示例格式:organizations/ORGANIZATION_ID
DATASET_NAME
:BigQuery 数据集的名称。示例格式:projects/PROJECT_ID/datasets/DATASET_ID
LOCATION
:用于创建导出配置的 Security Command Center 位置;如果启用了数据驻留,请使用eu
、sa
或us
;否则,请使用值global
。 此变量为可选项。例如,如需批量导出所有发现结果,请运行以下命令:
gcloud scc findings export-to-bigquery organizations/123 --dataset=projects/123/datasets/DATASET
在数据驻留方面,上述示例调用的是全球端点。
如需为
eu
端点创建相同的批量导出,请运行以下命令:gcloud scc findings export-to-bigquery organizations/123 --dataset=projects/123/datasets/DATASET --location=locations/eu
此命令会返回一个长时间运行的操作对象,其中包含跟踪导出状态时所需的 name
字符串。如需跟踪此 BigQuery 批量导出的状态,请参阅查看批量导出的状态。
如需查看您的发现结果,请参阅查看发现结果。
查询
如需了解可用于分析发现结果数据的各种查询,请参阅实用查询。
查看批量导出的状态
如需查看批量导出的状态,您需要使用之前创建批量导出时返回的 long running operation name
字符串。
前往 Google Cloud 控制台。
选择启用了 Security Command Center API 的项目。
点击激活 Cloud Shell。
如需验证批量导出配置的详细信息,请运行以下命令:
gcloud scc operations describe LONG_RUNNING_OPERATION_NAME \ --organization=ORGANIZATION_ID
替换以下内容:
LONG_RUNNING_OPERATION_NAME
:之前创建批量导出时返回的name
字符串。ORGANIZATION_ID
例如,如需查看组织 ID 设置为
123
的组织中返回的name: "long-running-operation-name"
所对应批量导出请求的状态,请运行以下命令:gcloud scc operations describe long-running-operation-name \ --organization=123
- 如果导出成功,响应将包含
done: true
。 - 如果导出失败,响应则会包含一个错误代码。
- 如果导出仍在进行中,则响应既不会包含
done: true
,也不会包含任何错误代码。
BigQuery 批量导出和持续导出
如果您想对同一 BigQuery 数据集同时使用批量和持续 BigQuery 导出,可以采用以下两种方法:
先创建持续导出,然后通过批量导出进行回填。
设置向 BigQuery 数据集进行的持续导出。成功创建导出后,您将开始实时接收 Security Command Center 发现结果。
使用相同的目标 BigQuery 数据集创建批量导出。系统会将导出时所有 Security Command Center 发现结果的快照导出到所选数据集中。
批量导出需要花一些时间来执行。因此,如果在 T1 时创建持续导出,在 T2 时触发批量导出,并在 T3 时完成批量导出的发现结果快照,那么在 T1 到 T3 之间可能会看到重复记录。不过,不会有缺失的发现结果。
先创建批量导出,然后再创建持续导出。
创建批量导出。系统会将导出运行期间的所有 Security Command Center 发现结果的快照导出到所选的 BigQuery 数据集。
设置向同一目标 BigQuery 数据集进行的持续导出。成功创建导出后,您将开始实时接收 Security Command Center 发现结果。
如果在 T1 时创建批量导出,在 T2 时完成批量导出的发现结果快照,并在 T3 时触发持续导出,那么 BigQuery 数据集中可能会缺失 T2 到 T3 之间的发现结果。