AWS WAF の新しいコンソールエクスペリエンスのご紹介
更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、「更新されたコンソールエクスペリエンスを使用する」を参照してください。
ノンブロッキングアクションのためのカスタムリクエストヘッダーの挿入
このセクションでは、ルールアクションがリクエストを許可するとき、元の HTTP リクエストにカスタムヘッダーを挿入するよう AWS WAF に指示する方法について説明します。このオプションでは、リクエストにのみ追加します。元のリクエストの一部を変更したり、置き換えたりすることはできません。カスタムヘッダー挿入のユースケースには、挿入されたヘッダーに基づいてリクエストを異なる方法で処理するようにダウンストリームアプリケーションに通知し、分析のためにリクエストのフラグを立てることが含まれます。
重要
このオプションは、ルールアクション Allow、Count、CAPTCHA、Challenge に適用され、Allow に設定されている保護パック (ウェブ ACL) のデフォルトアクションにも適用されます。ルールアクションの詳細については、「AWS WAF でのルールアクションの使用」を参照してください。デフォルトの保護パック (ウェブ ACL) アクションの詳細については、「AWS WAF での保護パック (ウェブ ACL) のデフォルトアクションの設定」を参照してください。
カスタムリクエストヘッダー名を使用する場合の考慮事項
リクエストヘッダーに追加されたプレフィックス
既にリクエストに含まれているヘッダーとの混同を避けるために、AWS WAF は、x-amzn-waf- で挿入するすべてのリクエストヘッダーにプレフィックスを付けます。例えば、ヘッダー名 sample を指定すると、AWS WAF はヘッダー x-amzn-waf-sample を挿入します。
重要
セキュリティプラクティスとして、ヘッダーがすでに x-amzn-waf- で始まるリクエストをブロックする文字列一致ルールを追加できます。これにより、カスタムリクエストヘッダーを処理するときに AWS WAF によって挿入される x-amzn-waf- プレフィックス文字列を模倣する非 AWS WAF ソースからのリクエストがブロックされます。
次の例は、x-amzn-waf- プレフィックスが AWS WAF によって挿入されなかったトラフィックをブロックするように設定された文字列一致ルールを示しています。
"Rules": [ { "Name": "CustomHeader", "Priority": 0, "Statement": { "ByteMatchStatement": { "SearchString": " x-amzn-waf-", "FieldToMatch": { "Headers": { "MatchPattern": { "All": {} }, "MatchScope": "KEY", "OversizeHandling": "MATCH" } }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "STARTS_WITH" } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "CustomHeader" } } ]
文字列一致ルールの使用については、「文字列一致ルールステートメント」を参照してください。
同じ名前のヘッダー
AWS WAF がリクエストに挿入しようとしているのと同じ名前のヘッダーが既にある場合、AWS WAF はヘッダーを上書きします。したがって、同じ名前の複数のルールでヘッダーを定義すると、リクエストを検査して一致を見つける最後のルールにはヘッダーが追加され、それよりも前のルールには追加されません。
終了しないルールアクションを含むカスタムヘッダーの使用
Allow アクションとは異なり、Count アクションは AWS WAF が保護パック (ウェブ ACL) の残りのルールを使用したウェブリクエストの処理を停止しません。同様に、CAPTCHA および Challenge はリクエストトークンが有効であると判断するとき、これらのアクションは AWS WAF のウェブリクエストの処理を停止しません。したがって、これらのアクションを使用するルールでカスタムヘッダーを挿入する場合、後続のルールもカスタムヘッダーを挿入することがあります。ルールアクションの動作については、「AWS WAF でのルールアクションの使用」を参照してください。
例えば、表示された順序で優先順位付けされた次のルールがあるとします。
-
Count アクションと
RuleAHeaderという名前のカスタマイズされたヘッダーを持つ RuleA。 -
Allow アクションと
RuleBHeaderという名前のカスタマイズされたヘッダーを持つ RuleB。
リクエストが RuleA と RuleB の両方に一致する場合、AWS WAF はヘッダー x-amzn-waf-RuleAHeader と x-amzn-waf-RuleBHeader を挿入してから、保護されたリソースにリクエストを転送します。
AWS WAF は、リクエストの検査を完了すると、そのウェブリクエストにカスタムヘッダーを挿入します。したがって、アクションが Count に設定されているルールでカスタムリクエスト処理を使用する場合、追加するカスタムヘッダーは後続のルールによって検査されません。
カスタムリクエスト処理の例
ルールのアクションまたは保護パック (ウェブ ACL) のデフォルトアクション用に、カスタムリクエスト処理を定義します。次のリストは、保護パック (ウェブ ACL) のデフォルトアクションに追加されたカスタム処理用の JSON を示しています。
{ "Name": "SampleWebACL", "Scope": "REGIONAL", "DefaultAction": { "Allow": { "CustomRequestHandling": { "InsertHeaders": [ { "Name": "fruit", "Value": "watermelon" }, { "Name": "pie", "Value": "apple" } ] } } }, "Description": "Sample protection pack (web ACL) with custom request handling configured for default action.", "Rules": [], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SampleWebACL" } }