AWS WAF (Web Application Firewall) を運用していると Managed Rule Group の更新を把握したいという場面がある💡Managed Rule Group ごとに存在する Amazon SNS トピックをサブスクライブしておくと AWS WAF Managed Rule Group の更新通知を受け取れて便利 \( 'ω')/
Amazon SNS トピック ARN
Amazon SNS トピック ARN はコンソールで確認することもできるし,AWS CLI の aws wafv2 describe-all-managed-products コマンドを実行して確認することもできる❗️以下に jq
と組み合わせて確認するコマンド例を載せておく.
$ aws wafv2 describe-all-managed-products --scope REGIONAL | jq '.ManagedProducts[] | { VendorName, ManagedRuleSetName, SnsTopicArn }'
aws wafv2 describe-all-managed-products
コマンドを実行した結果を一部抜粋する.例えば AWSManagedRulesCommonRuleSet
の更新通知を受け取るなら arn:aws:sns:us-east-1:248400274283:aws-managed-waf-rule-notifications
をサブスクライブすれば OK👌 多くの AWSManagedRules 関連は同じ Amazon SNS トピック ARN になっていた.
{ "VendorName": "AWS", "ManagedRuleSetName": "AWSManagedRulesCommonRuleSet", "SnsTopicArn": "arn:aws:sns:us-east-1:248400274283:aws-managed-waf-rule-notifications" }
また CyberSecurityCloud-HighSecurityOWASPSet-
のように AWS Marketplace Managed Rule Group の更新通知も受け取れる👌
{ "VendorName": "Cyber Security Cloud Inc.", "ManagedRuleSetName": "CyberSecurityCloud-HighSecurityOWASPSet-", "SnsTopicArn": "arn:aws:sns:us-east-1:343255486711:CyberSecurityCloud-ManagedRule" }
しかし Managed Rule Group によっては SnsTopicArn
の値が n/a
になっていることもあるので注意💨
{ "VendorName": "AWS", "ManagedRuleSetName": "AWSManagedRulesBotControlRuleSet", "SnsTopicArn": "n/a" }
Amazon SNS トピック ARN をサブスクライブする
Amazon SNS トピック ARN をサブスクライブするときの注意点は us-east-1 リージョンの Amazon SNS でサブスクライブするところ.コンソールでポチポチと設定してもいいし,Terraform で設定するなら aws_sns_topic_subscription リソースを使えば OK👌 もちろんプロトコルは「E メール」ではなく「AWS Lambda」や「HTTPS」を選んでも良し❗️
provider "aws" { region = "us-east-1" alias = "us-east-1" } resource "aws_sns_topic_subscription" "waf_rule_notifications" { provider = aws.us-east-1 topic_arn = "arn:aws:sns:us-east-1:248400274283:aws-managed-waf-rule-notifications" protocol = "email" endpoint = "email@example.com" }
直近だと2023年12月4日に Scheduled update to the default version for AWSManagedRulesCommonRuleSet
という通知が届いていた📧 詳細な変更履歴は以下のドキュメントを確認すれば OK👌