AWS WAF ログフィルタリング設定(aws wafv2 list-logging-configurations )をするとき AWS CLI v1 と v2 の出力結果の違いついて
お困りのお客様からお問い合わせがありトラブルシュートしたときの記録です。
困っていた内容
以下のリンクを参考に AWS WAFのログをCOUNT
とBLOCK
に加え、マネージドルールを設定しているためEXCLUDED_AS_COUNT
も保存する設定がしたいです。
試してみたのですがaws wafv2 get-logging-configuration
コマンドの実行結果が期待した値でありません。マネジメントコンソールから設定したログのフィルタリング設定値も確認できません。どうしてですか?
原因・対応
原因
AWS CLI のバージョンが v1(1.18.147) ですと、冒頭のブログで紹介されいる内容の期待している結果が返ってきません。
aws --versoin
対応
AWS CLI v2 で実行結果をご確認ください。
AWS CLI の最新バージョンをインストールまたは更新します。 - AWS Command Line Interface
事情がある場合は以下のリンクもご参照ください。
AWS CLI の実行環境として CloudShell を利用するのもよろしいかと思います。
検証してみた
AWS WAF のログフィルタリング設定はマネジメントコンソールで確認すると以下の状態です。設定値の確認コマンドを実行して結果をみていきます。
AWS CLI v2 の実行結果
aws wafv2 get-logging-configuration
コマンドを AWS CLI v2 で実行します。
$ aws --version aws-cli/2.5.2 Python/3.9.12 Darwin/20.6.0 source/x86_64 prompt/off $ aws wafv2 get-logging-configuration --resource-arn arn:aws:wafv2:us-east-1:123456789012:global/webacl/test-waf/9d1d8157-8d96-43e5-85b1-fbcb6d3ed479 --region=us-east-1
LoggingFilter
の項目で現在の設定値を確認できました。
{ "LoggingConfiguration": { "ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:global/webacl/test-waf/9d1d8157-8d96-43e5-85b1-fbcb6d3ed479", "LogDestinationConfigs": [ "arn:aws:s3:::aws-waf-logs-sample-ohmura" ], "ManagedByFirewallManager": false, "LoggingFilter": { "Filters": [ { "Behavior": "KEEP", "Requirement": "MEETS_ANY", "Conditions": [ { "ActionCondition": { "Action": "BLOCK" } }, { "ActionCondition": { "Action": "COUNT" } }, { "ActionCondition": { "Action": "EXCLUDED_AS_COUNT" } } ] } ], "DefaultBehavior": "DROP" } } }
AWS CLI v1 の実行結果
同じコマンドをを AWS CLI v1 で実行します。
$ aws --version aws-cli/1.18.147 Python/2.7.18 Linux/5.10.104-linuxkit botocore/1.18.6 $ aws wafv2 get-logging-configuration --resource-arn arn:aws:wafv2:us-east-1:123456789012:global/webacl/test-waf/9d1d8157-8d96-43e5-85b1-fbcb6d3ed479 --region=us-east-1
LoggingFilter
の項目が表示されません。ログフィルタリングの設定値を確認できませんでした。
{ "LoggingConfiguration": { "ResourceArn": "arn:aws:wafv2:us-east-1:123456789012:global/webacl/test-waf/9d1d8157-8d96-43e5-85b1-fbcb6d3ed479", "ManagedByFirewallManager": false, "LogDestinationConfigs": [ "arn:aws:s3:::aws-waf-logs-sample-ohmura" ] } }
AWS CLI のバージョンあれこれ
身近な AWS CLI のデフォルトバージョンを確認してみました。
Amazon Linux2
現時点(2022/4/14)で最新の Amazon Linux 2 を起動して AWS CLI のバージョンを確認します。
AMI: amzn2-ami-kernel-5.10-hvm-2.0.20220406.1-x86_64-gp2
AWS CLI v1 がインストールされています。EC2 インスタンスから今回の作業を実行すると期待した結果が返ってきませんね。
[ec2-user@ip-10-0-1-140 ~]$ aws --version aws-cli/1.18.147 Python/2.7.18 Linux/5.10.106-102.504.amzn2.x86_64 botocore/1.18.6
今回 AWS CLI v1 の検証に利用したバージョンと同じです。
CloudShell
現時点(2022/4/14)で CloudShell を起動して AWS CLI のバージョンを確認します。
AWS CLI v2 がインストールされています。今回の AWS WAF の設定作業には安心して利用できますね。
[cloudshell-user@ip-10-0-187-1 ~]$ aws --version aws-cli/2.5.4 Python/3.9.11 Linux/4.14.268-205.500.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off
おわりに
COUNT
以外にEXCLUDED_AS_COUNT
もあったのか!?という見落としやすいポイントを説明してくれたブログのフォロー記事でした。「設定したいけどできない...」という方が運良くここへたどり着くことを願っております。
ドキュメントを確認する限りでは AWS CLI v1 でもログフィルタリングの設定は出力されそうです。マイナーバージョンが今回確認した EC2 のデフォルトインストールバージョンの AWS CLI v1 よりドキュメントの方が新しいため、そこの違いはあるかもしれません。
list-logging-configurations — AWS CLI 1.22.95 Command Reference