はじめに
基本のルール設定編の続き。
今回は、メトリクスとサンプリングについて確認をしていく。
単純にメトリクスが取れるだけかと思いきや、Web ACL のマネージメントコンソールトップに表示されるメトリクスは一癖ある感じなので特性を理解しよう。
メトリクスは何が一癖あるのか
Web ACL のマネージメントコンソールトップに表示されるメトリクスを複雑にしているのは以下の3点。
- Web ACL のアクションが Allow か Block かによって計上・表示されるメトリクスが違うという点
- Web ACL 全体のメトリクスと個別ルールのメトリクスがあるという点
- 上記とは別に ALL AllowedRequests/ALL BlockedRequests というメトリクスがあるという点
上記をもう少し詳細に調べてみると、以下の仕様であった。
- Web ACL のデフォルトアクションが Allow の場合は、ルールの AllowedRequests と、ALL BlockedRequests が表示される
- Web ACL のデフォルトアクションが Block の場合は、ルールの BlockedRequests と、ALL AllowedRequests が表示される
- ALL AllowedRequests / ALL BlockedRequests は実際に許容/ブロックした件数ではなくて、あくまでも全体または個別のメトリクスの合計
このため、全体または個別のメトリクスをすべて Enable(TerraformではTrue) にしていないと、正確な件数を把握することはできない。
また、Web ACL のマネージメントコンソールでは全体像が見づらいので、コストをケチる目的がない限りは、すべてのメトリクスを Enable にして、CloudWatch メトリクスのコンソールで、すべてのメトリクスを表示するグラフを作った方が良いのではないかと感じた。
↓こんな感じ。これはデフォルトアクションが Allow、個別のアクションが Block でそれぞれメトリクスを Enable にした場合の全体像の把握のためのグラフ。
Terraform では、aws_wafv2_web_acl
本体と rule
ブロックの設定の cloudwatch_metrics_enabled
を true
にする。metric_name
はテキトーに分かりやすい名前をつけておこう。
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = local.webacl_metric_name
sampled_requests_enabled = false
}
サンプリング
サンプリングは、有効化した visibility_config
について、ALLOW ないし BLOCK の結果を記録してくれる。主にフィルタ内容のテスト目的ということだろうか?
マネージメントコンソールの Web ACL の OverView のタブの下部で、以下のような情報を確認できる。
Terraform で有効化するには、aws_wafv2_web_acl
本体と rule
ブロックの設定の sampled_requests_enabled
を true
にする。メトリクスは関係ないかと思いきや、上記画面の右上のプルダウンで、メトリクス名で絞ることが可能なので、CloudWatch と同様に、 metric_name
は分かりやすい名前にしておこう(CloudWatch メトリクスの名前と共用される)。
visibility_config {
cloudwatch_metrics_enabled = false
metric_name = local.webacl_metric_name
sampled_requests_enabled = true
}
HTTPリクエストに対してルールに引っかかって Allow したか Block したかのどちらかのみ出力される。
どのルールで引っかかったか(もしくは引っかからずデフォルトアクションとなったか)を確認する感じだろう。
なお、マネージメントコンソールの Web ALC の Logging and Metrics のタブから設定の詳細を確認することが可能だ。
Web ACLのデフォルトの visibility_config
と、ルール単位の visibility_config
の設定内容によって以下のように表示される。
分かりにくい……。Terraform の方がよっぽどシンプルだ。
Request sampling for web ACL default action がデフォルトの visibility_config
の有効無効、Request sampling options は、デフォルトとルールで違う設定にしたいときにラジオボタンを付けるようだ。
ともあれ、これでメトリクスとサンプリングについても設定方法と使い方は理解できた!