收集 Cloud VPC 流日志

支持的平台:

本文档介绍了如何使用 Google Cloud将 Cloud VPC 流日志导出到 Google Security Operations。解析器会将日志从内置 JSON 格式转换为 Google 安全运营 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. 点击默认,系统随即会显示子网页面。
  4. 选择所有日志
  5. 依次点击流日志 > 配置
  6. 选择汇总间隔时间;例如,30 秒
  7. 提供抽样率;例如,50%
  8. 点击保存
  9. 在搜索栏中搜索日志记录,然后点击 Enter
  10. Logs Explorer 中,在日志名称中选择 VPC_flows,然后点击应用以过滤日志。
  11. 点击更多操作
  12. 点击创建接收器
  13. 提供以下配置:
    1. 接收器详情:输入名称和说明。
    2. 点击下一步
    3. 接收器目标位置:选择 Cloud Storage 存储分区
    4. Cloud Storage 存储分区:选择之前创建的存储分区或创建新存储分区。
    5. 点击下一步
    6. 选择要包含在接收器中的日志:当您在 Cloud Storage 存储分区中选择一个选项时,系统会填充一个默认日志。
    7. 点击下一步
    8. 可选:选择要从接收器中过滤掉的日志:选择您不想写入接收器的日志。
  14. 点击创建接收器

在 Google SecOps 中配置 Feed 以提取 Google Cloud VPC 流日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击新增
  3. Feed 名称字段中,输入 Feed 的名称;例如 Google Cloud VPC 流量日志
  4. 选择 Google Cloud Storage 作为来源类型
  5. 选择 GCP VPC 流作为日志类型
  6. 点击获取服务账号作为 Chronicle 服务账号
  7. 点击下一步
  8. 为以下输入参数指定值:

    • 存储分区 URI: Google Cloud 采用 gs://my-bucket/<value> 格式的存储分区网址。
    • URI 类型:选择包含子目录的目录
    • 来源删除选项:根据您的偏好选择删除选项。

    • 资源命名空间资源命名空间

    • 提取标签:应用于此 Feed 中事件的标签。

  9. 点击下一步

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

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 并转换为 uinteger。
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 已合并到 target.user.attribute.labels 中,键为 subnetwork_id
resource.type metadata.product_event_type 直接映射。
和程度上减少 security_result.severity 如果值为 DEBUG,则映射到 LOW
src_gke_details.cluster.cluster_location principal.resource.attribute.labels 已合并到 principal.resource.attribute.labels 中,键为 cluster_location
src_gke_details.cluster.cluster_name principal.resource.attribute.labels 已合并到 principal.resource.attribute.labels 中,键为 cluster_name
src_gke_details.pod.pod_name principal.resource.attribute.labels 已合并到 principal.resource.attribute.labels 中,键为 pod_name
src_gke_details.pod.pod_namespace principal.resource.attribute.labels 已合并到 principal.resource.attribute.labels 中,键为 pod_namespace
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

变化

2024-10-24

增强功能

  • principal.ipprincipal.port 的映射分别替换为 target.iptarget.port

2024-03-15

增强功能

  • jsonPayload.src_gke_details.pod.pod_namespacejsonPayload.src_gke_details.pod.pod_namejsonPayload.src_gke_details.cluster.cluster_namejsonPayload.src_gke_details.cluster.cluster_location 映射到 principal.resource.attribute.labels
  • jsonPayload.dest_gke_details.pod.pod_namespacejsonPayload.dest_gke_details.pod.pod_namejsonPayload.dest_gke_details.cluster.cluster_namejsonPayload.dest_gke_details.cluster.cluster_location 映射到 target.resource.attribute.labels

2023-05-23

增强功能

  • 当字段“logName”不包含“vpc_flows”时,将“metadata.event_type”映射到“USER_RESOURCE_ACCESS”。
  • 将“timestamp”映射到“events.timestamp”。
  • 将“textPayload”“labels.tunnel_id”映射到“additional.fields”。
  • 将“resource.labels.region”映射到“target.location.country_or_region”。
  • 在需要时为各种字段添加了 null 检查。

2023-04-10

增强功能

  • target.resource.attribute.cloud.environment 设置为 GOOGLE_CLOUD_PLATFORM
  • target.resource.name 设置为完整资源名称值。

2022-07-22

增强功能

  • resource.labels.location 映射到 principal.location.name
  • resource.labels.subnetwork_id 映射到 target.user.attribute.labels
  • logName 映射到 security_result.category_details

需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。