收集 Cloud 新一代防火墙日志

支持的语言:

本文档介绍了如何使用 Google Cloud将 Cloud NGFW 日志导出并注入到 Google Security Operations 中。解析器从 Google Cloud 防火墙日志中提取字段,并将其转换和映射到 UDM。它会处理各种日志字段,包括连接详细信息、威胁信息、规则详细信息和网络信息,并根据 actiondirection 字段执行数据类型转换、重命名和条件逻辑,以正确填充 UDM 模型。

准备工作

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

  • Google SecOps 实例。
  • Cloud NGFW 在您的 Google Cloud 环境中处于有效状态并已配置。
  • 对 Google Cloud 的特权访问权限,以及访问 Cloud NGFW 日志的相应权限。

创建 Cloud Storage 存储桶

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

    进入“存储桶”

  3. 点击创建

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

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

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

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

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

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

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

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

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

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

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

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

配置 Cloud NGFW 日志导出

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

    • 接收器名称:输入一个有意义的名称,例如 NGFW-Export-Sink
    • 接收器目标位置:选择 Google Cloud Storage,然后输入存储桶的 URI,例如 gs://gcp-ngfw-logs
    • 日志过滤条件

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

配置 Cloud Storage 权限

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

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed > 添加新 Feed
  • 内容中心 > 内容包 > 开始

如何设置 Google Cloud NGFW Enterprise Feed

  1. 点击 Google Cloud Compute 平台包。
  2. 找到 GCP NGFW Enterprise 日志类型。
  3. 点击下一步
  4. 为以下字段指定值:

    • 数据源类型:Google Cloud Storage V2
    • 存储桶 URI: Google Cloud 存储桶网址;例如 gs://gcp-ngfw-logs
    • 来源删除选项:根据您的偏好设置选择删除选项。

    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。

  5. 点击编年史服务账号字段旁边的获取服务账号

    高级选项

    • Feed 名称:用于标识 Feed 的预填充值。
    • 资产命名空间与 Feed 关联的命名空间
    • 提取标签:应用于相应 Feed 中所有事件的标签。
  6. 点击创建 Feed

如需详细了解如何为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 Feed

UDM 映射表

日志字段 UDM 映射 逻辑
insertId metadata.product_log_id 直接从 insertId 字段映射。
jsonPayload.action security_result.action_details 直接从 jsonPayload.action 字段映射。
jsonPayload.connection.clientIp principal.asset.ip 直接从 jsonPayload.connection.clientIp 字段映射。
jsonPayload.connection.clientIp principal.ip 直接从 jsonPayload.connection.clientIp 字段映射。
jsonPayload.connection.clientPort principal.port 直接从 jsonPayload.connection.clientPort 字段映射并转换为整数。
jsonPayload.connection.protocol network.ip_protocol jsonPayload.connection.protocol 映射。如果值为 tcp,则 UDM 字段设置为 TCP。类似的逻辑也适用于 udpicmpigmp
jsonPayload.connection.serverIp target.asset.ip 直接从 jsonPayload.connection.serverIp 字段映射。
jsonPayload.connection.serverIp target.ip 直接从 jsonPayload.connection.serverIp 字段映射。
jsonPayload.connection.serverPort target.port 直接从 jsonPayload.connection.serverPort 字段映射并转换为整数。
jsonPayload.interceptVpc.projectId security_result.rule_labels 从键为 rule_details_projectIdjsonPayload.interceptVpc.projectId 映射。
jsonPayload.interceptVpc.vpc security_result.rule_labels 从键为 rule_details_vpc_networkjsonPayload.interceptVpc.vpc 映射。
jsonPayload.securityProfileGroupDetails.securityProfileGroupId security_result.rule_labels 从键为 rule_details_security_profile_groupjsonPayload.securityProfileGroupDetails.securityProfileGroupId 映射。
jsonPayload.securityProfileGroupDetails.securityProfileGroupId security_result.rule_labels 从键为 rule_details_securityProfileGroupDetails_idjsonPayload.securityProfileGroupDetails.securityProfileGroupId 映射。
jsonPayload.threatDetails.category security_result.rule_labels 从键为 rule_details_categoryjsonPayload.threatDetails.category 映射。
jsonPayload.threatDetails.direction security_result.rule_labels 从键为 rule_details_directionjsonPayload.threatDetails.direction 映射。
jsonPayload.threatDetails.id security_result.threat_id 直接从 jsonPayload.threatDetails.id 字段映射。
jsonPayload.threatDetails.severity security_result.severity jsonPayload.threatDetails.severity 映射。如果值为 CRITICAL,则 UDM 字段设置为 CRITICALHIGHMEDIUMLOWINFO 也适用类似的逻辑。
jsonPayload.threatDetails.threat security_result.threat_name 直接从 jsonPayload.threatDetails.threat 字段映射。
jsonPayload.threatDetails.type security_result.rule_labels 从键为 rule_details_threat_typejsonPayload.threatDetails.type 映射。
jsonPayload.threatDetails.uriOrFilename security_result.rule_labels 从键为 rule_details_uriOrFilenamejsonPayload.threatDetails.uriOrFilename 映射。
logName metadata.product_event_type 直接从 logName 字段映射。
metadata.collected_timestamp metadata.collected_timestamp 直接从 receiveTimestamp 字段映射,并使用指定的日期格式进行解析。
metadata.event_type metadata.event_type 如果同时存在 principal_iptarget_ip,则设置为 NETWORK_CONNECTION。如果仅存在 principal_ip,则设置为 STATUS_UNCATEGORIZED。否则,请将其设置为 GENERIC_EVENT
metadata.product_name metadata.product_name 硬编码为 GCP Firewall
metadata.vendor_name metadata.vendor_name 硬编码为 Google Cloud Platform
receiveTimestamp metadata.collected_timestamp 直接从 receiveTimestamp 字段映射。
security_result.action security_result.action 派生自 jsonPayload.action 字段。根据 jsonPayload.action 的值映射到 ALLOWBLOCKUNKNOWN_ACTION
timestamp metadata.event_timestamp 直接从 timestamp 字段映射。
timestamp timestamp 直接从 timestamp 字段映射。

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