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