收集 Vercel WAF 記錄
本文說明如何使用 Google Cloud Storage V2,將 Vercel WAF 記錄擷取至 Google Security Operations。
Vercel WAF 是一種網頁應用程式防火牆,整合至 Vercel 邊緣網路,可保護無伺服器應用程式。這項服務會在邊緣檢查傳入的 HTTP 要求,並套用安全性規則,在惡意流量抵達應用程式前加以封鎖。由於 Vercel WAF 記錄必須從 Vercel 平台匯出,因此您必須將這些記錄上傳至 Google Cloud Storage (GCS) bucket,然後設定 Google SecOps 資訊提供,以便擷取這些記錄。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 已啟用計費功能的 Google Cloud 雲端專案
- 可存取 WAF 記錄的 Vercel 帳戶 (Pro 或 Enterprise 方案)
- Vercel API 權杖,或設定為匯出 WAF 記錄的記錄排清
建立 Google Cloud Storage 值區
- 前往 Google Cloud Console。
- 選取專案或建立新專案。
- 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
- 按一下「建立值區」。
請提供下列設定詳細資料:
設定 值 為 bucket 命名 輸入全域不重複的名稱 (例如 vercel-waf-logs)位置類型 根據需求選擇 (區域、雙區域、多區域) 位置 選取最接近 Google SecOps 執行個體的位置 (例如 us-central1)儲存空間級別 標準 (建議用於經常存取的記錄) 存取控管 統一 (建議) 保護工具 選用:啟用物件版本管理或資料保留政策 點選「建立」。
將 Vercel WAF 記錄匯出至 GCS
Vercel 會透過記錄檔排清和 Vercel REST API 提供 WAF 記錄。設定記錄匯出作業,然後上傳至 GCS。
方法 A:設定 Vercel Log Drains (建議做法)
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 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Vercel WAF Logs)。 - 選取「Google Cloud Storage V2」做為「來源類型」。
- 選取「Vercel WAF」做為「記錄類型」。
按一下「取得服務帳戶」。系統會顯示專屬服務帳戶電子郵件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com複製這個電子郵件地址,以便在下一步中使用。
將 IAM 權限授予 Google SecOps 服務帳戶
Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。
- 依序前往「Cloud Storage」>「Buckets」。
- 按一下 bucket 名稱 (例如
vercel-waf-logs)。 - 前往「權限」分頁標籤。
- 按一下「授予存取權」。
- 請提供下列設定詳細資料:
- 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址 (例如
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。 - 指派角色:選取「Storage 物件檢視者」。
- 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址 (例如
按一下 [儲存]。
設定 Google SecOps 動態饋給
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Vercel WAF Logs)。 - 選取「Google Cloud Storage V2」做為「來源類型」。
- 選取「Vercel WAF」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
儲存空間 bucket URL:輸入 GCS bucket URI:
gs://vercel-waf-logs/vercel-waf/- 請將
vercel-waf-logs替換成您的 GCS bucket 名稱。 - 將
vercel-waf替換為您設定的前置字串路徑。
- 請將
來源刪除選項:根據偏好設定選取刪除選項:
- 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
刪除已轉移的檔案和空白目錄:成功轉移檔案後,刪除檔案和空白目錄。
檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)。
資產命名空間:資產命名空間。
擷取標籤:要套用至這個動態饋給事件的標籤。
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
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 專業人員尋求答案。