收集 Cloudflare WAF 日志
支持的语言:
    
      
      
        
        
        
  
    
      Google SecOps
    
  
      
    
      
      
        
        
        
  
    
      SIEM
    
  
      
    
    
  此解析器可从 Cloudflare Web 应用防火墙 (WAF) JSON 日志中提取字段,并将其转换和映射到统一数据模型 (UDM)。它可处理各种 Cloudflare 操作,在将输出结构化为 UDM 格式之前,使用元数据和网络信息丰富数据。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
 - 对 Google Cloud的特权访问权限。
 - Cloudflare 企业版方案。
 - 对 Cloudflare 的特权访问权限。如需了解详情,请参阅 Cloudflare。
 
创建 Google Cloud 存储分区
- 登录 Google Cloud 控制台。
 前往 Cloud Storage 存储分区页面。
点击创建。
配置存储桶:
- 名称:输入符合存储桶名称要求的唯一名称(例如 cloudflare-waf)。
 - 选择数据存储位置:选择一个位置。
 - 为数据选择一个存储类别:为存储桶选择默认存储类别,或者选择 Autoclass 进行自动存储类别管理。
 - 选择如何控制对对象的访问权限:选择不强制执行禁止公开访问,然后为存储桶对象选择访问权限控制模型。
 
- 存储类别:根据您的需求进行选择(例如,标准)。
 
点击创建。
向 Cloudflare IAM 用户授予存储桶权限
- 在 Google Cloud中,依次前往存储 > 浏览器 > 存储分区 > 权限。
 - 添加具有 Storage Object Admin 权限的账号 logpush@cloudflare-data.iam.gserviceaccount.com 。
 
使用 Cloudflare 界面为 WAF 日志创建 Logpush 作业
- 登录 Cloudflare。
 - 依次前往分析和日志 > 日志推送。
 - 选择创建 Logpush 作业。
 - 在选择目标位置中,选择Google Cloud 存储空间。
 - 输入以下目的地详细信息:
- 存储桶: Google Cloud 存储桶名称
 - 路径:存储容器内的存储分区位置
 - 选择将日志整理到每日子文件夹中
 
 - 点击继续。
 
- 选择要推送到存储空间的 Security (WAF) 数据集。
 - 配置 logpush 作业:
- 输入作业名称。
 - 在“如果日志匹配”下,您可以选择要在日志中包含或移除的事件。如需了解详情,请参阅过滤条件。并非所有数据集都提供此选项。
 - 在发送以下内容字段中,您可以选择将所有日志推送到存储目标位置,也可以选择性地推送您想要的日志。
 
 - 点击提交。
 
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
 - 点击添加新 Feed。
 - 在下一页上,点击配置单个 Feed。
 - 在 Feed 名称字段中,输入 Feed 的名称(例如 Cloudflare WAF 日志)。
 - 选择 Google Cloud Storage V2 作为来源类型。
 - 选择 Cloudflare WAF 作为日志类型。
 - 点击获取服务账号。
 - 点击下一步。
 为以下输入参数指定值:
