Cloudflare WAF 与 AWS WAF 有什么区别?
差异首先体现在架构而非功能:一个是自带 CDN 与 DDoS 的检查型反向代理,另一个是挂在负载均衡器前的规则引擎。这决定了覆盖范围、成本形态与运维方式。
直接回答: 两者的差异首先体现在架构而不是功能:Cloudflare WAF 是自带 CDN 与 DDoS 缓解的检查型反向代理,一次通过就把它的背后全部覆盖;AWS WAF 是逐个资源挂载的规则引擎(CloudFront、ALB、API Gateway),按 Web ACL、按规则、按规则组、按百万请求分别计费,DDoS 要由另一个产品(Shield Advanced)负责。两者谈不上谁「更安全」,取决于你要的是一条边缘 + 一张账单,还是每个云各配一套控制面。
先理解架构差异,再看功能清单
Cloudflare 的 WAF 是检查型反向代理的一部分。流量不可能绕过它到达源站,而同一次穿越顺带提供了 CDN 缓存、TLS 终止与 DDoS 吸收。WAF 只是你本来就在用的那条流水线中的一个环节。
AWS WAF 是挂在某个资源上的规则引擎——区域级 ALB、API Gateway REST API、AppSync 端点,或 CloudFront 分发。它只做检查,不承担转发。缓存需要另配 CloudFront,DDoS 需要另配 Shield,两者都是独立的计费项。
这一个差异解释了大部分实际后果:各自处在请求路径的什么位置、你还需要额外买什么、以及流量增长时账单怎么变。
核心差异对照
| 维度 | Cloudflare WAF | AWS WAF |
|---|---|---|
| 位置 | 源站前的反向代理,无法绕过 | 挂在 ALB / API Gateway / AppSync / CloudFront 上;不经过这些资源的流量不被检查 |
| 网络范围 | 全球 anycast,一套配置处处生效 | ALB 与 API Gateway 为区域级;仅通过 CloudFront 才是全局(且必须从 us-east-1 管理) |
| CDN | 内置 | 需要 CloudFront,单独计费 |
| DDoS | 全套餐内置不计量 L3/4/7 防护 | Shield Standard(免费、自动)覆盖 L3/4;Shield Advanced 每月 3,000 美元并需一年承诺 |
| 计费模型 | 套餐制:Free、Pro、Business 为固定月费,Enterprise 议价 | 用量组合:Web ACL 5.00 美元/月 + 每条规则 1.00 美元/月 + 每个规则组 1.00 美元/月 + 每百万请求 0.60 美元 |
| 容量计量 | 按套餐的规则条数(自定义规则 5 / 20 / 100 / 1,000) | WCU:含 1,500;每个 Web ACL 与每个规则组上限 5,000,文档列为不可调整 |
| Bot 控制 | Bot Fight Mode(Free)、Super Bot Fight Mode(Pro)、Bot Management(Enterprise) | Bot Control:每个 Web ACL 10 美元/月 + 每百万请求 1.00 美元(Common)或每百万 10.00 美元(Targeted) |
| 可见性 | Enterprise 提供 cf.waf.score 及子分值;Business 起提供分类字段 |
通过 AWS 日志目标做日志与分析;容量通过 WCU 计量 |
| 多租户 | WAF for SaaS(Enterprise),支持账号级策略 | 通常每租户或每资源一个 Web ACL,各自计费 |
| 正则 | Business 起支持 | 支持,但有尺寸限制:单条 pattern 200 字符,每个 pattern set 最多 10 条 |
请求路径上的两种形态
一个成本形态的算例(不是报价)
用一个不大但现实的场景:一个应用,每月 1,000 万次请求,10 条自定义规则,2 个托管规则组,不含 Bot Control 与 Shield Advanced。
- AWS WAF:Web ACL 5.00 + 规则 10.00 + 规则组 2.00 + 请求 6.00(10 × 0.60)≈ 每月 23 美元的 WAF 本身费用。CloudFront 的请求与流量费、Shield Advanced、Bot Control 均另计。
- Cloudflare:固定月费套餐——Free、Pro、Business 按官网标价,Enterprise 议价——CDN 与不计量 DDoS 已包含在套餐内。
真正值得比较的不是表面数字,而是攻击发生时怎么办。用量模型下,持续洪水既是一次事故,也是一笔账单;套餐模型下,它只是一次事故。经历过数天洪水的团队往往非常看重这一点,这也是 Shield Advanced 之所以存在——它以每月 3,000 美元的承诺,包含大量请求额度与 L7 DDoS 托管规则。
上述价格取自写作时 AWS 官方定价页,且会随区域变化;采购前请核实当期数字。
什么时候 AWS WAF 更合适
客观地说,两者确实是不同工具:
- 全部业务已在 AWS 上,且组织要求统一的 IAM 与审计边界。把 Web ACL 挂到现有 ALB 上,比引入第二个控制面更符合这种治理模型。
- 你需要按资源隔离策略。给不同 ALB 或 API 配不同 Web ACL,是表达「这些服务规则不同」的自然方式。
- 你已经买了 Shield Advanced。承诺已经沉没,在其上加 WAF 是自洽的。
- 数据驻留或区域合规要求决定检查点必须在某个区域内,而不是全球 anycast 边缘。
边界与不适用情况
- 两者都不能替代应用安全。输入校验、授权判断、参数化查询仍是你自己的事。WAF 检查请求,不知道你的代码拿它做了什么。
- WCU 是 AWS 上的真实约束。每个 Web ACL 与规则组 5,000 WCU 的硬上限意味着大型托管规则组组合可能放不下。在提交规则集之前先做容量预算。
- 免费档的预期不同。Cloudflare 的 Free 套餐包含 Free Managed Ruleset、5 条自定义规则与不计量 DDoS 防护;Cloudflare 与 OWASP 托管规则集从 Pro 起。AWS WAF 没有免费档——Web ACL 从第一小时起计费。
- 两者共存可行,但需要明确归属。常见模式是边缘用 Cloudflare、内部 ALB 用 AWS WAF。要定好哪一层是权威日志层,并确保另一层不会剥掉你规则依赖的客户端 IP。
FAQ
哪一个更安全? 本质上没有高下。覆盖率与维护质量才是主导因素。任何一边调得好的规则集,都胜过另一边维护糟糕的规则集;差异在于哪个平台更容易做到覆盖完整。
AWS WAF 能替代 CDN 吗? 不能。它只对资源做请求检查,缓存与分发是 CloudFront 的职责,单独计费。Cloudflare 的代理在一次穿越里同时完成两件事。
为什么 AWS 的账单会让人意外? 因为它是组合式的。Web ACL、每条规则、每个规则组、每百万请求都是独立条目,而 Bot Control、CAPTCHA 尝试、超出默认请求体检查上限的部分又各自加行。
我们是多云架构,选哪个? 代理模型更容易迁移:一套边缘配置覆盖任何地方的源站。挂载模型意味着每个云都要重做一遍,并且各自出一份账单。
相关阅读
参考来源
以下为 Cloudflare 官方文档页面,本文涉及的功能可用性、配额与限制以此为准;功能会随产品更新变化,以控制台实际可见项为准。
- aws.amazon.com/waf/pricing/
- aws.amazon.com/shield/pricing/
- docs.aws.amazon.com/waf/latest/developerguide/limits.html
- docs.aws.amazon.com/waf/latest/developerguide/aws-waf-capacity-units.html
- developers.cloudflare.com/waf/
- developers.cloudflare.com/waf/custom-rules/
- developers.cloudflare.com/ddos-protection/about/
- developers.cloudflare.com/waf/detections/attack-score/