【目次】
1. はじめに
2023年7月20日にレートベースルールのカスタムキーに URI を指定できるようになりました。
これまでレートベースルールでカスタムキーを利用して集約できた項目は、ヘッダーやCookieなどでしたが、こちらに URI が追加されています。
スコープダウンステートメントを利用することで対象の URI を指定することはできたものの、複数の URI に対して個別のカウントをするためにはルールを複数作成する必要がありました。今回の変更により一つのルールで複数の URI の集計が可能となります。
レートベースルールの使い方
レートベースルールの条件を詳細に指定できるようになりました
2. 設定方法
レートベースの設定の「Custom Key」の項目を選択します。
「Request aggregation key」の項目を確認すると「URI path」が存在しますので、選択するのみで設定ができます。
「Add a request aggregation key」を選択することで、複合条件とすることも可能です。
集約するための条件を付与するイメージとなります。
{ "Name": "rate-based-rule", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rate-based-rule" }, "Statement": { "RateBasedStatement": { "Limit": "100", "AggregateKeyType": "CUSTOM_KEYS", "CustomKeys": [ { "UriPath": { "TextTransformations": [ { "Type": "NONE", "Priority": 0 } ] } }, { "IP": {} } ] } } }
上記 JSON の例は、同じ URI かつ同じ IP アドレスで追跡する例となります。
さらに条件を絞り込むためにスコープダウンステートメントを利用することも可能です。
3. ユースケース
URI で集約することが可能なため、「/contact」以下のページに対してスコープダウンステートメントを利用して一律カウントしていたケースの場合、「Custom Key」での制限に変えることにより、「/contact/XXX」、「/contact/YYY」に対してそれぞれでカウントして制限を加えることができます。
閾値に該当する場合に限りますが、単純に Action を COUNT にして傾向を掴むという目的での利用も考えられるかと思います。
URI のみでの制限という考え方はあまりないかもしれませんが、傾向を掴んだ上で、URI と IP を「Custom Key」として Block するというルールを追加する形でもいいかもしれません。
4. おわりに
今回の変更は、URI ( ページ ) 単位でのレート制限ができるという意味でシンプルなものかと思います。いざ複合したルールを作成するという場合は、指定方法も複数あり、やや面倒と感じることはあるかと思います。WafCharm をご利用の場合はカスタマイズという形でルールを作成しますので、ご利用いただければ幸いです。