一致条件を使用すると、ウェブサイトのホワイトリストやカスタム保護ルールを設定する際に、特定の HTTP リクエスト属性をターゲットにすることができます。Web Application Firewall (WAF) は、保護ルール内のすべての条件が満たされた場合にのみルールを適用します。
一致条件の仕組み
一致条件は 3 つの要素で構成されます。
-
マッチフィールド — 検査する HTTP リクエスト属性 (例: URL、IP、User-Agent)
-
論理演算子 — フィールド値を比較する方法 (例: 等しい、含む、プレフィックス一致)
-
[マッチコンテンツ] — 比較対象となる値
各保護ルールには、最大 5 つの一致条件を設定できます。条件は AND ロジックで結合されるため、WAF がルールのアクションを適用する前に、リクエストはすべての条件を満たす必要があります。
ホワイトリストを設定する場合、[バイパス対象モジュール] パラメーターを設定して、一致したリクエストがバイパスする WAF モジュールを指定します。カスタム保護ルールを設定する場合、[アクション] パラメーターを設定して、一致したリクエストに対して WAF が実行するアクションを指定します。詳細については、以下をご参照ください。
対応する一致フィールド
フィールドは、利用可能なエディションごとにグループ化されています。Pro+ と表示されているフィールドは、Pro Edition、Business Edition、Enterprise Edition、および Exclusive Edition で利用できます。Business+ と表示されているフィールドは、Business Edition、Enterprise Edition、または Exclusive Edition が必要です。
Pro Edition、Business Edition、Enterprise Edition、および Exclusive Edition
| フィールド | タイプ | 説明 | 対応する論理演算子 |
|---|---|---|---|
| [URL] | 文字列 | リクエストの完全な URL。 | 等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [IP] | IP | リクエストの送信元 IP アドレス。個々の IP アドレスまたは CIDR ブロック (例: 47.100.XX.XX/24) を入力します。複数の値はカンマで区切ります。 |
含まれる、含まれない。 説明
1 つの保護ルールでは、すべての IP 一致条件にわたり、合計で最大 50 個の IP アドレスまたは CIDR ブロックを指定できます。 |
| [Referer] | 文字列 | リクエストされたリソースにリンクしたページの URL (HTTP Referer ヘッダー)。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、空、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [User-Agent] | 文字列 | User-Agent ヘッダーで示される、クライアントのブラウザ、レンダリングエンジン、バージョン。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、空、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [Params] | 文字列 | リクエスト URL 内のクエリ文字列全体 (? の後のすべて)。例えば、www.example.com/index.html?action=login の場合、Params は action=login です。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [Query-Arg] | 文字列 | リクエスト URL 内の個別のクエリ引数。例えば、www.example.com/request_path?arg1=a&arg2=b では、クエリ引数は arg1=a と arg2=b です。説明
マッチフィールドを Query-Arg に設定し、論理演算子を「含む」に設定すると、WAF は引数名に対して部分文字列照合を行います。マッチコンテンツを |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、空、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [URLPath] | 文字列 | クエリ文字列を除く、リクエスト URL のパス部分。 | 等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、長さが等しい、長さが大きい、長さが小さい、プレフィックス一致、サフィックス一致、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
Business Edition、Enterprise Edition、および Exclusive Edition のみ
| フィールド | タイプ | 説明 | 対応する論理演算子 |
|---|---|---|---|
| [Cookie] | 文字列 | リクエスト内の Cookie データ。 | 等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、長さが等しい、長さが大きい、長さが小さい、正規表現一致、正規表現不一致。 |
| [Content-Type] | 文字列 | リクエストで指定される HTTP コンテンツタイプ。Multipurpose Internet Mail Extensions (MIME) タイプとも呼ばれます。 | 等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、長さが等しい、長さが大きい、長さが小さい、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [Content-Length] | 数値 | リクエストで許可されるバイト数。 | より小さい、等しい、より大きい。 |
| [X-Forwarded-For] | 文字列 | HTTP プロキシまたは Server Load Balancer (SLB) インスタンスによって転送された、クライアントリクエストの送信元 IP アドレス。X-Forwarded-For (XFF) ヘッダーは、転送されたリクエストにのみ存在します。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、存在しない、長さが等しい、長さが大きい、長さが小さい。 |
| [Post-Body] | 文字列 | リクエストのボディコンテンツ。 | 等しい、等しくない、含む、含まない、存在しない、プレフィックス一致、サフィックス一致、正規表現一致。 重要
Pro Edition では正規表現一致は利用できません。 |
| [Server-Port] | 文字列 | オリジンサーバーのポート番号。例えば、www.example.com:9999 の場合、サーバーポートは 9999 です。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない。 |
| [Http-Method] | 文字列 | リクエストの HTTP メソッド。有効な値: GET、POST、DELETE、PUT、OPTIONS。 |
等しい、等しくない、いずれかの値に等しい、どの値とも等しくない。 |
| [Header] | 文字列 | カスタム HTTP リクエストヘッダー。このフィールドは、非標準またはアプリケーション固有のヘッダーとの照合に使用します。 | 等しい、等しくない、いずれかの値に等しい、どの値とも等しくない、含む、含まない、いずれかの値を含む、どの値も含まない、存在する、存在しない、長さが等しい、長さが大きい、長さが小さい、正規表現一致、正規表現不一致。 重要
Pro Edition では正規表現一致は利用できません。 |
Params と Query-Arg の違い
Params と Query-Arg は、どちらもクエリ文字列を検査しますが、粒度が異なります。
| Params | Query-Arg | |
|---|---|---|
| スコープ | クエリ文字列全体を 1 つの値として扱う | クエリ文字列内の個別の引数 |
| 値の例 | action=login&user=alice |
action=login または user=alice |
| 最適な用途 | クエリ文字列全体のパターンと照合する場合 | 特定の引数名または値と照合する場合 |
例えば、arg1 が特定の値に設定されているリクエストをブロックするには、Query-Arg を「等しい」と組み合わせて使用します。クエリ文字列に特定の部分文字列が含まれているリクエストに一致させるには、Params を「含む」と組み合わせて使用します。