收集 Vercel WAF 日志

支持的平台:

本文档介绍了如何使用 Google Cloud Storage V2 将 Vercel WAF 日志注入到 Google Security Operations。

Vercel WAF 是一款集成到 Vercel 边缘网络中的 Web 应用防火墙,用于保护无服务器应用。它会在边缘检查传入的 HTTP 请求,并应用安全规则来阻止恶意流量到达您的应用。由于 Vercel WAF 日志必须从 Vercel 平台导出,因此您必须将这些日志上传到 Google Cloud Storage (GCS) 存储桶,然后配置 Google SecOps Feed 来注入这些日志。

准备工作

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

  • Google SecOps 实例
  • 启用了结算功能的 Google Cloud 项目
  • 有权访问 WAF 日志的 Vercel 账号(Pro 或 Enterprise 方案)
  • 已配置为导出 WAF 日志的 Vercel API 令牌或日志排空

创建 Google Cloud Storage 存储桶

  1. 前往 Google Cloud 控制台。
  2. 选择您的项目或创建一个新项目。
  3. 在导航菜单中,前往 Cloud Storage > 存储桶。
  4. 点击创建存储分区。
  5. 提供以下配置详细信息:

    设置 值
    指定存储桶的名称 输入一个全局唯一的名称(例如 vercel-waf-logs)
    位置类型 根据您的需求进行选择(区域级、双区域级、多区域级)
    位置 选择距离您的 Google SecOps 实例最近的位置(例如 us-central1)
    存储类别 标准(建议用于频繁访问的日志)
    访问权限控制 均匀(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建。

将 Vercel WAF 日志导出到 GCS

Vercel 通过 Log Drains 和 Vercel REST API 提供 WAF 日志。配置日志导出,然后上传到 GCS。

Vercel Log Drains 会将日志实时流式传输到外部端点。

  1. 登录 Vercel 信息中心。
  2. 前往团队设置:设置 > 日志排空。
  3. 点击 Add Log Drain(添加日志排空)。
  4. 配置日志排泄:
    • 发送格式:选择 JSON。
    • 来源:选择防火墙以包含 WAF 事件。
    • 环境:选择要监控的环境(生产环境、预览版、开发)。
    • 端点:输入中间接收器的网址(例如,写入 GCS 的 Cloud Run 函数端点)。
  5. 点击添加日志漏斗。
  6. 验证日志是否已传送到您的端点。

方案 B:通过 Vercel REST API 进行导出

  1. 在设置 > 令牌中生成 Vercel API 令牌。
  2. 使用 Vercel REST API 检索防火墙事件:

    curl -H "Authorization: Bearer YOUR_VERCEL_TOKEN" \
      "https://api.vercel.com/v1/security/firewall/events?teamId=YOUR_TEAM_ID&projectId=YOUR_PROJECT_ID&limit=100" \
      -o vercel-waf-events.json
    

检索 Google SecOps 服务账号

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 Vercel WAF Logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 Vercel WAF 作为日志类型。
  7. 点击获取服务账号。系统会显示一个唯一的服务账号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 复制此邮箱,以便在下一步中使用。

向 Google SecOps 服务账号授予 IAM 权限

Google SecOps 服务账号需要您的 GCS 存储桶的 Storage Object Viewer 角色。

  1. 前往 Cloud Storage > 存储桶。
  2. 点击您的存储桶名称(例如 vercel-waf-logs)。
  3. 前往权限标签页。
  4. 点击授予访问权限。
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址(例如 chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。
    • 分配角色:选择 Storage Object Viewer。
  6. 点击保存。

配置 Google SecOps Feed

  1. 前往 SIEM 设置 > Feed。
  2. 点击添加新 Feed。
  3. 点击配置单个 Feed。
  4. 在 Feed 名称字段中,输入 Feed 的名称(例如 Vercel WAF Logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型。
  6. 选择 Vercel WAF 作为日志类型。
  7. 点击下一步。
  8. 为以下输入参数指定值:

    • 存储桶网址:输入 GCS 存储桶 URI:

      gs://vercel-waf-logs/vercel-waf/
      
      • 将 vercel-waf-logs 替换为您的 GCS 存储桶名称。
      • 将 vercel-waf 替换为您配置的前缀路径。
    • 来源删除选项:根据您的偏好选择删除选项:

      • 永不:转移后永不删除任何文件(建议在测试时使用)。
      • 删除已转移的文件和空目录:成功转移后删除文件和空目录。

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

    • 资源命名空间:资源命名空间。

    • 注入标签:要应用于此 Feed 中事件的标签。

  9. 点击下一步。

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

UDM 映射表

日志字段 UDM 映射 逻辑
record.requestId, record.proxy.timestamp, record.proxy.region, record.proxy.errorCode, record.proxy.vercelCache, record.proxy.pathType, record.proxy.referer, record.proxy.cacheId, record.proxy.wafAction, record.proxy.scheme, record.proxy.userAgent, record.environment additional.fields 其他活动元数据
metadata.event_type 事件类型
record.deploymentId metadata.product_deployment_id 特定于产品的部署 ID
record.id metadata.product_log_id 特定于产品的日志 ID
record.proxy.method network.http.method HTTP 方法
record.statusCode network.http.response_code HTTP 响应代码
record.source principal.asset.hostname 与主体相关联的资产的主机名
record.host principal.hostname 主账号的主机名
record.message security_result.description 安全结果说明
record.proxy.wafRule security_result.rule_name 触发安全结果的规则的名称
record.level security_result.severity 安全结果的严重程度
record.proxy.wafRule security_result.threat_name 威胁名称
record.proxy.clientIp target.asset.ip 资产的 IP 地址
record.projectId target.cloud.project.id 云项目的 ID
record.projectName target.cloud.project.name 云项目的名称
record.proxy.path target.file.full_path 文件的完整路径
record.proxy.clientIp target.ip 目标的 IP 地址
record.executionRegion target.location.name 营业地点的名称
record.proxy.vercelId target.user.userid 目标用户的用户 ID
metadata.product_name 产品名称
metadata.vendor_name 供应商名称

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