收集 Cloud Security Command Center 中的“未指定”日志
本文档介绍了如何使用 Cloud Storage 导出 Security Command Center 未指定日志并将其提取到 Google 安全运营。解析器会将采用 JSON 格式的原始安全问题转换为统一数据模型 (UDM)。它专门用于处理输入数据结构中的不一致性,提取漏洞详情和用户信息等相关字段,并使用标签和元数据丰富输出,以便改进分析和关联。
准备工作
- 确保 Google Cloud 在您的环境中启用并配置了 Security Command Center Google Cloud 。
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 Security Command Center 和 Cloud Logging 的特权访问权限。
创建 Cloud Storage 存储桶
- 登录 Google Cloud 控制台。
前往 Cloud Storage 存储分区页面。
点击创建。
在创建存储桶页面上,输入您的存储桶信息。完成以下各步骤后,点击继续以进入下一步:
在开始使用部分中,执行以下操作:
- 输入符合存储分区名称要求的唯一名称;例如 gcp-scc-unspecified-logs。
如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储分区上启用分层命名空间。
如需添加存储分区标签,请点击展开箭头以展开标签部分。
点击添加标签,然后为标签指定键和值。
在选择数据存储位置部分中,执行以下操作:
- 选择位置类型。
使用位置类型菜单选择一个位置,用于永久存储存储分区中的对象数据。
如需设置跨存储分区复制,请展开设置跨存储分区复制部分。
在为数据选择一个存储类别部分中,为存储分区选择默认存储类别,或者选择 Autoclass 对存储分区数据进行自动存储类别管理。
在选择如何控制对对象的访问权限部分中,选择否以强制执行禁止公开访问,然后为存储分区对象选择访问权限控制模型。
在选择如何保护对象数据部分中,执行以下操作:
- 在数据保护下,选择您要为存储分区设置的任何选项。
- 如需选择对象数据的加密方式,请点击标有数据加密的展开箭头,然后选择数据加密方法。
点击创建。
配置 Security Command Center 日志记录
- 登录 Google Cloud 控制台。
前往 Security Command Center 页面。
选择您的组织。
点击设置。
点击连续导出标签页。
在导出名称下,点击 Logging 导出。
在接收器下,开启将发现结果记录到 Logging。
在记录项目下,输入或搜索要在其中记录发现结果的项目。
点击保存。
配置 Google Cloud Security Command Center 未指定日志导出
- 登录 Google Cloud 控制台。
- 依次前往日志记录 > 日志路由器。
- 点击创建接收器。
提供以下配置参数:
- 接收器名称:输入一个有意义的名称,例如
scc-unspecified-logs-sink
。 - 接收器目标位置:选择 Cloud Storage 存储,然后输入存储分区的 URI;例如
gs://gcp-scc-unspecified-logs
。 日志过滤器:
logName="projects/<your-project-id>/logs/cloudsecurityscanner.googleapis.com%2Funspecified" resource.type="security_command_center_unspecified"
设置导出选项:包含所有日志条目。
- 接收器名称:输入一个有意义的名称,例如
点击创建。
配置 Cloud Storage 权限
- 依次前往 IAM 和管理 > IAM。
- 找到 Cloud Logging 服务账号。
- 向存储分区授予 roles/storage.admin。
在 Google SecOps 中配置 Feed 以提取 Google Cloud Security Command Center 未指定日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称;例如,Google Cloud Security Command Center 未指定日志。
- 选择 Google Cloud Storage 作为来源类型。
- 选择 Security Command Center Unspecified 作为日志类型。
- 点击 Chronicle 服务账号字段旁边的获取服务账号。
- 点击下一步。
为以下输入参数指定值:
- 存储分区 URI:Cloud Storage 存储分区网址;例如
gs://gcp-scc-unspecified-logs
。 - URI 类型:选择包含子目录的目录。
来源删除选项:根据您的偏好选择删除选项。
资源命名空间:资源命名空间。
提取标签:应用于此 Feed 中的事件的标签。
- 存储分区 URI:Cloud Storage 存储分区网址;例如
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
canonicalName | read_only_udm.target.resource_ancestors.name | 直接从原始日志字段 canonicalName 映射而来。表示目标资源的祖先。 |
类别 | read_only_udm.metadata.product_event_type | 直接从原始日志字段 category 映射而来。 |
类别 | read_only_udm.metadata.event_type | 派生自 category 字段。如果类别为 OPEN_FIREWALL 且满足特定条件,则会映射到 SCAN_VULN_HOST 。否则,默认为 GENERIC_EVENT 。 |
类别 | read_only_udm.security_result.category | 从原始日志字段 category 映射而来。如果类别为 OPEN_FIREWALL ,则会映射到 POLICY_VIOLATION 。 |
complies.ids | read_only_udm.additional.fields.value.string_value | 直接从原始日志字段 complies.ids 映射而来。表示合规性 ID。 |
complies.standard | read_only_udm.additional.fields.value.string_value | 直接从原始日志字段 complies.standard 映射而来。表示合规性标准。 |
complies.standard | read_only_udm.about.labels.value | 直接从原始日志字段 complies.standard 映射而来。表示合规性标准。 |
contacts.security.contacts.email | read_only_udm.security_result.about.user.email_addresses | 直接从原始日志字段 contacts.security.contacts.email 映射而来。表示安全联系人的电子邮件地址。 |
contacts.technical.contacts.email | read_only_udm.security_result.about.user.email_addresses | 直接从原始日志字段 contacts.technical.contacts.email 映射而来。表示技术联系人的电子邮件地址。 |
createTime | read_only_udm.security_result.detection_fields.value | 直接从原始日志字段 createTime 映射而来。 |
eventTime | read_only_udm.metadata.event_timestamp | 从原始日志字段 eventTime 转换为时间戳后直接映射。 |
externalUri | read_only_udm.about.url | 直接从原始日志字段 externalUri 映射而来。 |
mute | read_only_udm.security_result.detection_fields.value | 直接从原始日志字段 mute 映射而来。 |
muteInitiator | read_only_udm.security_result.detection_fields.value | 直接从原始日志字段 muteInitiator 映射而来。 |
muteUpdateTime | read_only_udm.security_result.detection_fields.value | 直接从原始日志字段 muteUpdateTime 映射而来。 |
name | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 name 映射而来。此 ID 将用作发现 ID。 |
父级 | read_only_udm.target.resource_ancestors.name | 直接从原始日志字段 parent 映射而来。 |
parentDisplayName | read_only_udm.metadata.description | 直接从原始日志字段 parentDisplayName 映射而来。 |
resourceName | read_only_udm.target.resource.name | 直接从原始日志字段 resourceName 映射而来。 |
和程度上减少 | read_only_udm.security_result.severity | 直接从原始日志字段 severity 映射而来。 |
sourceDisplayName | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceDisplayName 映射而来。 |
sourceProperties.AllowedIpRange | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceProperties.AllowedIpRange 映射而来。 |
sourceProperties.ExternallyAccessibleProtocolsAndPorts.IPProtocol | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceProperties.ExternallyAccessibleProtocolsAndPorts.IPProtocol 映射而来。 |
sourceProperties.ExternallyAccessibleProtocolsAndPorts.ports | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceProperties.ExternallyAccessibleProtocolsAndPorts.ports 映射而来。 |
sourceProperties.ReactivationCount | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceProperties.ReactivationCount 映射而来。 |
sourceProperties.ResourcePath | read_only_udm.target.resource.attribute.labels.value | 直接从原始日志字段 sourceProperties.ResourcePath 映射而来。这些值会串联成一个字符串。 |
sourceProperties.ScannerName | read_only_udm.additional.fields.value.string_value | 直接从原始日志字段 sourceProperties.ScannerName 映射而来。 |
sourceProperties.ScannerName | read_only_udm.principal.labels.value | 直接从原始日志字段 sourceProperties.ScannerName 映射而来。 |
state | read_only_udm.security_result.detection_fields.value | 直接从原始日志字段 state 映射而来。 |
read_only_udm.metadata.log_type | 在解析器代码中硬编码为 GCP_SECURITYCENTER_UNSPECIFIED 。 |
|
read_only_udm.metadata.product_log_id | 从 name 字段中提取,表示发现结果 ID。 |
|
read_only_udm.metadata.product_name | 在解析器代码中硬编码为 Security Command Center 。 |
|
read_only_udm.metadata.vendor_name | 在解析器代码中硬编码为 Google 。 |
|
read_only_udm.security_result.about.investigation.status | 在解析器代码中硬编码为 NEW 。 |
|
read_only_udm.security_result.alert_state | 在解析器代码中硬编码为 NOT_ALERTING 。 |
|
read_only_udm.security_result.url_back_to_product | 在解析器代码中使用以下格式构建:https://console.cloud.google.com/security/command-center/findingsv2;name=organizations%2F{organization_id}%2Fsources%2F{source_id}%2Ffindings%2F{finding_id} 。 |
|
read_only_udm.target.resource.product_object_id | 从原始日志中的 parent 字段中提取,表示来源 ID。 |
|
read_only_udm.target.resource.resource_type | 在解析器代码中设置为 CLUSTER 。 |
|
read_only_udm.target.resource_ancestors.resource_type | 在解析器代码中硬编码为 CLOUD_PROJECT 。 |
|
read_only_udm.target.resource_ancestors.name | 从原始日志中的 resourceName 字段中提取,表示项目 ID。 |
|
read_only_udm.additional.fields.key | 使用硬编码键 compliances_id_0_0 、compliances_standard_0 和 sourceProperties_ScannerName 创建了多个实例。 |
|
read_only_udm.about.labels.key | 在解析器代码中硬编码为 compliances_standard 和 compliances_id 。 |
|
read_only_udm.principal.labels.key | 在解析器代码中硬编码为 sourceProperties_ScannerName 。 |
|
read_only_udm.target.resource.attribute.labels.key | 系统使用以下硬编码键创建了多个实例:finding_id 、source_id 、sourceProperties_ResourcePath 、sourceDisplayName 、sourceProperties_ReactivationCount 、sourceProperties_AllowedIpRange 、sourceProperties_ExternallyAccessibleProtocolsAndPorts_IPProtocol 、sourceProperties_ExternallyAccessibleProtocolsAndPorts_ports 。 |
|
read_only_udm.security_result.about.user.attribute.roles.name | 系统会根据原始日志中的 contacts 字段创建两个实例,一个的值为 Security ,另一个的值为 Technical 。 |
|
read_only_udm.security_result.detection_fields.key | 系统使用以下硬编码键创建了多个实例:mute 、mute_update_time 、mute_initiator 、createTime 、state 。 |
变化
2023-05-01
- 更新了解析器,以处理不再使用的标签的其他映射(已废弃)。
2023-11-29
- 调整了
principal/target.hostname
和principal/target.asset.hostname
的映射,使其以相同的方式运行。
2023-05-02
- 现在,解析器会为 UDM 中的
security_result.url_back_to_product
字段创建格式正确的网址 (网址)。
2023-04-12
- 默认更新了
GCP_SECURITYCENTER_UNSPECIFIED
解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。