收集 Google Cloud Compute 日志

解析器版本: 2.0

支持的产品:

本文档介绍了如何使用 Cloud Storage 将 Google Cloud Compute 日志导出到 Google Security Operations。解析器会提取字段、规范化消息字段,并将提取的数据映射到统一数据模型 (UDM) 架构,以实现安全事件表示的一致性。它会处理各种日志格式,包括类似 syslog 的消息和键值对,并根据提取的字段(例如类型操作 )对事件进行分类。

准备工作

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

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

创建 Google Cloud Storage 存储分区

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

    进入“存储分区”

  3. 点击创建

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

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

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

        1. 如需添加存储桶标签,请点击展开箭头以展开标签 部分。
        2. 点击添加标签,并为标签指定键和值。
    2. 选择数据存储位置 部分中,执行以下操作:

      1. 选择位置类型

        1. 使用位置类型菜单选择一个位置 ,用于永久存储存储桶中的对象数据。
        1. 如需设置跨存储桶复制,请展开设置跨存储桶复制 部分。
    3. 为数据选择一个存储类别 部分中,为存储桶选择默认存储类别 ,或者选择 Autoclass 对存储桶数据进行自动存储类别管理。

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

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

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

配置 Google Cloud Compute 日志导出

  1. Google Cloud 控制台 中,依次前往 Logging > 日志路由器
  2. 点击创建接收器
  3. 提供以下配置详细信息:
    • 接收器名称:输入有意义的名称(例如 Compute-Logs-Sink)。
    • 接收器目标位置:选择 Cloud Storage
    • Cloud Storage 存储桶:输入存储桶 URI(例如 gs://compute-logs/compute-logs/)。
  4. 构建包含性过滤条件 部分中,配置日志过滤条件以使用以下一种或多种模式捕获 Google Cloud Compute 日志:

    资源类型过滤条件(必需 - 选择一个)

    • 仅限虚拟机实例日志

      resource.type="gce_instance"
      
    • 所有与 GCE 相关的资源 (虚拟机实例、子网、防火墙):

      resource.type=("gce_instance" OR "gce_subnetwork" OR "gce_network" OR "gce_firewall_rule")
      

    特定日志类型(可选 - 根据需要添加)

    • 审核日志 (实例操作、配置更改):

      resource.type="gce_instance"
      logName:"cloudaudit.googleapis.com/activity"
      
    • VPC 流日志 (网络流量):

      resource.type="gce_subnetwork"
      logName:"vpc_flows"
      
    • 防火墙日志 (允许/拒绝的连接):

      resource.type="gce_subnetwork"
      logName:"compute.googleapis.com/firewall"
      
    • 对于 串行控制台日志

      resource.type="gce_instance"
      logName:"serialconsole.googleapis.com"
      

    与网络相关的过滤条件(可选 - 根据需要添加)

    • 连接详细信息 (来源/目标 IP、端口)过滤:

      jsonPayload.connection.dest_ip:*
      OR jsonPayload.connection.src_ip:*
      
    • 实例详细信息 过滤:

      jsonPayload.dest_instance.project_id:*
      OR jsonPayload.src_instance.project_id:*
      
    • 安全操作 过滤:

      jsonPayload.rule_details.action=("ALLOW" OR "BLOCK")
      

    示例:用于全面 Compute 日志记录的完整过滤条件

    (resource.type="gce_instance" OR resource.type="gce_subnetwork")
    AND (
     logName:"cloudaudit.googleapis.com/activity"
     OR logName:"vpc_flows"
     OR logName:"compute.googleapis.com/firewall"
     OR jsonPayload.connection.dest_ip:*
     OR jsonPayload.connection.src_ip:*
    )
    
  5. 点击创建接收器

配置 Cloud Storage 的权限

  1. 依次前往 IAM > IAM 和管理 > 服务账号
  2. 找到 Cloud Logging 服务帐号;例如 service-account@logging.iam..
  3. 向其授予针对存储桶的 roles/storage.admin 角色。

设置 Feed

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

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

如何设置 Google Cloud Compute Feed

  1. 点击 Google Cloud Compute 平台 包。
  2. 找到 GCP Compute Feed 日志类型,然后点击添加新 Feed
  3. 为以下字段指定值:

    • 来源类型Google Cloud Storage V2
    • 存储分区 URI:Cloud Storage 存储桶网址;例如 gs://compute-context-logs/。此网址必须以尾部正斜杠 (/) 结尾。
    • 来源删除选项:根据您的偏好选择删除选项。

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

    • Chronicle 服务账号:复制服务账号。您需要此账号才能在存储桶中添加权限,以便 Google SecOps 读取或删除存储桶中的数据。

    高级选项

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

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

UDM 映射表

日志字段 UDM 映射 逻辑
addr read_only_udm.principal.ip 如果该字段不为空或“?”,则合并到主账号 IP 地址列表中。
jsonPayload.connection.dest_ip read_only_udm.target.ip 如果该字段存在,则合并到目标 IP 地址列表中。
jsonPayload.connection.dest_port read_only_udm.target.port 转换为字符串,然后转换为整数,并在转换期间未发生错误时进行映射。
jsonPayload.connection.protocol read_only_udm.network.ip_protocol 转换为字符串,然后转换为整数。使用对照表确定 IP 协议(TCP、UDP 等),并在转换期间未发生错误时进行映射。
jsonPayload.connection.src_ip read_only_udm.principal.ip 如果该字段存在,则合并到主账号 IP 地址列表中。
jsonPayload.connection.src_port read_only_udm.principal.port 转换为字符串,然后转换为整数,并在转换期间未发生错误时进行映射。
jsonPayload.dest_instance.project_id read_only_udm.target.resource.product_object_id 如果 jsonPayload.dest_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.dest_instance.region read_only_udm.target.location.name 如果 jsonPayload.dest_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.dest_instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name 如果 jsonPayload.dest_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.dest_instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone 如果 jsonPayload.dest_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.dest_vpc.project_id read_only_udm.target.cloud.vpc.product_object_id 用作映射相关字段的条件。
jsonPayload.dest_vpc.subnetwork_name read_only_udm.target.cloud.vpc.name 如果 jsonPayload.dest_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.instance.project_id read_only_udm.target.resource.product_object_id 如果 jsonPayload.instance.project_id 存在,则有条件地进行映射。
jsonPayload.instance.region read_only_udm.target.location.name 如果 jsonPayload.instance.project_id 存在,则有条件地进行映射。
jsonPayload.instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name 如果 jsonPayload.instance.project_id 存在,则有条件地进行映射。
jsonPayload.instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone 如果 jsonPayload.instance.project_id 存在,则有条件地进行映射。
jsonPayload.message read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path 根据 grok 模式和条件逻辑进行解析并映射到不同的字段。
jsonPayload.rule_details.action read_only_udm.security_result.action 用于确定安全结果操作 (ALLOW/BLOCK) 并进行映射。
jsonPayload.rule_details.direction read_only_udm.network.direction 用于确定网络方向(INBOUND/OUTBOUND/UNKNOWN_DIRECTION)并进行映射。
jsonPayload.rule_details.priority read_only_udm.security_result.priority_details 转换为字符串,并在转换期间未发生错误时进行映射。
jsonPayload.rule_details.reference read_only_udm.security_result.rule_labels.value 映射到规则标签值。
jsonPayload.src_instance.project_id read_only_udm.principal.resource.product_object_id 如果 jsonPayload.src_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.src_instance.region read_only_udm.principal.location.name 如果 jsonPayload.src_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.src_instance.vm_name read_only_udm.principal.resource.attribute.cloud.project.name 如果 jsonPayload.src_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.src_instance.zone read_only_udm.principal.resource.attribute.cloud.availability_zone 如果 jsonPayload.src_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.src_vpc.project_id read_only_udm.principal.cloud.vpc.product_object_id 用作映射相关字段的条件。
jsonPayload.src_vpc.subnetwork_name read_only_udm.principal.cloud.vpc.name 如果 jsonPayload.src_vpc.project_id 存在,则有条件地进行映射。
jsonPayload.vpc.project_id read_only_udm.target.cloud.vpc.product_object_id 如果 jsonPayload.vpc.project_id 存在,则有条件地进行映射。
jsonPayload.vpc.subnetwork_name read_only_udm.target.cloud.vpc.name 如果 jsonPayload.vpc.project_id 存在,则有条件地进行映射。
logName read_only_udm.security_result.category_details 直接映射。
resource.labels.instance_id read_only_udm.principal.resource.product_object_id, read_only_udm.principal.asset_id 有条件地进行映射。如果类型为“PROCTITLE”,则用于构建资产 ID。
resource.labels.location read_only_udm.principal.location.name 如果该字段存在,则有条件地进行映射。
resource.labels.project_id read_only_udm.metadata.product_deployment_id 如果该字段存在,则有条件地进行映射。
resource.labels.zone read_only_udm.principal.resource.attribute.cloud.availability_zone 如果该字段存在,则有条件地进行映射。
resource.type read_only_udm.metadata.event_type 用于确定事件类型并进行映射。
timestamp read_only_udm.metadata.event_timestamp 直接映射。
type read_only_udm.metadata.product_event_type, read_only_udm.metadata.event_type, read_only_udm.extensions.auth.type 用于确定事件类型、产品事件类型和身份验证类型,并相应地进行映射。
read_only_udm.metadata.event_type 逻辑根据“type”字段和其他条件设置事件类型。如果未找到特定匹配项,则默认为“GENERIC_EVENT”。
read_only_udm.metadata.log_type 常量值“GCP_COMPUTE”。
read_only_udm.metadata.vendor_name 常量值“Google Cloud Platform”。
read_only_udm.metadata.product_name 常量值“Google Cloud Platform”。
read_only_udm.security_result.rule_labels.key 常量值“Reference”。
read_only_udm.target.cloud.vpc.resource_type 如果 jsonPayload.instance.project_id 或 jsonPayload.dest_vpc.project_id 存在,则有条件地设置为“VPC_NETWORK”。
read_only_udm.target.resource.attribute.cloud.environment 如果 jsonPayload.instance.project_id、jsonPayload.dest_vpc.project_id 或 jsonPayload.src_vpc.project_id 存在,则有条件地设置为“GOOGLE_CLOUD_PLATFORM”。
read_only_udm.principal.administrative_domain 从“kv_data”字段中提取的“账号网域”字段进行映射。
read_only_udm.principal.user.user_display_name 从“kv_data”字段中提取的“账号名称”字段进行映射。
read_only_udm.target.resource.name 从“kv_data”字段中提取的“对象名称”字段进行映射。
read_only_udm.target.resource.type 从“kv_data”字段中提取的“对象类型”字段进行映射。
read_only_udm.principal.process.pid 从“kv_data”字段中提取的“进程 ID”字段进行映射。
read_only_udm.target.user.windows_sid 从“kv_data”字段中提取的“安全 ID”字段进行映射。
read_only_udm.network.session_id 从“auid”字段进行映射。

更新日志

查看此解析器的更新日志

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