收集 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 名称字段中,输入 Feed 的名称,例如 GCP IDS 日志。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 GCP IDS 作为日志类型。
  7. 点击Chronicle 服务账号字段旁边的获取服务账号。
  8. 点击下一步。
  9. 为以下输入参数指定值:
    • 存储桶 URI:Cloud Storage 存储桶网址;例如 gs://gcp-ids-logs。
    • 源删除选项:根据您的偏好选择删除选项。 注意:如果您选择 Delete transferred files 或 Delete 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 直接映射,仅当方向为从客户端到服务器或 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 仅当方向为从客户端到服务器或 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 专业人士的解答。