LoginSignup
5
2

More than 3 years have passed since last update.

TerraformでAWS WAFを基礎から学ぶ(メトリクスとサンプリング編)

Last updated at Posted at 2020-12-06

はじめに

基本のルール設定編の続き。
今回は、メトリクスとサンプリングについて確認をしていく。

単純にメトリクスが取れるだけかと思いきや、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 にした場合の全体像の把握のためのグラフ。

キャプチャ8.png

Terraform では、aws_wafv2_web_acl 本体と rule ブロックの設定の cloudwatch_metrics_enabledtrue にする。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 のタブの下部で、以下のような情報を確認できる。

キャプチャ15.png

Terraform で有効化するには、aws_wafv2_web_acl 本体と rule ブロックの設定の sampled_requests_enabledtrue にする。メトリクスは関係ないかと思いきや、上記画面の右上のプルダウンで、メトリクス名で絞ることが可能なので、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 のタブから設定の詳細を確認することが可能だ。

キャプチャ16.png

Web ACLのデフォルトの visibility_config と、ルール単位の visibility_config の設定内容によって以下のように表示される。

  • デフォルト=true, ルール=false
    キャプチャ9_block_true_false.png

  • デフォルト=true, ルール=true
    キャプチャ10_block_true_true.png

  • デフォルト=false, ルール=true
    キャプチャ11_block_false_true.png

分かりにくい……。Terraform の方がよっぽどシンプルだ。
Request sampling for web ACL default action がデフォルトの visibility_config の有効無効、Request sampling options は、デフォルトとルールで違う設定にしたいときにラジオボタンを付けるようだ。

ともあれ、これでメトリクスとサンプリングについても設定方法と使い方は理解できた!

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2