收集 Cloudflare 記錄

支援的國家/地區:

本文說明如何使用 Webhook (HTTP 目的地) 或 Google Cloud Storage,將 Cloudflare 記錄檔擷取至 Google Security Operations。Cloudflare 會以 DNS、HTTP、稽核、Zero Trust 和 CASB 的記錄形式,產生作業資料。整合後,您就能將這些記錄傳送至 Google SecOps 進行分析和監控。剖析器會先初始化一組空白欄位,然後剖析 JSON 格式的 Cloudflare 記錄,並捨棄任何無效的 JSON 訊息。接著,程式碼會根據特定欄位的存在與值,使用條件邏輯判斷 Cloudflare 產品和事件類型,並相應填入整合式資料模型 (UDM) 欄位。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • 已啟用 LogPush 的 Cloudflare Enterprise 帳戶。
  • Webhook 方法: Google Cloud 控制台的特殊權限。
  • Google Cloud Storage 方法:Google Cloud Storage 的特殊存取權。

方法 1:使用 Webhook (HTTP 目的地) 設定 Cloudflare 記錄匯出功能

這個方法可讓你將 Cloudflare 記錄直接串流至 Google SecOps,不必使用中繼儲存空間。

在 Google SecOps 中設定 Webhook 動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增」
  3. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Cloudflare Webhook)。
  4. 選取「Webhook」做為「來源類型」
  5. 選取「Cloudflare」做為「記錄類型」
  6. 點選「下一步」
  7. 指定下列輸入參數的值:
    • 分割分隔符\n
    • 資產命名空間資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  8. 點選「下一步」
  9. 在「完成」畫面中檢查新的動態饋給設定,然後按一下「提交」
  10. 按一下「產生密鑰」,產生驗證這個動態饋給的密鑰。
  11. 複製儲存密鑰,因為您無法再次查看這組密鑰。
  12. 前往「詳細資料」分頁。
  13. 從「端點資訊」欄位複製動態消息端點網址。
  14. 按一下 [完成]

為 Webhook 動態饋給建立 API 金鑰

  1. 依序前往 Google Cloud 控制台 >「API 和服務」>「憑證」
  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)
  3. 點選「編輯 API 金鑰」
  4. 在「API restrictions」下方,選取「Restrict key」
  5. 從清單中選取「Google SecOps API」
  6. 按一下 [儲存]
  7. 複製 API 金鑰值。

設定 Cloudflare LogPush HTTP 目的地

  1. 登入 Cloudflare 資訊主頁
  2. 選取要搭配 LogPush 使用的企業帳戶網域
  3. 依序前往「Analytics & Logs」(數據分析與記錄檔) >「Logpush」(記錄檔推送)
  4. 按一下「Create a Logpush job」(建立 Logpush 工作)
  5. 在「選取目的地」中,選擇「HTTP 目的地」
  6. 輸入含有驗證參數的 HTTP 端點網址:

    <ENDPOINT_URL>?header_X-goog-api-key=<API_KEY>&header_X-Webhook-Access-Key=<SECRET_KEY>
    

    更改下列內容:

    • <ENDPOINT_URL>:Google SecOps 的動態消息端點網址。
    • <API_KEY>:來自 Google Cloud 控制台的 API 金鑰 (如含有特殊字元,請進行網址編碼)。
    • <SECRET_KEY>:Webhook 動態消息中的密鑰 (如果包含特殊字元,則為網址編碼)。
  7. 按一下「繼續」

  8. 選取要推送的資料集 (例如「HTTP requests」(HTTP 要求)、「DNS」、「Audit」(稽核)、「Zero Trust」(零信任)、「CASB」)。

  9. 設定記錄推送作業:

    • 輸入「工作名稱」
    • 選用:在「如果記錄符合」下方設定篩選條件。
    • 在「傳送下列欄位」中,選取要納入的欄位。
    • 選擇時間戳記格式 (建議使用 RFC3 339)。
    • 視需要設定取樣率。
  10. 按一下「提交」即可建立記錄推送工作。

