收集 Cloud Intrusion Detection System (Cloud IDS) 日志
本文档介绍了如何使用 Cloud Storage 将 Cloud IDS 日志导出并提取到 Google 安全运营中心。解析器会将采用 JSON 格式的原始 Cloud IDS 日志转换为结构化 UDM 格式。 Google Cloud 它会提取相关字段,将其映射到 UDM 架构,对事件进行分类,并使用网络方向和资源类型等其他上下文丰富数据。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保 Cloud IDS 已在您的 Google Cloud 环境中设置并处于活跃状态。
- 确保您拥有对 Cloud IDS 的 Google Cloud 特权访问权限以及适当的访问权限。
创建 Cloud Storage 存储桶
- 登录 Google Cloud 控制台。
前往 Cloud Storage 存储分区页面。
点击创建。
在创建存储桶页面上,输入您的存储桶信息。完成以下各步骤后,点击继续以进入下一步:
在开始使用部分中,执行以下操作:
- 输入符合存储分区名称要求的唯一名称;例如 gcp-ids-logs。
如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储分区上启用分层命名空间。
如需添加存储分区标签,请点击展开箭头以展开标签部分。
点击添加标签,然后为标签指定键和值。
在选择数据存储位置部分中,执行以下操作:
- 选择位置类型。
使用位置类型菜单选择一个位置,用于永久存储存储分区中的对象数据。
如需设置跨存储分区复制,请展开设置跨存储分区复制部分。
在为数据选择一个存储类别部分中,为存储分区选择默认存储类别,或者选择 Autoclass 对存储分区数据进行自动存储类别管理。
在选择如何控制对对象的访问权限部分中,选择否以强制执行禁止公开访问,然后为存储分区对象选择访问权限控制模型。
在选择如何保护对象数据部分中,执行以下操作:
- 在数据保护下,选择您要为存储分区设置的任何选项。
- 如需选择对象数据的加密方式,请点击标有数据加密的展开箭头,然后选择数据加密方法。
点击创建。
配置 Cloud IDS 日志导出
- 登录 Google Cloud 控制台。
- 依次前往日志记录 > 日志路由器。
- 点击创建接收器。
提供以下配置参数:
- 接收器名称:输入一个有意义的名称,例如
google-cloud-ids-logs-sink
。 - 接收器目标位置:选择 Cloud Storage 并提供 Google Cloud 存储分区 URI;例如
gs://gcp-ids-logs
。 日志过滤器:
logName="projects/<your-project-id>/logs/cloud-ids"
- 接收器名称:输入一个有意义的名称,例如
点击创建。
配置 Cloud Storage 权限
- 依次前往 IAM 和管理 > IAM。
- 找到 Cloud Logging 服务账号。
- 向存储分区授予 roles/storage.admin。
在 Google SecOps 中配置 Feed 以提取 Cloud IDS 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称;例如 GCP IDS 日志。
- 选择 Google Cloud Storage 作为来源类型。
- 选择 GCP IDS 作为日志类型。
- 点击 Chronicle 服务账号字段旁边的获取服务账号。
- 点击下一步。
为以下输入参数指定值:
- 存储分区 URI:Cloud Storage 存储分区网址;例如
gs://gcp-ids-logs
。 - URI 类型:选择包含子目录的目录。
来源删除选项:根据您的偏好选择删除选项。
资源命名空间:资源命名空间。
提取标签:应用于此 Feed 中的事件的标签。
- 存储分区 URI:Cloud Storage 存储分区网址;例如
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
insertId | metadata.product_log_id | 直接映射。 |
jsonPayload.alert_severity | security_result.severity | 直接映射。 |
jsonPayload.alert_time | metadata.event_timestamp | 直接映射。 |
jsonPayload.application | principal.application | 直接映射(仅当方向为服务器到客户端时)。 |
jsonPayload.application | target.application | 直接映射,仅当方向为客户端到服务器或 logName 包含 traffic 时才适用。 |
jsonPayload.category | security_result.category | 基于“jsonPayload.category”的值进行映射: - 'dos':NETWORK_DENIAL_OF_SERVICE - 'info-leak':NETWORK_SUSPICIOUS - 'protocol-anomaly':NETWORK_MALICIOUS - 'backdoor'、'spyware'、'trojan':SOFTWARE_MALICIOUS |
jsonPayload.category | security_result.category_details | 直接映射。 |
jsonPayload.cves | extensions.vulns.vulnerabilities.cve_id | 直接映射,迭代数组。 |
jsonPayload.destination_ip_address | target.ip | 直接映射。 |
jsonPayload.destination_port | target.port | 直接映射。 |
jsonPayload.details | extensions.vulns.vulnerabilities.description | 直接映射。 |
jsonPayload.details | security_result.detection_fields.value | 如果存在“jsonPayload.repeat_count”,则会进行映射。该键设置为“repeat_count”。 |
jsonPayload.direction | network.direction | 根据“jsonPayload.direction”的值进行映射: - “客户端到服务器”:出站 - “服务器到客户端”:入站 |
jsonPayload.elapsed_time | network.session_duration.seconds | 直接映射。 |
jsonPayload.ip_protocol | network.ip_protocol | 直接映射,转换为大写,然后映射到协议编号。 |
jsonPayload.name | security_result.threat_name | 直接映射。 |
jsonPayload.network | principal.resource.name | 直接映射(仅当方向为服务器到客户端时)。 |
jsonPayload.network | target.resource.name | 直接映射,仅当方向为客户端到服务器或 logName 包含 traffic 时才适用。 |
jsonPayload.repeat_count | security_result.detection_fields.value | 已映射(如果存在)。该键设置为“repeat_count”。 |
jsonPayload.session_id | network.session_id | 直接映射。 |
jsonPayload.source_ip_address | principal.ip | 直接映射。 |
jsonPayload.source_port | principal.port | 直接映射。 |
jsonPayload.start_time | about.labels.value | 已映射(如果存在)。该键设置为“start_time”。 |
jsonPayload.start_time | additional.fields.value.string_value | 已映射(如果存在)。该键设置为“start_time”。 |
jsonPayload.threat_id | security_result.threat_id | 直接映射。 |
jsonPayload.total_bytes | about.labels.value | 已映射(如果存在)。键设置为“total_bytes”。 |
jsonPayload.total_bytes | additional.fields.value.string_value | 已映射(如果存在)。键设置为“total_bytes”。 |
jsonPayload.total_packets | about.labels.value | 已映射(如果存在)。该键设置为“total_packets”。 |
jsonPayload.total_packets | additional.fields.value.string_value | 已映射(如果存在)。键设置为“total_packets”。 |
jsonPayload.type | security_result.detection_fields.value | 已映射(如果存在)。该键设置为“type”。 |
jsonPayload.uri_or_filename | target.file.full_path | 直接映射。 |
logName | security_result.category_details | 直接映射。 |
receiveTimestamp | metadata.collected_timestamp | 直接映射。 |
resource.labels.id | observer.resource.product_object_id | 直接映射。 |
resource.labels.location | observer.location.name | 直接映射。 |
resource.labels.resource_container | observer.resource.name | 直接映射。 |
resource.type | observer.resource.resource_subtype | 直接映射。 |
metadata.event_type | 根据一组基于其他字段的存在性和值的条件规则确定,默认为“GENERIC_EVENT”。 | |
metadata.vendor_name | 静态值:Google Cloud Platform 。 |
|
metadata.product_name | 静态值:GCP_IDS 。 |
|
metadata.log_type | 静态值:GCP_IDS 。 |
|
extensions.vulns.vulnerabilities.vendor | 静态值:GCP_IDS ,为“jsonPayload.cves”中的每个 CVE 添加。 |
|
principal.resource.resource_type | 静态值:VPC_NETWORK ,如果存在“jsonPayload.network”且方向为服务器到客户端,则添加此值。 |
|
target.resource.resource_type | 静态值:VPC_NETWORK ,如果存在“jsonPayload.network”且方向为客户端到服务器或 logName 包含 traffic ,则添加此值。 |
|
observer.resource.resource_type | 静态值:CLOUD_PROJECT ,如果存在“resource.labels.resource_container”或“resource.type”,则添加。 |
|
observer.resource.attribute.cloud.environment | 静态值:GOOGLE_CLOUD_PLATFORM ,如果存在“resource.labels.resource_container”或“resource.type”,则添加。 |
|
is_alert | 如果“jsonPayload.alert_severity”为“CRITICAL”,则为 true,否则为 false。 | |
is_significant | 如果“jsonPayload.alert_severity”为“CRITICAL”,则为 true,否则为 false。 |
变化
2024-05-01
- 为已废弃的
noun.labels
添加了其他映射。
2023-12-13
- 将 GCP_IDS 解析器提升为默认解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。