3. 接入AWS WAF的部署形态

AWS WAF 本身是一套规则引擎,但它并不“悬空”存在,而是必须挂载在某个受保护资源上。挂载点不同,WAF 能看到的请求特征、能施加的处置动作、以及计费与日志方式都会发生变化。理解这些差异,是做出正确选型的前提。

一、四种典型入口的防护差异

CloudFront(边缘接入):WAF 在边缘节点执行,请求尚未到达源站就被过滤。它能看到客户端真实 IP(通过 CloudFront-Viewer-Address 等头部)、地理位置、TLS 指纹等边缘信息,支持速率限制、Bot Control、ATP 等高级规则。由于是全局边缘,攻击流量在离用户最近的位置被拦截,源站带宽和计算资源得到最大保护。代价是规则变更传播需要时间,且对源站内部路径的可见性依赖转发头。

ALB(区域接入):WAF 关联到 Application Load Balancer,在区域层面过滤。它能看到完整的 HTTP 请求(含 Host、Path、Query、Body),适合基于应用层语义的精细规则。但流量已经进入 VPC,攻击流量会消耗 ALB 的连接和带宽资源。ALB 的 WAF 是区域级资源,需在每个 Region 单独配置。

API Gateway(REST/HTTP API):WAF 关联到 Stage,天然理解 API 的路径结构和阶段概念。适合对 API 做基于路由的限流与鉴权前置过滤。注意 REST API 与 HTTP API 的 WAF 支持范围不同,且 WebSocket API 不支持直接关联 WAF。

AppSync(GraphQL):WAF 关联到 GraphQL API,能识别 GraphQL 特有的操作类型(query/mutation/subscription)和字段级请求。由于 GraphQL 单端点特性,传统基于路径的规则失效,需要依赖 WAF 的 GraphQL 规则或自定义 body 匹配。

四种入口的 WAF 挂载位置与防护边界 客户端 Internet CloudFront 边缘节点 · 全局 WAF 在边缘执行 可见:真实IP/地理/TLS 支持:Bot/ATP/速率限制 源站带宽零消耗 ALB 区域级 · VPC 内 WAF 在区域执行 可见:完整HTTP语义 支持:路径/头/Body规则 消耗 ALB 连接资源 API Gateway Stage 级关联 REST/HTTP API 可见:API 路由/阶段 支持:按路由限流 WebSocket 不支持 AppSync GraphQL API 可见:GraphQL 操作类型 单端点 · 路径规则失效 源站 EC2 / Lambda / 容器 选型核心:防护边界越靠前,源站越安全;但可见信息越少,规则越依赖边缘特征

二、选型方法:从三个维度判断

维度一:防护边界在哪里。如果希望攻击流量完全不进入 VPC,CloudFront + WAF 是首选;如果业务必须直接暴露 ALB(如内网负载均衡对外),则只能在 ALB 上挂 WAF。边界越靠前,源站越安全,但 WAF 能看到的请求细节越少。

维度二:需要什么粒度的规则。需要基于 Body 内容、特定 Header 或复杂路径匹配时,ALB 和 API Gateway 更合适;需要 Bot 识别、IP 信誉、地理封锁时,CloudFront 的边缘能力更强。AppSync 则必须使用 GraphQL 专用规则。

维度三:计费与运维成本。CloudFront 的 WAF 按请求数计费,且规则传播到全球边缘需要时间;ALB 的 WAF 按规则数和请求数计费,区域级部署需逐 Region 配置。API Gateway 的 WAF 与 Stage 绑定,适合按环境隔离。

三、组合使用与常见误区

实际工程中,常见做法是 CloudFront + WAF 做第一层粗过滤(拦截明显恶意流量、限速),ALB + WAF 做第二层精细规则(针对应用语义)。两层规则集可以不同,但要注意避免重复计费和规则冲突。

常见误区:认为“挂了 WAF 就安全了”。WAF 只是规则引擎,规则需要根据业务流量持续调优。另外,CloudFront 后的 ALB 如果直接暴露公网 IP,攻击者可以绕过 CloudFront 直连 ALB,此时 ALB 上的 WAF 或安全组必须独立生效。

四、一个可参考的选型决策表

业务场景 推荐入口 WAF 挂载点 关键理由
静态网站 + 全球加速 CloudFront CloudFront Distribution 边缘拦截,源站零暴露
传统 Web 应用(EC2 后端) ALB ALB 完整 HTTP 语义,规则精细
REST API 对外开放 API Gateway API Stage 按路由限流,环境隔离
GraphQL 服务 AppSync GraphQL API 识别操作类型,单端点防护
高安全要求 + 全球用户 CloudFront + ALB 两层均挂 WAF 纵深防御,各司其职