收集 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 > 添加新 Feed
  • 内容中心 > 内容包 > 开始

如何设置 Google Cloud VPC 流 Feed

  1. 点击 Google Cloud Compute 平台包。
  2. 找到 GCP VPC 流 Feed 日志类型。
  3. 在以下字段中指定值。

    • 来源类型:Amazon SQS V2
    • 队列名称:要从中读取数据的 SQS 队列名称
    • S3 URI:存储桶 URI。
      • s3://your-log-bucket-name/
        • your-log-bucket-name 替换为您的 S3 存储桶的实际名称。
    • 源删除选项:根据您的提取偏好设置选择删除选项。

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

    • SQS 队列访问密钥 ID:一个包含 20 个字符的字母数字字符串形式的账号访问密钥。

    • SQS 队列私有访问密钥:一个包含 40 个字符的字母数字字符串形式的账号访问密钥。

    高级选项

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

如需详细了解如何为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 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 专业人士那里获得解答。