收集 VPC 流日志

支持的语言:

本文档介绍了如何使用 Google Cloud将 VPC 流日志导出到 Google Security Operations。解析器将日志从其内置 JSON 格式转换为 Google Security Operations UDM。它会提取相关字段(例如源 IP 和目标 IP、端口、协议和发送的字节数),然后将这些字段映射到相应的 UDM 字段,同时考虑到网络方向和特殊情况,以便在 Google SecOps 中准确呈现数据。

准备工作

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

  • Google SecOps 实例。
  • VPC 流已在您的 Google Cloud 环境中设置并处于活动状态。
  • 对 Google Cloud的特权访问权限。

创建 Google Cloud Storage 存储分区

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

    进入“存储桶”

  3. 点击创建

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

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

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

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

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

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

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

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

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

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

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

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

在 Google Cloud VPC 流中配置日志导出

  1. 使用您的特权账号登录 Google Cloud 账号。
  2. 欢迎页面上,点击 VPC 网络
  3. 点击 Default,系统随即会显示子网页面。
  4. 选择所有日志
  5. 依次点击流日志 > 配置
  6. 选择汇总间隔时间;例如,30 秒
  7. 提供抽样率;例如 50%
  8. 点击保存
  9. 在搜索栏中搜索日志记录,然后点击 Enter 键。
  10. 日志浏览器中,通过在日志名称中选择 VPC_flows 来过滤日志,然后点击应用
  11. 点击更多操作
  12. 点击创建接收器
  13. 提供以下配置:
    1. 接收器详情:输入名称和说明。
    2. 点击下一步
    3. 接收器目标位置:选择 Cloud Storage 存储分区
    4. Cloud Storage 存储桶:选择之前创建的存储桶或创建新存储桶。
    5. 点击下一步
    6. 选择要包含在接收器中的日志:当您在 Cloud Storage 存储分区中选择一个选项时,系统会填充默认日志。
    7. 点击下一步
    8. 可选:选择要从接收器中过滤掉的日志:选择您不想接收的日志。
  14. 点击创建接收器

设置 Feed

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

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

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

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed name(Feed 名称)字段中,输入 Feed 的名称,例如 VPC Flow Logs
  5. 选择 Google Cloud Storage 作为来源类型
  6. 选择 GCP VPC 流作为日志类型
  7. 点击获取服务账号作为 Chronicle 服务账号
  8. 点击下一步
  9. 为以下输入参数指定值:

    • 存储桶 URIgs://my-bucket/<value> 格式的 Google Cloud 存储桶网址。
    • URI Is A:选择目录(包括子目录)
    • 来源删除选项:根据您的偏好设置选择删除选项。

  10. 点击下一步

  11. 最终确定界面中查看新的 Feed 配置,然后点击提交

支持的 VPC 流日志格式

VPC 流日志解析器支持 JSON 格式的日志。

支持的 VPC 流日志示例日志

  • JSON

    {
      "insertId": "1wjp1y9f8vc6y6",
      "jsonPayload": {
        "bytes_sent": "0",
        "connection": {
          "dest_ip": "198.51.100.0",
          "dest_port": 32846,
          "protocol": 6,
          "src_ip": "198.51.100.1",
          "src_port": 443
        },
        "dest_instance": {
          "project_id": "logging-259109",
          "region": "us-west2",
          "vm_name": "demisto-01",
          "zone": "us-west2-a"
        },
        "dest_vpc": {
          "project_id": "logging-259109",
          "subnetwork_name": "default",
          "vpc_name": "default"
        },
        "end_time": "2020-03-28T10:44:41.896734136Z",
        "packets_sent": "2",
        "reporter": "DEST",
        "start_time": "2020-03-28T10:44:41.896734136Z"
      },
      "logName": "projects/logging-259109/logs/compute.googleapis.com%2Fvpc_flows",
      "receiveTimestamp": "2020-03-28T10:44:50.112903743Z",
      "resource": {
        "labels": {
          "location": "us-west2-a",
          "project_id": "dummy_project_id",
          "subnetwork_id": "subnetwork_id",
          "subnetwork_name": "default"
        },
        "type": "gce_subnetwork"
      },
      "timestamp": "2020-03-28T10:44:50.112903743Z"
    }
    

