

**推出 的新主控台體驗 AWS WAF**

您現在可以使用更新後的體驗，在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊，請參閱[使用 主控台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS WAF 搭配 Amazon CloudFront 使用
<a name="cloudfront-features"></a>

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

當您建立保護套件 (Web ACL) 時，您可以指定要檢查的 AWS WAF 一或多個 CloudFront 分佈。CloudFront 支援兩種分佈類型：保護個別租用戶的標準分佈，以及透過單一共用組態範本保護多個租用戶的多租用戶分佈。 會根據您在保護套件 (Web ACLs) 中定義的規則，針對每種類型使用不同的實作模式來 AWS WAF 檢查兩種分佈類型的 Web 請求。

**Topics**
+ [

## AWS WAF 如何使用不同的分佈類型
](#cloudfront-features-distribution-types)
+ [

## 使用 AWS WAF 搭配 CloudFront 固定費率定價計劃
](#waf-cf-pricing-plans)
+ [

# 使用 保護 CloudFront 分佈的常見使用案例 AWS WAF
](cloudfront-waf-use-cases.md)

## 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) 組態
+ 規則和規則群組會針對每個分佈分別管理

#### 多租戶分佈
<a name="tenant-distribution-overview"></a>

對於多租戶分佈， 使用單一保護套件 (Web ACL) 在多個網域中 AWS WAF 新增保護。由多租用戶分佈管理的網域稱為分佈租用戶。您只能在多租用戶分佈建立程序期間或之後，在 CloudFront 主控台中啟用多租用戶分佈的 AWS WAF 保護。不過，保護套件 (Web ACL) 的變更仍會透過 AWS WAF 主控台或 API 進行管理。

多租戶分佈提供在兩個層級啟用 AWS WAF 保護的彈性：
+ **多租戶分佈層級** – 關聯的保護套件 (Web ACLs) 提供基準安全控制，適用於共用該分佈的所有應用程式
+ **分佈租用戶層級** – 多租用戶分佈中的個別租用戶可以擁有自己的保護套件 (Web ACLs)，以實作額外的安全控制或覆寫多租用戶分佈設定

這兩個層使多租戶分佈最適合跨多個網域共用 AWS WAF 保護，而不會失去為個別分佈自訂安全性的能力。

#### 多租戶分佈考量
<a name="tenant-waf-considerations"></a>
+ 個別分佈租用戶會繼承對與相關多租用戶分佈相關聯的保護套件 (Web ACLs) 所做的變更
+ 與特定分佈租用戶相關聯的保護套件 (Web ACLs) 可以覆寫在多租用戶保護套件 (Web ACL) 層級設定的設定
+ 受管規則群組可以在分佈和分佈租用戶層級實作
+ 應用程式識別符可以位於日誌中，以依分佈追蹤安全事件

### AWS WAF 依分佈類型的功能
<a name="distribution-types-comparison"></a>


**比較保護套件 (Web ACL) 實作**  

| AWS WAF 功能 | 標準分佈 | 多租戶分佈 | 
| --- | --- | --- | 
| 關聯保護套件 (Web ACLs) | 每個分佈一個保護套件 (Web ACL) | 您可以使用選用的租用戶特定保護套件 (Web ACLs)，跨租用戶共用保護套件 (Web ACLs) | 
| 規則管理 | 規則會影響單一分佈 | 多租用戶分佈規則會影響所有相關租用戶；分佈租用戶特定規則只會影響該租用戶 | 
| 受管規則群組 | 套用至個別分佈 | 可套用至所有租用戶的多租用戶分佈層級，或套用至特定應用程式的租用戶層級 | 
| 日誌 | 標準 AWS WAF 日誌 | 日誌包含安全事件屬性的租戶識別符 | 

## 使用 AWS WAF 搭配 CloudFront 固定費率定價計劃
<a name="waf-cf-pricing-plans"></a>

CloudFront 固定費率定價計劃將 Amazon CloudFront 全球內容交付網路 (CDN) 與多個 AWS 服務 和 功能結合為每月價格，而不會產生超額費用，無論流量峰值或攻擊。

固定費率定價計劃包含下列 AWS 服務 和 功能，每月價格簡單：
+ CloudFront CDN
+ AWS WAF 和 DDoS 保護
+ 機器人管理和分析
+ Amazon Route 53 DNS
+ Amazon CloudWatch Logs 擷取
+ TLS 憑證
+ 無伺服器邊緣運算
+ 每月 Amazon S3 儲存額度

計劃提供免費、專業、商業和高級方案，以符合應用程式的需求。計劃不需要年度承諾，即可獲得最佳的可用費率。從 免費計劃開始並升級，以存取更多功能和更大的用量限額。

如需詳細資訊和計劃和功能的完整清單，請參閱《Amazon [CloudFront 開發人員指南》中的 CloudFront 固定費率定價計劃](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/flat-rate-pricing-plan.html)。 *Amazon CloudFront *

**重要**  
使用任何定價計劃時，有效的 AWS WAF 保護套件 (Web ACL) 必須與您的 CloudFront 分佈保持關聯。除非您切換回pay-as-you-go定價，否則無法移除保護套件 (Web ACL) 關聯。  
雖然 AWS WAF Web ACL 必須與您的分佈保持關聯，但您可以完全控制您的安全組態。您可以透過調整 Web ACL 中啟用或停用哪些規則來自訂保護，並修改規則設定以符合您的安全需求。如需管理 Web ACL 規則的資訊，請參閱[AWS WAF 規則](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)。

# 使用 保護 CloudFront 分佈的常見使用案例 AWS WAF
<a name="cloudfront-waf-use-cases"></a>

下列 AWS WAF 功能對所有 CloudFront 分佈的運作方式相同。多租戶分佈的考量事項會列在每個功能案例之後。

## 使用 AWS WAF 搭配 CloudFront 自訂錯誤頁面
<a name="cloudfront-features-custom-error-pages"></a>

根據預設，當 根據您指定的條件 AWS WAF 封鎖 Web 請求時，它會將 HTTP 狀態碼傳回 `403 (Forbidden)` CloudFront，而 CloudFront 會將該狀態碼傳回給檢視器。然後，檢視器會顯示簡短且稀疏格式的預設訊息，如下所示：

```
Forbidden: You don't have permission to access /myfilename.html on this server.
```

您可以透過定義自訂回應來覆寫 AWS WAF 保護套件 (Web ACL) 規則中的此行為。如需使用 AWS WAF 規則自訂回應行為的詳細資訊，請參閱 [傳送Block動作的自訂回應](customizing-the-response-for-blocked-requests.md)。

**注意**  
您使用 AWS WAF 規則自訂的回應優先於您在 CloudFront 自訂錯誤頁面中定義的任何回應規格。

如果您寧願透過 CloudFront 顯示自訂錯誤訊息，可能使用與網站其他部分相同的格式，您可以設定 CloudFront 將包含自訂錯誤訊息的物件 （例如 HTML 檔案） 傳回給檢視器。

**注意**  
CloudFront 無法區分原始伺服器傳回的 HTTP 狀態碼 403，以及封鎖請求 AWS WAF 時傳回的狀態碼 403。這表示您無法根據不同原因導致 HTTP 狀態碼 403 而傳回不同的自訂錯誤頁面。

如需 CloudFront 自訂錯誤頁面的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[產生自訂錯誤回應](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html)。

### 多租戶分佈中的自訂錯誤頁面
<a name="custom-error-pages-template-distributions"></a>

對於 CloudFront 多租用戶分佈，您可以透過下列方式設定自訂錯誤頁面：
+ 在多租用戶層級 - 這些設定適用於使用多租用戶分佈範本的所有租用戶分佈
+ 透過 AWS WAF 規則 - 在保護套件 (Web ACLs) 中定義的自訂回應優先於多租用戶分佈和租用戶層級自訂錯誤頁面

## 針對在您自己的 HTTP 伺服器上執行的應用程式使用 AWS WAF 搭配 CloudFront
<a name="cloudfront-features-your-own-http-server"></a>

當您 AWS WAF 搭配 CloudFront 使用 時，您可以保護在任何 HTTP Web 伺服器上執行的應用程式，無論是在 Amazon Elastic Compute Cloud (Amazon EC2) 中執行的 Web 伺服器，還是您私下管理的 Web 伺服器。您也可以將 CloudFront 設定為在 CloudFront 與您自己的 Web 伺服器之間，以及檢視器與 CloudFront 之間需要 HTTPS。

**CloudFront 和您自己的 Web 伺服器之間需要 HTTPS**  
若要在 CloudFront 和您自己的 Web 伺服器之間要求 HTTPS，您可以使用 CloudFront 自訂原始伺服器功能，並設定特定原始伺服器的**原始伺服器通訊協定政策和****原始伺服器網域名稱**設定。在 CloudFront 組態中，您可以指定伺服器的 DNS 名稱，以及您希望 CloudFront 從原始伺服器擷取物件時使用的連接埠和通訊協定。您也應該確保自訂原始伺服器上的 SSL/TLS 憑證符合您設定的原始網域名稱。當您在 外部使用自己的 HTTP Web 伺服器時 AWS，您必須使用由信任的第三方憑證授權單位 (CA) 簽署的憑證，例如 Comodo、DigiCert 或 Symantec。如需有關在 CloudFront 與您自己的 Web 伺服器之間需要 HTTPS 通訊的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[在 CloudFront 與自訂原始伺服器之間需要 HTTPS 通訊](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html)的主題。

**在檢視器和 CloudFront 之間需要 HTTPS**  
若要在檢視器和 CloudFront 之間要求 HTTPS，您可以變更 CloudFront 分佈中一或多個快取行為的**檢視器通訊協定政策**。如需在檢視器和 CloudFront 之間使用 HTTPS 的詳細資訊，請參閱《Amazon CloudFront 開發人員指南》中的在[檢視器和 CloudFront 之間通訊需要 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) 的主題。 *Amazon CloudFront * 您也可以使用自己的 SSL 憑證，讓檢視器可以使用自己的網域名稱透過 HTTPS 連線至 CloudFront 分佈，例如 *https://www.mysite.com*。如需詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[設定替代網域名稱和 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html) 主題。

對於多租戶分佈，HTTP 方法組態遵循以下階層：
+ 範本層級設定會定義所有租戶分佈允許的基準 HTTP 方法
+ 租用戶分佈可以覆寫這些設定以：
  + 允許比多租戶分佈更少的方法 （使用 AWS WAF 規則來封鎖其他方法）
  + 如果多租用戶分佈設定為支援它們，則允許使用更多方法
+ AWS WAF 無論 CloudFront 組態為何，多租戶分佈和租戶層級的 規則都可以進一步限制 HTTP 方法

## 選擇 CloudFront 回應的 HTTP 方法
<a name="cloudfront-features-allowed-http-methods"></a>

建立 Amazon CloudFront Web 分佈時，您可以選擇您希望 CloudFront 處理並轉送至原始伺服器的 HTTP 方法。您可從下列選項擇一使用：
+ **`GET`， `HEAD`** – 您只能使用 CloudFront 從您的原始伺服器取得物件或取得物件標頭。
+ **`GET`、`HEAD`、 `OPTIONS`** – 您只能使用 CloudFront 從原始伺服器取得物件、取得物件標頭，或擷取原始伺服器支援的選項清單。
+ **`GET`、`HEAD`、`OPTIONS`、`PUT`、`POST`、`PATCH`、 `DELETE`** – 您可以使用 CloudFront 來取得、新增、更新和刪除物件，以及取得物件標頭。此外，您可以執行其他`POST`操作，例如從 Web 表單提交資料。

您也可以使用 AWS WAF 位元組比對規則陳述式，根據 HTTP 方法允許或封鎖請求，如中所述[字串比對規則陳述式](waf-rule-statement-type-string-match.md)。如果您想要使用 CloudFront 支援的方法組合，例如 `GET`和 `HEAD`，則不需要設定 AWS WAF 來封鎖使用其他方法的請求。如果您想要允許 CloudFront 不支援的方法組合，例如 `GET`、 `HEAD`和 `POST`，您可以設定 CloudFront 回應所有方法，然後使用 AWS WAF 封鎖使用其他方法的請求。

如需有關選擇 CloudFront 回應的方法的詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[您在建立或更新 Web 分佈時指定的主題值](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html)中[允許的 HTTP 方法](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesAllowedHTTPMethods)。

**多租戶分佈中允許的 HTTP 方法組態**  
對於多租戶分佈，在多租戶分佈層級設定的 HTTP 方法組態預設會套用至所有租戶分佈。租戶分佈可以視需要覆寫這些設定。
+ 如果您想要使用 CloudFront 支援的方法組合，例如 `GET`和 `HEAD`，您不需要設定 AWS WAF 來封鎖使用其他方法的請求。
+ 如果您想要允許 CloudFront 預設不支援的方法組合，例如 `GET`、 `HEAD`和 `POST`，您可以設定 CloudFront 回應所有方法，然後使用 AWS WAF 封鎖使用其他方法的請求。

在多租用戶分佈中實作安全標頭時，請考慮下列事項：
+ 範本層級安全標頭提供所有租用戶分佈的基準保護
+ 租戶分佈可以：
  + 新增多租戶分佈中未定義的安全標頭
  + 修改租戶特定標頭的值
  + 無法移除或覆寫在多租戶分佈層級設定的安全標頭
+ 考慮將多租用戶分佈層級標頭用於應適用於所有租用戶的關鍵安全控制

## 記錄注意事項
<a name="cloudfront-features-logging"></a>

標準和多租用戶分佈都支援 AWS WAF 記錄，但日誌的結構和管理方式存在重要差異：


**記錄比較**  

| 標準分佈 | 多租戶分佈 | 
| --- | --- | 
| 每個分佈一個日誌組態 | 範本和租戶層級記錄選項 | 
| 標準日誌欄位 | 其他租戶識別符欄位 | 
| 每個分佈的單一目的地 | 多租用戶分佈和租用戶日誌可能分開的目的地 | 

## 其他資源
<a name="cloudfront-saas-additional-resources"></a>
+ 若要進一步了解多租戶分佈，請參閱《*Amazon CloudFront 開發人員指南*》中的[設定分佈](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html)。
+ 若要進一步了解如何 AWS WAF 搭配 CloudFront 使用 ，請參閱《*Amazon CloudFront 開發人員指南*》中的[使用 AWS WAF 保護](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-awswaf.html)。
+ 若要進一步了解 AWS WAF 日誌，請參閱 [保護套件 (Web ACL) 流量的日誌欄位](logging-fields.md)。