

**の新しいコンソールエクスペリエンスの紹介 AWS WAF**

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

Amazon CloudFront 機能 AWS WAF で を使用する方法について説明します。

保護パック (ウェブ ACL) を作成するときに、 AWS WAF で検査する 1 つ以上の CloudFront ディストリビューションを指定できます。CloudFront は、個々のテナントを保護する標準ディストリビューションと、単一の共有設定テンプレートを使用して複数のテナントを保護するマルチテナントディストリビューションの 2 種類のディストリビューションをサポートしています。 AWS WAF は、保護パック (ウェブ ACL) で定義したルールに基づいて、両方のディストリビューションタイプのウェブリクエストを検査し、タイプごとに実装パターンが異なります。

**Topics**
+ [がさまざまなディストリビューションタイプと AWS WAF 連携する方法](#cloudfront-features-distribution-types)
+ [CloudFront 定額料金プラン AWS WAF での の使用](#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 ディストリビューションの両方にウェブアプリケーションファイアウォール機能を提供します。

#### 標準ディストリビューション
<a name="standard-distribution-overview"></a>

標準ディストリビューションの場合、 はディストリビューションごとに 1 つの保護パック (ウェブ ACL) を使用して保護 AWS WAF を追加します。この保護を有効にするには、既存の保護パック (ウェブ ACL) を CloudFront ディストリビューションに関連付けるか、CloudFront コンソールでワンクリック保護を使用します。これにより、保護パック (ウェブ ACL) を変更すると、それに関連付けられたディストリビューションにのみ影響するため、各ディストリビューションのセキュリティコントロールを個別に管理できます。

CloudFront ディストリビューションを保護するこの簡単な方法は、個々のドメインに単一の保護パック (ウェブ ACL) からの特定の保護を提供するのに最適です。

##### 標準ディストリビューションに関する考慮事項
<a name="standard-waf-considerations"></a>
+ 保護パック (ウェブ ACL) の変更は、関連付けられたディストリビューションにのみ影響します
+ 各ディストリビューションには、独立した保護パック (ウェブ ACL) 設定が必要です
+ ルールとルールグループはディストリビューションごとに個別に管理されます

#### マルチテナントディストリビューション
<a name="tenant-distribution-overview"></a>

マルチテナントディストリビューションの場合、 は単一の保護パック (ウェブ ACL) を使用して複数のドメインに保護 AWS WAF を追加します。マルチテナントディストリビューションによって管理されるドメインは、ディストリビューションテナントと呼ばれます。マルチテナントディストリビューション AWS WAF の保護は、マルチテナントディストリビューションの作成プロセス中または作成後に、CloudFront コンソールでのみ有効にできます。ただし、保護パック (ウェブ ACL) への変更は、 AWS WAF コンソールまたは API を通じて管理されます。

マルチテナントディストリビューションは、次の 2 つのレベルで AWS WAF 保護を可能にする柔軟性を提供します。
+ **マルチテナントディストリビューションレベル** – 関連付けられた保護パック (ウェブ ACL) は、そのディストリビューションを共有するすべてのアプリケーションに適用されるベースラインセキュリティコントロールを提供します
+ **ディストリビューションテナントレベル** – マルチテナントディストリビューション内の個々のテナントは、追加のセキュリティコントロールを実装したり、マルチテナントディストリビューション設定をオーバーライドしたりするために、独自の保護パック (ウェブ ACL) を持つことができます

これらの 2 つの階層により、マルチテナントディストリビューションは、個々のディストリビューションのセキュリティをカスタマイズする能力を失うことなく、複数のドメイン間で AWS WAF 保護を共有するのに最適です。

#### マルチテナントディストリビューションに関する考慮事項
<a name="tenant-waf-considerations"></a>
+ 個々のディストリビューションテナントは、関連するマルチテナントディストリビューションに関連付けられている保護パック (ウェブ ACL) に加えられた変更を継承します
+ 特定のディストリビューションテナントに関連付けられた保護パック (ウェブ ACL) は、マルチテナント保護パック (ウェブ ACL) レベルで設定された設定をオーバーライドできます
+ マネージドルールグループは、ディストリビューションレベルとディストリビューションテナントレベルの両方で実装できます
+ アプリケーション識別子をログに保存して、ディストリビューション別にセキュリティイベントを追跡できます

### AWS WAF ディストリビューションタイプ別の機能
<a name="distribution-types-comparison"></a>


**保護パック (ウェブ ACL) の実装を比較する**  

| AWS WAF 機能 | 標準ディストリビューション | マルチテナントディストリビューション | 
| --- | --- | --- | 
| 保護パック (ウェブ ACL) の関連付け | ディストリビューションごとに 1 つの保護パック (ウェブ ACL) | オプションでテナント固有の保護パック (ウェブ ACL) を使用して、テナント間で保護パック (ウェブ ACL) を共有できます | 
| ルールの管理 | ルールが 1 つのディストリビューションに影響する | マルチテナントディストリビューションルールは、関連付けられたすべてのテナントに影響します。ディストリビューションテナント固有のルールは、そのテナントにのみ影響します | 
| マネージドルールグループ | 個々のディストリビューションに適用 | すべてのテナントにマルチテナントディストリビューションレベルで、または特定のアプリケーションにテナントレベルで適用できます | 
| ログ記録 | 標準 AWS WAF ログ | ログには、セキュリティイベント属性のテナント識別子が含まれます | 

## CloudFront 定額料金プラン AWS WAF での の使用
<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 保護パック (ウェブ ACL) を CloudFront ディストリビューションに関連付ける必要があります。pay-as-you-goに切り替えない限り、保護パック (ウェブ ACL) の関連付けを削除することはできません。  
 AWS WAF ウェブ ACL はディストリビューションに関連付けられている必要がありますが、セキュリティ設定を完全に制御できます。ウェブ ACL で有効または無効にするルールを調整して保護をカスタマイズし、セキュリティ要件に合わせてルール設定を変更できます。ウェブ 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 ディストリビューションで同じように機能します。マルチテナントディストリビューションに関する考慮事項は、各機能シナリオの後に一覧表示されます。

## CloudFront カスタムエラーページ AWS WAF での の使用
<a name="cloudfront-features-custom-error-pages"></a>

デフォルトでは、 が指定した条件に基づいてウェブリクエストを AWS WAF ブロックすると、HTTP ステータスコードを CloudFront `403 (Forbidden)`に返し、CloudFront はそのステータスコードをビューワーに返します。ビューワーには、次のような簡潔で特に書式設定されていないデフォルトメッセージが表示されます。

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

カスタムレスポンスを定義することで、 AWS WAF 保護パック (ウェブ ACL) ルールでこの動作を上書きできます。 AWS WAF ルールを使用したレスポンス動作のカスタマイズの詳細については、「」を参照してください[Block アクションのカスタムレスポンスの送信](customizing-the-response-for-blocked-requests.md)。

**注記**  
 AWS WAF ルールを使用してカスタマイズしたレスポンスは、CloudFront カスタムエラーページで定義したレスポンス仕様よりも優先されます。

場合によってウェブサイトの他の部分と同じフォーマットを使用して、CloudFront を介してカスタムエラーメッセージを表示したい場合は、カスタムエラーメッセージを含むオブジェクト (HTML ファイルなど) をビューワーに返すように CloudFront を設定できます 。

**注記**  
CloudFront は、オリジンによって返される HTTP ステータスコード 403 と、リクエストがブロックされた AWS WAF ときに によって返される HTTP ステータスコード 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 ルール経由 - 保護パック (ウェブ ACLsマルチテナントディストリビューションとテナントレベルのカスタムエラーページの両方よりも優先されます。

## 独自の HTTP サーバーで実行されているアプリケーションに CloudFront AWS WAF で を使用する
<a name="cloudfront-features-your-own-http-server"></a>

CloudFront AWS WAF で を使用すると、Amazon Elastic Compute Cloud (Amazon EC2) で実行されているウェブサーバーでも、プライベートに管理するウェブサーバーでも、任意の HTTP ウェブサーバーで実行されているアプリケーションを保護できます。CloudFront と独自のウェブサーバー間、およびビューワーと CloudFront の間で HTTPS が必須になるように CloudFront を設定することもできます。

**CloudFront と独自のウェブサーバー間での HTTPS の必須化**  
CloudFront と独自のウェブサーバー間で HTTPS を必須にするには、CloudFront カスタムオリジン機能を使用し、特定のオリジンの **[Origin Protocol Policy]** (オリジンプロトコルポリシー) および **[Origin Domain Name]** (オリジンドメイン名) の設定を構成します。CloudFront 設定では、オリジンからオブジェクトをフェッチするとき CloudFront で使用するポートとプロトコルとともに、サーバーの DNS 名を指定できます。また、カスタムオリジンサーバー上の SSL/TLS 証明書が、設定したオリジンドメイン名と一致することを確認する必要もあります。の外部で独自の HTTP ウェブサーバーを使用する場合は AWS、信頼できるサードパーティー認証機関 (CA) によって署名された証明書を使用する必要があります。例えば、Comodo、DigiCert、Symantec などです。CloudFront と独自のウェブサーバー間の通信に 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 ディストリビューションの 1 つ以上のキャッシュ動作の**ビューワープロトコルポリシー**を変更できます。ビューワーと CloudFront 間での HTTPS の使用の詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[ビューワーと CloudFront 間の通信で HTTPS を必須にする](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html)」のトピックを参照してください。独自の 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 のウェブディストリビューションを作成するときは、CloudFront によって処理されてオリジンに転送される HTTP メソッドを選択します。次のオプションから選択できます。
+ **`GET`、`HEAD`** – CloudFront を使用して、オリジンからのオブジェクトの取得またはオブジェクトヘッダーの取得のみを行うことができます。
+ **`GET`、`HEAD`、`OPTIONS`** – CloudFront を使用して、オリジンからのオブジェクトの取得、オブジェクトヘッダーの取得、またはオリジンサーバーがサポートするオプションのリスト取得のみを行うことができます。
+ **`GET`、`HEAD`、`OPTIONS`、`PUT`、`POST`、`PATCH`、`DELETE`** – CloudFront を使用して、オブジェクトの取得、追加、更新、削除、およびオブジェクトヘッダーの取得を行うことができます。また、ウェブフォームからのデータの送信など、その他の `POST` オペレーションも実行できます。

「」で説明されているように、 AWS WAF バイト一致ルールステートメントを使用して、HTTP メソッドに基づいてリクエストを許可またはブロックすることもできます[文字列一致ルールステートメント](waf-rule-statement-type-string-match.md)。`GET` や など、CloudFront がサポートするメソッドの組み合わせを使用する場合は`HEAD`、他のメソッドを使用するリクエストをブロック AWS WAF するように を設定する必要はありません。`GET`、、 など、CloudFront がサポートしていないメソッドの組み合わせを許可する場合は`POST`、すべてのメソッドに応答するように CloudFront `HEAD`を設定し、 を使用して他のメソッドを使用するリクエスト AWS WAF をブロックできます。

が応答するメソッドの選択の詳細については、「*Amazon CloudFront デベロッパーガイド*」で「[ウェブディストリビューションを作成または更新する場合に指定する値](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 メソッド設定は、デフォルトですべてのテナントディストリビューションに適用されます。テナントディストリビューションは、必要に応じてこれらの設定をオーバーライドできます。
+ `GET` や など、CloudFront がサポートするメソッドの組み合わせを使用する場合は`HEAD`、他のメソッドを使用するリクエストをブロック AWS WAF するように を設定する必要はありません。
+ `GET`、、 など、CloudFront がデフォルトでサポートしていないメソッドの組み合わせを許可する場合は`POST`、すべてのメソッドに応答するように CloudFront `HEAD`を設定し、 を使用して他のメソッドを使用するリクエスト AWS WAF をブロックできます。

マルチテナントディストリビューションにセキュリティヘッダーを実装する場合は、次の点を考慮してください。
+ テンプレートレベルのセキュリティヘッダーは、すべてのテナントディストリビューションでベースライン保護を提供します
+ テナントディストリビューションは次のことができます。
  + マルチテナントディストリビューションで定義されていない新しいセキュリティヘッダーを追加する
  + テナント固有のヘッダーの値を変更する
  + マルチテナントディストリビューションレベルで設定されたセキュリティヘッダーを削除またはオーバーライドすることはできません
+ すべてのテナントに適用する必要がある重要なセキュリティコントロールには、マルチテナントディストリビューションレベルのヘッダーを使用することを検討してください。

## ログ記録に関する考慮事項
<a name="cloudfront-features-logging"></a>

標準ディストリビューションとマルチテナントディストリビューションの両方が AWS WAF ログ記録をサポートしていますが、ログの構造と管理方法には重要な違いがあります。


**ログ記録の比較**  

| 標準ディストリビューション | マルチテナントディストリビューション | 
| --- | --- | 
| ディストリビューションごとに 1 つのログ設定 | テンプレートとテナントレベルのログ記録オプション | 
| 標準ログフィールド | 追加のテナント識別子フィールド | 
| ディストリビューションごとに 1 つの送信先 | マルチテナントディストリビューションとテナントログに可能な別々の送信先 | 

## その他のリソース
<a name="cloudfront-saas-additional-resources"></a>
+ マルチテナントディストリビューションの詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[ディストリビューションの設定](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html)」を参照してください。
+ CloudFront AWS WAF での の使用の詳細については、*Amazon CloudFront * [デベロッパーガイド」の AWS WAF 「保護](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-awswaf.html)の使用」を参照してください。
+  AWS WAF ログの詳細については、「」を参照してください[保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)。