タダです.
AWS WAF のログを Datadog に送って運用している中で,特定条件でブロックされたリクエストがあったらアラートを飛ばしたいとなり,Terraform でコード化したのでこの記事でまとめます.
特定条件について
今回の条件として,WAF は特定の IP アドレスのみアクセス許可している状態です.仮にクライアント側の IP アドレスが変わったりしたりしたら検知する必要があり,WAF のルールで指定している IP アドレスがブロックされた時を検知するようなモニターを作ります.
Datadog のモニター設定
上記の条件で設定を定義したのが下記の Terraform のコードです.@webaclId
で AWS WAF の ARN を指定し,@network.client.ip
と var.source_ips
で AWS WAF で許可している IP アドレス群を指定しています.これらがブロックされた場合にアラートを発報するようにしています.
variable "source_ips" { type = list(string) default = ["111.111.111.111", "222.222.222.222", "333.333.333.333"] } resource "datadog_monitor" "hoge" { name = "hoge WAF Blocked" type = "log alert" query = "logs(\"@webaclId:\\\"${data.aws_wafv2_web_acl.hoge.arn}\\\" @network.client.ip:${join("OR", var.source_ips)} @system.action:BLOCK\").index(\"*\").rollup(\"count\").last(\"${var.interval}m\") > 0" monitor_thresholds { critical = 0 } }
まとめ
AWS WAF のログの中から特定 IP アドレスがブロックされたときにアラートを設定する機会があったのでまとめました.