UDM 映射表

日志字段 UDM 映射 逻辑
connection.dest_ip target.asset.ip
target.ip
当 network.direction 为 OUTBOUND 时,进行直接映射。
当 network.direction 为 INBOUND 时,从 principal.ip 映射。
connection.dest_port target.port 如果大于 -1,则转换为整数。
connection.protocol network.ip_protocol 转换为字符串,然后映射到整数。
根据整数值映射到 IP 协议名称(例如,TCP、UDP、ICMP)。
connection.src_ip principal.ip 直接映射。
connection.src_port principal.port 已转换为整数。
dest_instance.region target.location.name 直接映射。
dest_instance.vm_name target.asset.hostname 直接映射。
dest_location.city target.location.city 直接映射。
dest_location.country target.location.country_or_region 直接映射。
dest_location.region target.location.state 直接映射。
dest_vpc.project_id target.namespace 与 dest_vpc.vpc_name 搭配使用,以形成 target.namespace。
dest_vpc.vpc_name target.namespace 与 dest_vpc.project_id 结合使用,以形成 target.namespace。
insertId metadata.product_log_id 直接映射。
jsonPayload.bytes_sent network.sent_bytes 重命名为 network.sent_bytes 并转换为无符号整数。
jsonPayload.packets_sent network.sent_packets 已转换为整数。
labels.tunnel_id additional.fields 合并到键为 Tunnel Id 且类型为 string_value 的 additional.fields 中。
logName security_result.category_details 直接映射。
resource.labels.project_id target.resource.name 用于构建格式为 //cloudresourcemanager.googleapis.com/projects/{resource.labels.project_id} 的 target.resource.name。
resource.labels.region target.location.country_or_region 直接映射。
resource.labels.subnetwork_id target.user.attribute.labels 合并到键为 subnetwork_id 的 target.user.attribute.labels 中。
resource.type metadata.product_event_type 直接映射。
和程度上减少 security_result.severity 如果值为 DEBUG,则映射到 LOW
src_gke_details.cluster.cluster_location principal.resource.attribute.labels 合并到具有键 cluster_location 的 principal.resource.attribute.labels 中。
src_gke_details.cluster.cluster_name principal.resource.attribute.labels 合并到具有键 cluster_name 的 principal.resource.attribute.labels 中。
src_gke_details.pod.pod_name principal.resource.attribute.labels 合并到具有键 pod_name 的 principal.resource.attribute.labels 中。
src_gke_details.pod.pod_namespace principal.resource.attribute.labels 合并到具有键 pod_namespace 的 principal.resource.attribute.labels 中。
src_instance.region principal.location.name 直接映射。
src_instance.vm_name principal.asset.hostname 直接映射。
src_location.city principal.location.city 直接映射。
src_location.country principal.location.country_or_region 直接映射。
src_location.region principal.location.state 直接映射。
src_vpc.project_id principal.namespace 与 src_vpc.vpc_name 搭配使用,以形成 principal.namespace。
src_vpc.vpc_name principal.namespace 与 src_vpc.project_id 结合使用,以形成 principal.namespace。
textPayload additional.fields 合并到键为 Textpayload 且类型为 string_value 的 additional.fields 中。
时间戳 metadata.event_timestamp 用于在 jsonPayload.end_time 为空时填充 event_timestamp。
metadata.description 系统会根据“reporter”字段生成网络流的说明,包括报告者(SRC 或 DEST)和方向(INBOUND 或 OUTBOUND)。
metadata.event_type 对于 VPC 流日志,设置为 NETWORK_CONNECTION;对于其他日志类型,设置为 USER_RESOURCE_ACCESS
metadata.log_type 设置为 GCP_VPC_FLOW
metadata.product_name 设置为 GCP VPC Flow Logs
metadata.product_version 设置为 1.0
metadata.vendor_name 设置为 Google Cloud
network.direction 根据 target.port 确定。如果端口是知名端口或预留端口,则视为入站端口;否则,视为出站端口。
security_result.severity 默认设置为 LOW
target.resource.attribute.cloud.environment 设置为 GOOGLE_CLOUD_PLATFORM
target.resource.resource_type 设置为 CLOUD_PROJECT

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