收集 Vercel WAF 日志
本文档介绍了如何使用 Google Cloud Storage V2 将 Vercel WAF 日志注入到 Google Security Operations。
Vercel WAF 是一种 Web 应用防火墙,集成到 Vercel 边缘网络中,用于保护无服务器应用。它会在边缘检查传入的 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 存储桶
- 转到 Google Cloud 控制台。
- 选择您的项目或创建一个新项目。
- 在导航菜单中,前往 Cloud Storage > 存储分区。
- 点击创建存储桶 。
提供以下配置详细信息:
设置 值 指定存储桶的名称 输入全局唯一的名称(例如 vercel-waf-logs)位置类型 根据您的需求进行选择(区域、双区域、多区域) 位置 选择离您的 Google SecOps 实例最近的位置(例如 us-central1)存储类别 标准(建议用于经常访问的日志) 访问权限控制 统一(推荐) 保护工具 可选:启用对象版本控制或保留政策 点击创建 。
将 Vercel WAF 日志导出到 GCS
Vercel 通过日志接收器和 Vercel REST API 提供 WAF 日志。配置日志导出,然后上传到 GCS。
方案 A:配置 Vercel 日志接收器(推荐)
Vercel 日志接收器会将日志实时流式传输到外部端点。
- 登录 Vercel 信息中心。
- 前往团队设置:设置 > 日志接收器。
- 点击添加日志接收器 。
- 配置日志接收器:
- 传送格式:选择 JSON。
- 来源:选择防火墙以包含 WAF 事件。
- 环境:选择要监控的环境(生产环境、预览、开发)。
- 端点:输入中间接收器的网址(例如,写入 GCS 的 Cloud Run 函数端点)。
- 点击添加日志接收器 。
验证日志是否正在传送到您的端点。
方案 B:通过 Vercel REST API 导出
- 在设置 > 令牌 中生成 Vercel API 令牌。
使用 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 服务帐号
- 前往 SIEM 设置 > Feed。
- 点击添加新 Feed 。
- 点击配置单个 Feed 。
- 在 Feed 名称 字段中,输入 Feed 的名称(例如
Vercel WAF Logs)。 - 选择 Google Cloud Storage V2 作为来源类型 。
- 选择 Vercel WAF 作为日志类型 。
点击获取服务账号 。系统会显示唯一的服务帐号电子邮件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com复制此电子邮件地址,以便在下一步中使用。
向 Google SecOps 服务帐号授予 IAM 权限
Google SecOps 服务帐号需要对您的 GCS 存储桶具有 Storage Object Viewer 角色。
- 前往 Cloud Storage > 存储分区。
- 点击您的存储桶名称(例如
vercel-waf-logs)。 - 前往权限 标签页。
- 点击授予访问权限 。
- 提供以下配置详细信息:
- 添加主账号:粘贴 Google SecOps 服务帐号电子邮件地址(例如
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。 - 分配角色:选择 Storage Object Viewer。
- 添加主账号:粘贴 Google SecOps 服务帐号电子邮件地址(例如
点击保存 。
配置 Google SecOps Feed
- 前往 SIEM 设置 > Feed。
- 点击添加新 Feed 。
- 点击配置单个 Feed 。
- 在 Feed 名称 字段中,输入 Feed 的名称(例如
Vercel WAF Logs)。 - 选择 Google Cloud Storage V2 作为来源类型 。
- 选择 Vercel WAF 作为日志类型 。
- 点击下一步 。
为以下输入参数指定值:
存储桶网址:输入 GCS 存储桶 URI:
gs://vercel-waf-logs/vercel-waf/- 将
vercel-waf-logs替换为您的 GCS 存储桶名称。 - 将
vercel-waf替换为您配置的前缀路径。
- 将
来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件(建议用于测试)。
删除已转移的文件和空目录:成功转移后删除文件和空目录。
文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)。
资产命名空间:资产命名空间。
注入标签:要应用于此 Feed 中的事件的标签。
点击下一步 。
在最终确定 屏幕中检查新 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 | Cloud 项目的名称 |
| 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 | 供应商名称 |