

**引入全新的主机体验 AWS WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS WAF 与亚马逊合作 CloudFront
<a name="cloudfront-features"></a>

了解如何 AWS WAF 与 Amazon CloudFront 功能配合使用。

创建保护包 (Web ACL) 时，可以指定 AWS WAF 要检查的一个或多个 CloudFront 发行版。 CloudFront 支持两种类型的分配：保护单个租户的标准分配和通过单个共享配置模板保护多个租户的多租户分配。 AWS WAF 根据您在保护包 (Web ACL) 中定义的规则检查两种分发类型的 Web 请求，每种类型的实现模式各不相同。

**Topics**
+ [操作方法 AWS WAF 适用于不同的发行类型](#cloudfront-features-distribution-types)
+ [使用 AWS WAF 附带 CloudFront Flat-Rate 定价计划](#waf-cf-pricing-plans)
+ [AI 流量变现 CloudFront](#cloudfront-features-ai-traffic-monetization)
+ [保护 CloudFront 发行版的常见用例 AWS WAF](cloudfront-waf-use-cases.md)
+ [AI 流量变现 CloudFront](#cloudfront-ai-monetization)

## 操作方法 AWS WAF 适用于不同的发行类型
<a name="cloudfront-features-distribution-types"></a>

### 分配类型
<a name="distribution-types-overview"></a>

AWS WAF 为标准和多租户 CloudFront 分发版本提供 Web 应用程序防火墙功能。

#### 标准分配
<a name="standard-distribution-overview"></a>

对于标准发行版，使用单个保护包 (Web ACL) 为每个发行版 AWS WAF 添加保护。您可以通过将现有保护包 (Web ACL) 与 CloudFront 发行版关联或在控制台中使用一键保护来启用此保护。 CloudFront 这使您可以独立管理每个分配的安全控制，因为对保护包（web ACL）的任何更改都仅影响与其关联的分配。

这种保护 CloudFront 分布的简单方法最适合通过单个保护包（Web ACL）为单个域名提供特定保护。

##### 标准分配注意事项
<a name="standard-waf-considerations"></a>
+ 对保护包（web ACL）的更改仅影响其关联的分配
+ 每个分配都需要独立的保护包（web ACL）配置
+ 每个分配的规则和规则组都单独进行管理

#### Multi-tenant 分布
<a name="tenant-distribution-overview"></a>

对于多租户分发，使用单个保护包 (Web ACL) 在多个域之间 AWS WAF 添加保护。由多租户分配管理的域称为分配租户。在多租户分配创建过程中或之后，您只能在 CloudFront 控制台中为多租户分配启用 AWS WAF 保护。但是，对保护包（Web ACL）的更改仍通过 AWS WAF 控制台或 API 进行管理。

Multi-tenant 发行版提供了在两个级别上启用 AWS WAF 保护的灵活性：
+ **Multi-tenant 分发级别** — 关联的保护包 (Web ACL) 提供基本安全控制，适用于共享该分发的所有应用程序
+ **分配租户级别**：多租户分配中的单个租户可拥有自己的保护包（web ACL），以实施额外的安全控制或覆盖多租户分配设置

这两个层级使多租户分布最适合在多个域之间共享 AWS WAF 保护，而不会失去为单个分配自定义安全性的能力。

#### Multi-tenant 分发注意事项
<a name="tenant-waf-considerations"></a>
+ 单个分配租户继承对与相关多租户分配相关联保护包（web ACL）所做的更改
+ 与特定分配租户关联的保护包（web ACL）可以覆盖在多租户保护包（web ACL）级别配置的设置
+ 托管规则组可在分配级别和分配租户级别实施
+ 应用程序标识符可在日志中找到，以便通过分配跟踪安全事件

### AWS WAF 按发行类型划分的功能
<a name="distribution-types-comparison"></a>


**比较保护包（web ACL）实施**  

| AWS WAF 特征 | 标准分配 | Multi-tenant 分布 | 
| --- | --- | --- | 
| 关联保护包（web ACL） | 每个分配一个保护包（web ACL） | 您可以使用可选的租户专用保护包（web ACL），跨租户共享保护包（web ACL） | 
| 规则管理 | 规则影响单个分配 | Multi-tenant 分配规则影响所有关联租户；特定于分配租户的规则仅影响该租户 | 
| 托管规则组 | 已应用于单个分配 | 可以在多租户分配级别应用于所有租户，也可以在租户级别应用于特定应用程序 | 
| 日志记录 | 标准 AWS WAF 日志 | 日志包含用于安全事件归因的租户标识符 | 

## 使用 AWS WAF 附带 CloudFront Flat-Rate 定价计划
<a name="waf-cf-pricing-plans"></a>

CloudFront 统一费率定价计划将亚马逊 CloudFront 全球内容分发网络 (CDN) AWS 服务 与多种功能相结合，按月定价，不收取超额费用，无论流量激增或攻击如何。

Flat-rate 定价计划包括以下内容 AWS 服务 和功能，按月收费：
+ CloudFront CDN
+ AWS WAF 和 DDoS 防护
+ 机器人管理和分析
+ Amazon Route 53 DNS
+ Amazon CloudWatch 日志提取
+ TLS 证书
+ 无服务器边缘计算
+ 每月 Amazon S3 存储服务抵扣金

方案分为免费、专业、商业和高级层级，可满足您应用程序的不同需求。计划无需每年承诺即可获得最优惠的价格。您可从免费版方案开始，然后升级以获得更多功能与更高的使用量限额。

有关更多信息以及计划和功能的完整列表，请参阅《*Amazon CloudFront 开发者指南*》中的[CloudFront 统一费率定价计划](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/flat-rate-pricing-plan.html)。

**重要**  
使用任何定价计划时，有效的 AWS WAF 保护包 (Web ACL) 都必须与您的 CloudFront 发行版保持关联。除非切换回即用即付定价，否则无法删除保护包 (Web ACL) 关联。  
虽然 AWS WAF Web ACL 必须与您的发行版保持关联，但您可以完全控制自己的安全配置。您可以通过调整 Web ACL 中启用或禁用的规则来自定义防护，也可以修改规则设置以满足您的安全要求。有关管理 Web ACL 规则的信息，请参阅[AWS WAF 规则](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)。

## AI 流量变现 CloudFront
<a name="cloudfront-features-ai-traffic-monetization"></a>

AI 流量盈利仅适用于与 Amazon CloudFront 分发相关的 AWS WAF 网络 ACL 资源。付款验证和结算在 CloudFront 边缘位置进行，从而最大限度地减少了全球代理商的延迟。

### 将人工智能流量变现与 CloudFront 函数和 Lambda @Edge 一起使用时的注意事项
<a name="cloudfront-features-monetization-edge-functions"></a>

当您在包含获利规则的分配中使用 CloudFront 函数或 Lambda @Edge 时 AWS WAF，请注意生成的响应的以下行为。 AWS WAF

**AWS WAF-生成的回复（402 需要付款质疑）**  
Viewer-response 函数（CloudFront 函数和 Lambda @Edge）无法在 AWS WAF生成的 402 响应上运行。您不能使用这些功能来自定义 “需要付款挑战”。您也无法向其添加标题或对其进行修改。如果您需要向 402 响应添加自定义标头（例如 CORS 或分析标头），请改用响应标头策略。响应标头策略适用于 AWS WAF生成的响应。

有关 CloudFront 函数和响应标头策略的更多信息，请参阅以下内容：
+ Viewer-response 函数不能在 HTTP 状态码 400 及更高版本上运行。有关 Edge 函数限制的更多信息，请参阅 [HTTP 状态码](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/edge-function-restrictions-all.html#function-restrictions-status-codes)。
+ 有关响应标头策略的更多信息，请参阅[了解响应标头策略](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html)。

**付费回复（结算后有 200 个）**  
成功完成付款结算后，原始响应将通过正常的 CloudFront 响应管道，包括查看者响应功能。Viewer-response 功能可以修改代理在付款后收到的响应。例如，它可以更改状态码或删除标头。

## AI 流量变现 CloudFront
<a name="cloudfront-ai-monetization"></a>

AI 流量盈利仅适用于与 Ama CloudFront zon 分发相关的网络 ACL。支付验证和访问令牌发放是在 CloudFront 边缘位置进行的，从而最大限度地减少了全球代理的延迟。

### 为什么 CloudFront 只有
<a name="cloudfront-ai-monetization-why"></a>

获利需要：
+ **Edge-native 付款验证** — 付款凭证在边缘进行验证，无需往返出发地。
+ **全球代币发行** — Scoped 访问令牌在边缘发行，并由提供相同分发的所有边缘站点认可。
+ **价格清单生成** — 包含定价详细信息的 402 响应是在边缘生成的，使流量低于机器对机器支付协议的延迟目标。

区域 Web ACL（Application Load Balancer、、、Cognito、App Runner、已验证访问权限）不支持 “获利” 操作。如果在区域 Web ACL 上配置了 Monetize 规则，则会跳过该规则，请求会继续执行下一个规则。

### 使用获利内容缓存行为
<a name="cloudfront-ai-monetization-cache"></a>

获利的资源需要特殊的缓存配置，以防止一个代理的付费访问权限向另一个代理提供缓存内容。

**获利路径的推荐缓存设置：**


| 设置 | 值 | Reason | 
| --- | --- | --- | 
| 缓存策略 | CachingDisabled 或自定义 | 防止跨代理缓存共享 | 
| 源请求策略 | 包含X-Agent-Id和X-Access-Token标题 | 允许 Origin 验证代理特定的令牌 | 
| TTL | 0（或简短，根据内容的新鲜度需求） | 确保每个代理请求都由以下人员进行评估 AWS WAF | 

如果您需要缓存以提高性能，请配置每个代理的缓存密钥：
+ 使用自定义缓存策略`X-Agent-Id`添加到缓存密钥。
+ 这样可以确保每个代理在付款后都会收到自己的缓存副本，而无需向其他代理提供付费内容。

**重要**  
如果您启用不带每个代理缓存密钥的缓存，则可能会在不进行付款验证的情况下从缓存向后续代理提供付费响应。务必在获利路径的缓存密钥中包含代理身份。

### 延迟特性
<a name="cloudfront-ai-monetization-latency"></a>


| 阶段 | 典型延迟 | 注意 | 
| --- | --- | --- | 
| 分类 \+ 402 代 | <10 毫秒 | 在边缘以内联方式运行 | 
| 付款验证 | <30 毫秒 | 证明验证是加密的，无需外部调用 | 
| 代币发行 \+ 原产地获取 | 标准 CloudFront 延迟 | 与普通请求相同 | 
| 额外开销总额 | <50 毫秒 | 高于标准的请求延迟 | 

### CloudFront 分发配置
<a name="cloudfront-ai-monetization-config"></a>

无需更改 CloudFront 分发设置即可启用盈利。该功能完全通过 AWS WAF Web ACL 和保护包配置进行控制。

确保进行以下配置：
+ **Web ACL 关联** — 您的发行版必须具有与 Bot Control 关联的 AWS WAF Web ACL 和获利规则。
+ **Origin 响应标头** — 如果您的源站设置了`Cache-Control`标头，请验证它们是否与获利路径的每代理缓存策略冲突。
+ **自定义错误页面** — 4xx 响应的 CloudFront 自定义错误页面不适用于 AWS WAF生成的 402 响应。价格清单由直接提供 AWS WAF。