- 存储分区 URI:Cloud Storage 网址。
 - 源删除选项:根据您的偏好设置选择删除选项。
 
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 | 
|---|---|---|
Action | 
security_result.action_details | 
原始日志中的 Action 值直接分配给此 UDM 字段。 | 
Action | 
security_result.action | 
此字段的值派生自原始日志中的 Action 字段。如果 Action 为“allow”,则 UDM 字段设置为 ALLOW。如果 Action 是“challengeSolved”“jschallengeSolved”“managedchallengenoninteractivesolved”或“managedchallengeinteractivesolved”,则 UDM 字段设置为 ALLOW_WITH_MODIFICATION。如果 Action 为“drop”“block”或“connectionclose”,则 UDM 字段设置为 BLOCK。如果 Action 为“challengefailed”或“jschallengefailed”,则 UDM 字段设置为 FAIL。否则,该值会设置为 UNKNOWN_ACTION。 | 
ClientASN | 
network.asn | 
原始日志中的 ClientASN 值在转换为字符串后会直接分配给此 UDM 字段。 | 
ClientASNDescription | 
additional.fields.key | 
该键静态设置为“ClientASNDescription”。 | 
ClientASNDescription | 
additional.fields.value.string_value | 
原始日志中的 ClientASNDescription 值直接分配给此 UDM 字段。 | 
ClientCountry | 
principal.location.country_or_region | 
原始日志中的 ClientCountry 值直接分配给此 UDM 字段。 | 
ClientIP | 
principal.ip | 
原始日志中的 ClientIP 值直接分配给此 UDM 字段。 | 
ClientRefererHost | 
intermediary.hostname | 
原始日志中的 ClientRefererHost 值直接分配给此 UDM 字段。 | 
ClientRefererPath | 
network.http.referral_url | 
原始日志中的 ClientRefererPath 值直接分配给此 UDM 字段。 | 
ClientRequestHost | 
target.hostname | 
原始日志中的 ClientRequestHost 值直接分配给此 UDM 字段。 | 
ClientRequestMethod | 
network.http.method | 
原始日志中的 ClientRequestMethod 值直接分配给此 UDM 字段。 | 
ClientRequestPath | 
target.file.full_path | 
原始日志中的 ClientRequestPath 值直接分配给此 UDM 字段。 | 
ClientRequestProtocol | 
network.application_protocol | 
ClientRequestProtocol 的协议部分(例如,使用 grok 从“HTTP/1.1”中提取“HTTP”,将其转换为大写,然后分配给此 UDM 字段。 | 
ClientRequestUserAgent | 
network.http.user_agent | 
原始日志中的 ClientRequestUserAgent 值直接分配给此 UDM 字段。 | 
Datetime | 
metadata.event_timestamp | 
原始日志中的 Datetime 值会解析为 RFC 3339 时间戳,并分配给此 UDM 字段。 | 
EdgeColoCode | 
additional.fields.key | 
该键静态设置为“EdgeColoCode”。 | 
EdgeColoCode | 
additional.fields.value.string_value | 
原始日志中的 EdgeColoCode 值直接分配给此 UDM 字段。 | 
EdgeResponseStatus | 
network.http.response_code | 
原始日志中的 EdgeResponseStatus 值直接分配给此 UDM 字段并转换为整数。 | 
Kind | 
metadata.product_event_type | 
原始日志中的 Kind 值直接分配给此 UDM 字段。 | 
Metadata.filter | 
target.resource.attribute.labels.value | 
原始日志中的 Metadata.filter 值会分配给 target.resource.attribute.labels 中标签的 value 字段。此标签的 key 静态设置为“元数据过滤条件”。 | 
Metadata.type | 
target.resource.attribute.labels.value | 
原始日志中的 Metadata.type 值会分配给 target.resource.attribute.labels 中标签的 value 字段。相应标签的 key 静态设置为“元数据类型”。此字段的值是根据 ClientIP、ClientRequestHost 和 app_protocol 的存在情况和值派生出来的。如需了解具体逻辑,请参阅解析器代码。静态设置为“Cloudflare”。静态设置为“Cloudflare 日志聚合器”。静态设置为“CLOUDFLARE_WAF”。 | 
RayID | 
metadata.product_log_id | 
原始日志中的 RayID 值直接分配给此 UDM 字段。 | 
RuleID | 
security_result.rule_id | 
原始日志中的 RuleID 值直接分配给此 UDM 字段。 | 
Source | 
security_result.rule_name | 
原始日志中的 Source 值直接分配给此 UDM 字段。 | 
timestamp | 
metadata.event_timestamp,events.timestamp | 
原始日志中的 timestamp 值会直接分配给这些 UDM 字段。 | 
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。