收集 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 存储桶
- 前往 Google Cloud 控制台。
- 选择您的项目或创建一个新项目。
- 在导航菜单中,前往 Cloud Storage > 存储桶。
- 点击创建存储分区。
提供以下配置详细信息:
设置 值 指定存储桶的名称 输入一个全局唯一的名称(例如 vercel-waf-logs)位置类型 根据您的需求进行选择(区域级、双区域级、多区域级) 位置 选择距离您的 Google SecOps 实例最近的位置(例如 us-central1)存储类别 标准(建议用于频繁访问的日志) 访问权限控制 均匀(推荐) 保护工具 可选:启用对象版本控制或保留政策 点击创建。
将 Vercel WAF 日志导出到 GCS
Vercel 通过 Log Drains 和 Vercel REST API 提供 WAF 日志。配置日志导出,然后上传到 GCS。
方案 A:配置 Vercel 日志排空(推荐)
Vercel Log Drains 会将日志实时流式传输到外部端点。
- 登录 Vercel 信息中心。
- 前往团队设置:设置 > 日志排空。
- 点击 Add Log Drain(添加日志排空)。
- 配置日志排泄:
- 发送格式:选择 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 | 云项目的名称 |
| 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 专业人士的解答。