

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

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