複数のCloudFrontディストリビューションが紐づいたWAF WebACLで特定URLに対してのみ接続元IPアドレス制限したい

2023.06.24

困っていた内容

複数の CloudFront ディストリビューションが紐づいた WAF WebACL でパスを含む特定の URL に対してのみ接続元 IP アドレス制限したいのですが、ルールの設定方法がわかりません。

WAF WebACL には二つの CloudFront ディストリビューションが紐づいています。

どう対応すればいいの?

問題を解決するアプローチは一つではありませんが、ここでは一例を紹介します。

WebACL ルールで以下 3 つのステートメントを作成し、全ての条件に合致する (matches all the statements (AND)) リクエストを制限します。

  1. 特定の IP アドレスからのリクエスト
  2. 特定のドメイン名へのリクエスト
  3. 特定のパス名へのリクエスト

Statement 1

特定の IP アドレスからのリクエストを拒否するために、拒否すべき IP を含む IP セットを設定します。

  • Inspect: "Originates from IP address in"
  • IP set: 事前に作成した IP セットを指定

Statement 2

特定のドメイン名へのリクエストについて制御を行うため 単一ヘッダーを利用した以下の設定を行います。

  • Inspect: "Request Components - Single header"
  • Header field name: "host"
  • String to match: 特定のドメイン名を指定

Statement 3

特定パス名へのアクセスを制御するため URI パス を指定します。

  • Inspect: "Request Components - URI Path"
  • String to match: 特定のパスを指定

Action

Action は Block に設定します。

動作確認

ルール適用前

全てのサイトの全てのページにアクセスできる状態です。

ルール適用後

制限したいサイトの特定パスのみ制限できました。

参考資料