驗證 Webhook 整合

設定完成後,記錄應該會在幾分鐘內顯示在 Google SecOps 中。驗證方法:

  1. 依序前往「調查」> SIEM 搜尋」
  2. 使用您設定的擷取標籤搜尋記錄。
  3. 確認系統是否正確剖析 Cloudflare 記錄。

方法 2:使用 Google Cloud Storage 設定 Cloudflare 記錄檔匯出功能

設定 Cloudflare 將記錄推送至該服務,這需要授予 Cloudflare 必要權限。

建立 Google Cloud Bucket

  1. 登入Google Cloud 控制台
  2. 前往「Cloud Storage Buckets」(Cloud Storage bucket) 頁面。
  3. 點選「建立」
  4. 在「建立 bucket」頁面中,輸入 bucket 資訊:
    • 名稱:輸入符合值區名稱規定的不重複名稱 (例如 cloudflare-data)。
    • 位置類型:選取位置類型和區域。
    • 如要啟用階層命名空間,請按一下展開箭頭,展開「為檔案導向和資料密集型工作負載提供最理想的儲存空間」,然後選取「為這個 bucket 啟用階層命名空間」
  5. 點選「建立」

授予值區權限

  1. Cloud Storage 控制台中,選取先前建立的 bucket。
  2. 按一下「Permissions」(權限) 分頁標籤。
  3. 按一下「授予存取權」
  4. 新增具備「Storage 物件管理員」權限的帳戶 logpush@cloudflare-data.iam.gserviceaccount.com
  5. 按一下 [儲存]

設定 Cloudflare LogPush 至 Google Cloud Storage

  1. 登入 Cloudflare 資訊主頁
  2. 選取要搭配 LogPush 使用的企業帳戶網域
  3. 依序前往「Analytics & Logs」(數據分析與記錄檔) >「Logpush」(記錄檔推送)
  4. 按一下「Create a Logpush job」(建立 Logpush 工作)
  5. 在「選取目的地」中,選擇「Google Cloud Storage」
  6. 輸入 Google Cloud Storage bucket 路徑 (例如 gs://cloudflare-data/logs/)。
  7. 按一下「繼續」

  8. 輸入擁有權權杖,然後按一下「繼續」

  9. 選取要推送至儲存空間的資料集。

  10. 設定記錄推送作業:

    • 輸入「工作名稱」
    • 在「如果記錄檔相符」下方,您可以選取要納入或從記錄檔中移除的事件。
    • 在「傳送下列欄位」中,選擇要推送的記錄檔。
    • 選擇時間戳記格式 (建議使用 RFC 339)。
    • 視需要設定取樣率。
  11. 按一下「提交」

在 Google SecOps 中設定動態饋給,從 Google Cloud Storage 擷取 Cloudflare 記錄

  1. 依序前往「SIEM 設定」>「動態消息」
  2. 按一下「新增」
  3. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Cloudflare GCS Logs)。
  4. 選取「Google Cloud Storage V2」做為「來源類型」
  5. 選取「Cloudflare」做為「記錄類型」
  6. 按一下「取得服務帳戶」
  7. 點選「下一步」
  8. 指定下列輸入參數的值:

    • 儲存空間值區 URI: Google Cloud 格式的 bucket URL。gs://my-bucket/<value>/這個網址的結尾必須是正斜線 (/)。
    • 來源刪除選項:根據偏好設定選取刪除選項。
    • 檔案存在時間上限:包含在過去天數內修改的檔案。預設值為 180 天。
    • 資產命名空間資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  9. 點選「下一步」

  10. 在「完成」畫面中檢查新的動態饋給設定,然後按一下「提交」

UDM 對應表

