AWS WAF ログフィルタリング設定(aws wafv2 list-logging-configurations )をするとき AWS CLI v1 と v2 の出力結果の違いついて

2022.04.14

お困りのお客様からお問い合わせがありトラブルシュートしたときの記録です。

困っていた内容

以下のリンクを参考に AWS WAFのログをCOUNTBLOCKに加え、マネージドルールを設定しているため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