AWS WAF の仕組み
AWS WAF を使用して、保護されたリソースが HTTP(S) ウェブリクエストに対してどのように応答するか制御します。これを行うには、ウェブアクセスコントロールリスト (ACL) を定義し、保護する 1 つ以上のウェブアプリケーションリソースと関連付けます。
AWS WAF コンポーネント
AWS WAF の中心的なコンポーネントは次のとおりです。
-
ウェブ ACL - ウェブアクセスコントロールリスト (ACL) を使用して、一連の AWS リソースを保護します。ウェブ ACL を作成し、ルールを追加してその保護戦略を定義します。ルールは、ウェブリクエストを検査する基準を定義し、条件に一致するリクエストに対して取る行動を指定します。また、ルールによってまだブロックまたは許可されていないすべてのリクエストをブロックするか、許可するかを示すウェブ ACL に対してデフォルトのアクションをセットします。
ウェブ ACL は AWS WAF リソースです。
-
ルール - 各ルールには、検査基準を定義するステートメントと、ウェブリクエストがその基準を満たす場合に実行するアクションが含まれます。ウェブリクエストが条件を満たしている場合、それは一致となります。CAPTCHA パズルまたはサイレントクライアントブラウザのチャレンジを使用する一致リクエストをブロック、許可、カウント、ボットコントロールを実行するルールを設定できます。
ルールは AWS WAF リソースではありません。ルールはウェブ ACL またはルールグループのコンテキストでのみ定義されます。
-
ルールグループ – ルールはウェブ ACL 内または再利用可能なルールグループで直接定義することができます。AWSマネージドルールと AWS Marketplace 販売者は、使用するマネージドルールグループを提供します。また、独自のルールグループを定義することもできます。
ルールグループは AWS WAF リソースです。
AWS WAF ウェブ ACL キャパシティーユニット (WCU)
AWS WAF は、ウェブ ACL 容量ユニット (WCU) を使用して、ルール、ルールグループ、およびウェブ ACL の実行に必要なオペレーティングリソースを計算および制御します。AWS WAF は、ルールグループとウェブ ACL を設定するときに、WCU 制限を適用します。WCU は、AWS WAF によるウェブトラフィックの検査方法には影響しません。
AWS WAF は、各ルールの相対コストを反映するために、各ルールタイプについて異なる方法で容量を計算します。実行コストがほとんどない単純なルールでは、処理能力が大きい複雑なルールよりも使用される WCU が少なくなります。例えば、サイズ制限ルールステートメントでは、正規表現パターンセットに照らして検査するステートメントよりも使用する WCU が少なくなります。
AWS WAF は、ルール、ルールグループ、およびウェブ ACL の容量を管理します。
-
ルール容量 - AWS WAF は、ルールの作成または更新時にルール容量を計算します。ルール容量要件に関する基本的なガイドラインについては、AWS WAF ルールステートメント の各種ルールステートメントのリストを参照してください。また、ウェブ ACL またはルールグループを作成し、個別のルールを追加することで、AWS WAF コンソールでさまざまなルールタイプに必要な容量を把握することもできます。ルールを追加するときに使用されたキャパシティーユニットがコンソールに表示されます。
-
ルールグループ容量 - AWS WAF では、作成時に各ルールグループにイミュータブルな容量が割り当てられている必要があります。これは、AWS WAF を使用して作成したマネージド規則グループおよびルールグループに当てはまります。ルールグループを変更する場合、それらの変更に伴うルールグループの WCU を容量内に収める必要があります。これにより、ルールグループを使用しているウェブ ACL が最大容量内に留まります。
-
ウェブ ACL 容量 - ウェブ ACL の最大容量は 1,500 です。これはほとんどのユースケースに十分です。容量を増やす必要がある場合は、AWS Support センター
にお問い合わせください。
AWS WAF で保護できるリソース
AWS WAF ウェブ ACL を使用してグローバルまたはリージョンのリソースタイプを保護できます。ウェブ ACL を保護するリソースに関連付けることにより、これを実行できます。使用するウェブ ACL および AWS WAF リソースは、関連するリソースが所在する地域にある必要があります。Amazon CloudFront ディストリビューションの場合、これは米国東部 (バージニア北部) に設定されます。
Amazon CloudFront ディストリビューション
AWS WAF コンソールまたは API を使用し、AWS WAF ウェブ ACL を CloudFront ディストリビューションに関連付けることができます。ディストリビューション自体を作成または更新するとき、ウェブ ACL を CloudFront ディストリビューションに関連付けることもできます。AWS CloudFormation で関連付けを設定するには、CloudFront ディストリビューション設定を使用する必要があります。Amazon CloudFront の情報については、Amazon CloudFront デベロッパーガイドの「AWS WAF を使用してコンテンツへのアクセスの管理」を参照してください。
AWS WAF は CloudFront ディストリビューション用にグローバルに利用できますが、ウェブ ACL とウェブ ACL で使用されるリソース (ルールグループ、IP セット、正規表現パターンセットなど) を作成するには、リージョン米国東部 (バージニア北部) を使用する必要があります。一部のインターフェイスでは、[Global (CloudFront)] (グローバル (CloudFront)) のリージョンを選択できます。これを選択することは、米国東部 (バージニア北部) リージョンまたは us-east-1 を選択することと同じです。
地域リソース
AWS WAF が利用可能なすべてのリージョンで地域リソースを保護できます。リストについては、アマゾン ウェブ サービス全般のリファレンスの「AWS WAF エンドポイントとクォータ」を参照してください。
AWS WAF を使用して次の地域リソースタイプを保護できます。
Amazon API Gateway REST API
Application Load Balancer
AWS AppSync GraphQL API
Amazon Cognito ユーザープール
ウェブ ACL を AWS リージョン 内にある Application Load Balancer にのみ関連付けることができます。例えば、ウェブ ACL を AWS Outposts 上にある Application Load Balancer に関連付けることはできません。
使用するウェブ ACL およびその他の AWS WAF リソースは、保護されたリソースが所在する地域にある必要があります。保護された地域リソースの ウェブリクエストをモニタリングおよび管理するとき、AWS WAF はすべてのデータを保護されたリソースと同じ地域に保持します。
複数リソースの関連付けにおける制限
次の制限に従って、単一のウェブ ACL を 1 つ以上の AWS リソースに関連付けることができます。
-
各 AWS リソースを 1 つのウェブ ACL にのみ関連付けることができます。ウェブ ACL と AWS リソースの関係は 1 対多です。
-
ウェブ ACL を 1 つ以上の CloudFront ディストリビューションに関連付けることができます。CloudFront ディストリビューションに関連付けたウェブ ACL を他の AWS リソースタイプに関連付けることはできません。