記錄欄位 UDM 對應 邏輯
ClientIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
這個值取自 ClientIP 欄位。
ClientRequestHost read_only_udm.target.asset.hostname
read_only_udm.target.hostname
這個值取自 ClientRequestHost 欄位。
ClientRequestMethod read_only_udm.network.http.method 這個值取自 ClientRequestMethod 欄位。
ClientRequestURI read_only_udm.target.url 這個值取自 ClientRequestURI 欄位。如果 ClientRequestHost 欄位不為空白,系統會將值與 ClientRequestHost 欄位串連。
ClientSrcPort read_only_udm.principal.port 這個值取自 ClientSrcPort 欄位。
ClientRequestUserAgent read_only_udm.network.http.user_agent 這個值取自 ClientRequestUserAgent 欄位。
ClientSSLCipher read_only_udm.network.tls.cipher 這個值取自 ClientSSLCipher 欄位。
ClientSSLProtocol read_only_udm.network.tls.version 這個值取自 ClientSSLProtocol 欄位。
國家/地區 read_only_udm.target.location.country_or_region 這個值取自「國家/地區」欄位。
CreatedAt read_only_udm.metadata.event_timestamp 值取自 CreatedAt 欄位。
日期時間 read_only_udm.metadata.event_timestamp 值取自「日期時間」欄位。
DestinationIP read_only_udm.target.asset.ip
read_only_udm.target.ip
這個值取自 DestinationIP 欄位。
DestinationPort read_only_udm.target.port 這個值取自 DestinationPort 欄位。
DeviceID read_only_udm.principal.asset_id 這個值取自 DeviceID 欄位,並以「Cloudflare:」為前置字元。
DeviceName read_only_udm.principal.asset.hostname
read_only_udm.principal.hostname
值取自 DeviceName 欄位。
DstIP read_only_udm.target.asset.ip
read_only_udm.target.ip
這個值取自 DstIP 欄位。
DstPort read_only_udm.target.port 這個值取自 DstPort 欄位。
EdgeResponseBytes read_only_udm.network.received_bytes 這個值取自 EdgeResponseBytes 欄位。
EdgeResponseStatus read_only_udm.network.http.response_code 值取自 EdgeResponseStatus 欄位。
EdgeServerIP read_only_udm.target.asset.ip
read_only_udm.target.ip
這個值取自 EdgeServerIP 欄位。
電子郵件 read_only_udm.principal.user.email_addresses
read_only_udm.target.user.email_addresses
這個值取自「電子郵件」欄位。
FirewallMatchesActions read_only_udm.security_result.action 如果 FirewallMatchesAction 欄位為「allow」、「Allow」、「ALLOW」、「skip」、「SKIP」或「Skip」,則值會設為「ALLOW」;如果 FirewallMatchesAction 欄位為「challengeSolved」或「jschallengeSolved」,則值會設為「ALLOW_WITH_MODIFICATION」;如果 FirewallMatchesAction 欄位為「drop」或「block」,則值會設為「BLOCK」;如果 FirewallMatchesAction 欄位不為空白,則值會設為「UNKNOWN_ACTION」。
FirewallMatchesRuleIDs read_only_udm.security_result.rule_id 這個值取自 FirewallMatchesRuleIDs 欄位。
FirewallMatchesSources read_only_udm.security_result.rule_name 這個值取自 FirewallMatchesSources 欄位。
HTTPMethod read_only_udm.network.http.method 值取自 HTTPMethod 欄位。
HTTPHost read_only_udm.target.hostname 這個值取自 HTTPHost 欄位。
HTTPVersion read_only_udm.network.application_protocol 這個值取自 HTTPVersion 欄位。如果值包含「HTTP」,系統會將其替換為「HTTP」。
IPAddress read_only_udm.target.asset.ip
read_only_udm.target.ip
這個值取自 IPAddress 欄位。
IsIsolated read_only_udm.about.labels
read_only_udm.security_result.about.resource.attribute.labels
這個值取自 IsIsolated 欄位,並會轉換為字串。
位置 read_only_udm.principal.location.name 這個值取自「位置」欄位。
OriginIP read_only_udm.intermediary.ip
read_only_udm.target.asset.ip
read_only_udm.target.ip
這個值取自 OriginIP 欄位。
OriginPort read_only_udm.target.port 這個值取自 OriginPort 欄位。
OwnerID read_only_udm.target.user.product_object_id 這個值取自 OwnerID 欄位。
政策 read_only_udm.security_result.rule_name 值取自「政策」欄位。
PolicyID read_only_udm.security_result.rule_id 值取自 PolicyID 欄位。
PolicyName read_only_udm.security_result.rule_name 這個值取自 PolicyName 欄位。
通訊協定 read_only_udm.network.ip_protocol 這個值取自「通訊協定」欄位,並會轉換為大寫。
QueryCategoryIDs read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
值取自 QueryCategoryIDs 欄位。
QueryName read_only_udm.network.dns.questions.name 此值取自 QueryName 欄位。
QueryNameReversed read_only_udm.network.dns.questions.name 這個值取自 QueryNameReversed 欄位。
QuerySize read_only_udm.network.sent_bytes 這個值取自 QuerySize 欄位。
QueryType read_only_udm.network.dns.questions.type 這個值取自 QueryType 欄位。如果值是已知的 DNS 記錄類型,系統會將其對應至相應的數值。否則,該值會轉換為字串。
RData read_only_udm.network.dns.answers 這個值取自 RData 欄位。類型欄位會轉換為無正負號整數。
RayID read_only_udm.metadata.product_log_id 這個值取自 RayID 欄位。
參照網址 read_only_udm.network.http.referral_url 這個值取自「Referer」欄位。
RequestID read_only_udm.metadata.product_log_id 這個值取自 RequestID 欄位。
ResolverDecision read_only_udm.security_result.summary 這個值取自 ResolverDecision 欄位。
ResourceID read_only_udm.target.resource.id
read_only_udm.target.resource.product_object_id
值取自 ResourceID 欄位。
ResourceType read_only_udm.target.resource.resource_subtype 這個值取自 ResourceType 欄位。
SNI read_only_udm.network.tls.client.server_name 這個值取自 SNI 欄位。
SecurityAction read_only_udm.security_result.action 如果 SecurityAction 欄位或 sec_action 欄位為空白,則值會設為「ALLOW」;如果 SecurityAction 欄位為「challengeSolved」或「jschallengeSolved」,則值會設為「ALLOW_WITH_MODIFICATION」;如果 SecurityAction 欄位為「drop」或「block」,則值會設為「BLOCK」。
SecurityLevel read_only_udm.security_result.severity 這個值取自 SecurityLevel 欄位,並對應至相應的 UDM 嚴重程度值。
SessionID read_only_udm.network.session_id 這個值取自 SessionID 欄位。
SessionStartTime read_only_udm.metadata.event_timestamp 這個值取自 SessionStartTime 欄位。
SourceIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
read_only_udm.src.asset.ip
read_only_udm.src.ip
這個值取自 SourceIP 欄位。
SourcePort read_only_udm.principal.port
read_only_udm.src.port
這個值取自 SourcePort 欄位。
SrcIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
這個值取自 SrcIP 欄位。
SrcPort read_only_udm.principal.port 值取自 SrcPort 欄位。
TemporaryAccessDuration read_only_udm.network.session_duration.seconds 這個值取自 TemporaryAccessDuration 欄位。
時間戳記 read_only_udm.metadata.event_timestamp 這個值取自「時間戳記」欄位。
傳輸 read_only_udm.network.ip_protocol 這個值取自「Transport」欄位,並會轉換為大寫。
網址 read_only_udm.target.url 值取自網址欄位。
UserAgent read_only_udm.network.http.user_agent 這個值取自 UserAgent 欄位。
UserID read_only_udm.principal.user.product_object_id 這個值取自 UserID 欄位。
UserUID read_only_udm.target.user.product_object_id 這個值取自 UserUID 欄位。
VirtualNetworkID read_only_udm.principal.resource.product_object_id 這個值取自 VirtualNetworkID 欄位。
WAFAction read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
值取自 WAFAction 欄位。
WAFAttackScore read_only_udm.security_result.about.resource.attribute.labels 值取自 WAFAttackScore 欄位。
WAFFlags read_only_udm.security_result.about.resource.attribute.labels 值取自 WAFFlags 欄位。
WAFProfile read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
值取自 WAFProfile 欄位。
WAFRCEAttackScore read_only_udm.security_result.about.resource.attribute.labels 這個值取自 WAFRCEAttackScore 欄位。
WAFRuleID read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
read_only_udm.security_result.threat_id
值取自 WAFRuleID 欄位。
WAFRuleMessage read_only_udm.security_result.rule_name
read_only_udm.security_result.threat_name
這個值取自 WAFRuleMessage 欄位。
WAFSQLiAttackScore read_only_udm.security_result.about.resource.attribute.labels 這個值取自 WAFSQLiAttackScore 欄位。
WAFXSSAttackScore read_only_udm.security_result.about.resource.attribute.labels 值取自 WAFXSSAttackScore 欄位。
ZoneID read_only_udm.additional.fields 這個值取自 ZoneID 欄位。
read_only_udm.metadata.log_type 值設為「CLOUDFLARE」。
read_only_udm.metadata.product_name 如果記錄是 DNS 記錄,這個值會設為「Cloudflare Gateway DNS」;如果是 Gateway HTTP 記錄,則會設為「Cloudflare Gateway HTTP」;如果是稽核記錄,則會設為「Cloudflare Audit」;否則會設為「Web Application Firewall」。
read_only_udm.metadata.vendor_name 值設為「Cloudflare」。
read_only_udm.network.application_protocol 如果記錄是 DNS 記錄,這個值會設為「DNS」;如果 HTTPVersion 欄位包含「HTTP」,這個值會設為「HTTP」;如果 Protocol 欄位不為空白,且不是「tls」或「TLS」,這個值會設為 Protocol 欄位的值 (轉換為大寫)。
read_only_udm.network.direction 如果 EgressIP 欄位不為空白,則值會設為「OUTBOUND」。
read_only_udm.network.http.parsed_user_agent 這個值取自 UserAgent 或 ClientRequestUserAgent 欄位,並使用 parseduseragent 篩選器剖析。
read_only_udm.extensions.auth.type 如果「動作」欄位為「登入」或「登出」,則值會設為「MACHINE」。
read_only_udm.metadata.event_type 如果記錄是 DNS 記錄,這個值會設為「NETWORK_DNS」;如果記錄是 Gateway HTTP 記錄,這個值會設為「NETWORK_CONNECTION」;如果記錄是稽核記錄,且 ActorIP 和 ActorEmail 欄位空白,這個值會設為「USER_RESOURCE_ACCESS」;如果記錄是稽核記錄,且 ResourceType 和 newvalue 欄位不空白,這個值會設為「USER_RESOURCE_UPDATE_CONTENT」;如果 Action 欄位為「login」,這個值會設為「USER_LOGIN」;如果 Action 欄位為「logout」,這個值會設為「USER_LOGOUT」;如果 Email 欄位不空白且符合電子郵件地址格式,這個值會設為「USER_RESOURCE_ACCESS」;如果 EgressIP 和 SourceIP 欄位不空白,或 OriginIP 和 SourceIP 欄位不空白,這個值會設為「NETWORK_CONNECTION」。
read_only_udm.target.file.mime_type 值取自 EdgeResponseContentType 欄位。
read_only_udm.target.location.country_or_region 這個值取自「國家/地區」欄位。
read_only_udm.target.resource.id 值取自 AccountID 欄位或 ResourceID 欄位。
read_only_udm.target.resource.product_object_id 值取自 AccountID 欄位、AppUUID 欄位或 ResourceID 欄位。
read_only_udm.target.user.product_object_id 這個值取自 OwnerID 欄位或 UserUID 欄位。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。