本教程旨在展示如何用 AWS WAF 与 API Gateway 配合,实现基于 Web ACL 的精细化流量控制。通过组合 Rate-based rule、IP Set、Managed Rules 与自定义规则,达到防护、限流与可观测的目标。
主要组件包括 AWS WAFv2、区域或边缘的 API Gateway、CloudWatch Logs 与可选的 Lambda Authorizer。WAF 通过 Web ACL 绑定到 API Gateway,拦截恶意请求。
建议同时使用 Rate-based rule(防止暴增请求)、IP Set(白名单/黑名单)、GeoMatch(地理限制)与 Managed Rules(预置防护)来分层防御。
在 WAF 控制台新建 Web ACL,添加 Managed Rules(Core rule set)、自定义 RegexPatternSet 与 Rate-based rule,优先级按风险排序。
将 Web ACL 与 API Gateway 的阶段或域名绑定(区域 API 使用区域 WAF,CloudFront 则用边缘 WAF),确保流量在到达 Lambda/后端前被检查。
使用头部/URI 检查、自定义规则(比如基于 User-Agent 的 Bot Control),必要时结合 Lambda Authorizer 做身份或签名校验。
WAF 的 Rate-based rule 适合快速抑制异常流量,API Gateway 的 Usage Plan 与 API key 适合对客户级别做配额与节流,两者结合最为有效。
用 IP Set 管理常见攻击源或内网白名单,支持 CIDR,便于批量管理和自动化更新。
启用 CloudWatch Logs 与 WAF 访问日志,结合指标(请求计数、拦截率)设置告警,实现可观测性。
将规则以基础设施即代码(CloudFormation / Terraform)管理,实现规则回滚与灰度发布;使用测试流量验证 Custom Rules 的效果。
建议使用多层防护:基础的 Managed Rules + 动态的 Rate-based rule + 精确的 RegexPatternSet 和 IP Set,并结合 API Gateway 的配额与 Lambda Authorizer 做业务级鉴权,同时配合 CloudWatch 监控与告警。
Q1: WAF 可以直接拦截 API Gateway 的请求吗?
A1: 可以,WAF Web ACL 可绑定到区域或边缘的 API Gateway,拦截在到后端前。
Q2: Rate-based rule 与 Usage Plan 有何区别?
A2: Rate-based rule 快速抑制异常流量;Usage Plan 面向客户做配额与限速,两者互补。
Q3: 如何处理误报?
A3: 在开发环境开启日志、使用 COUNT 模式验证规则,再切换到 BLOCK,必要时放入白名单 IP Set。
Q4: 是否需要托管规则组?
A4: 推荐启用 Managed Rules 作为第一道防线,节省维护成本并覆盖常见威胁。
Q5: 如何与 CI/CD 集成?
A5: 使用 CloudFormation/Terraform 管理 Web ACL 与规则,测试通过后自动部署,避免手动变更。
Q6: 支持 IP 源实时更新吗?
A6: 支持,将 IP Set 与自动化脚本或 Firewall Manager 结合,可实现动态更新与同步。
