收集 Cloud Intrusion Detection System (Cloud IDS) 日志

支持的语言:

本文档介绍如何使用 Cloud Storage 将 Cloud IDS 日志导出并注入到 Google Security Operations 中。解析器会将 Google Cloud 中的原始 JSON 格式 Cloud IDS 日志转换为结构化 UDM 格式。它会提取相关字段,将其映射到 UDM 架构,对事件进行分类,并使用网络方向和资源类型等其他上下文信息来丰富数据。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例。
  • Cloud IDS 已在您的 Google Cloud 环境中设置并处于活跃状态。
  • 对 Google Cloud 的特权访问权限,以及访问 Cloud IDS 的相应权限。

创建 Cloud Storage 存储桶

  1. 登录 Google Cloud 控制台
  2. 前往 Cloud Storage 存储分区页面。

    进入“存储桶”

  3. 点击创建

  4. 创建存储桶页面上,输入您的存储桶信息。完成以下每一步后,点击继续以继续执行后续步骤:

    1. 开始使用部分中,执行以下操作:

      1. 输入符合存储桶名称要求的唯一名称,例如 gcp-ids-logs
      2. 如需启用分层命名空间,请点击展开箭头以展开优化文件导向型和数据密集型工作负载部分,然后选择在此存储桶上启用分层命名空间

      3. 如需添加存储桶标签,请点击展开箭头以展开标签部分。

      4. 点击添加标签,然后为标签指定键和值。

    2. 选择数据存储位置部分中,执行以下操作:

      1. 选择位置类型
      2. 使用位置类型菜单选择一个位置,用于永久存储存储桶中的对象数据。

      3. 如需设置跨存储桶复制,请展开设置跨存储桶复制部分。

    3. 为数据选择一个存储类别部分中,为存储桶选择默认存储类别,或者选择 Autoclass 对存储桶数据进行自动存储类别管理。

    4. 选择如何控制对对象的访问权限部分中,选择强制执行禁止公开访问,然后为存储桶对象选择访问权限控制模型

    5. 选择如何保护对象数据部分中,执行以下操作:

      1. 数据保护下,选择您要为存储桶设置的任何选项。
      2. 如需选择对象数据的加密方式,请点击标有数据加密的展开箭头,然后选择数据加密方法
  5. 点击创建

配置 Cloud IDS 日志导出

  1. 登录 Google Cloud 控制台
  2. 前往日志记录 > 日志路由器
  3. 点击创建接收器
  4. 提供以下配置参数:

    • 接收器名称:输入一个有意义的名称,例如 google-cloud-ids-logs-sink
    • 接收器目标位置:选择 Cloud Storage 并提供 Google Cloud 存储桶 URI;例如 gs://gcp-ids-logs
    • 日志过滤条件

      logName="projects/<your-project-id>/logs/cloud-ids"
      
  5. 点击创建

配置 Cloud Storage 权限

  1. 前往 IAM 和管理> IAM
  2. 找到 Cloud Logging 服务账号。
  3. 授予对相应存储桶的 roles/storage.admin

设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed name 字段中,输入 Feed 的名称,例如 GCP IDS Logs
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择 GCP IDS 作为日志类型
  7. 点击Chronicle 服务账号字段旁边的获取服务账号
  8. 点击下一步
  9. 为以下输入参数指定值:
    • 存储分区 URI:Cloud Storage 存储桶网址;例如 gs://gcp-ids-logs
    • 来源删除选项:根据您的偏好设置选择删除选项。 注意:如果您选择 Delete transferred filesDelete transferred files and empty directories 选项,请确保您已向服务账号授予适当的权限。
    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天
  10. 点击下一步
  11. 最终确定界面中查看新的 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 直接映射,仅当方向为 client-to-server 或 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”的值进行映射:
-“client-to-server”:OUTBOUND
-“server-to-client”:INBOUND
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 直接映射,仅当方向为 client-to-server 或 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”,则添加该值。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。