[アップデート] AWS Firewall Manager で AWS WAF のポリシー準拠を適用する時に、既存 Web ACL を活用できるオプションが追加されました
いわさです。
先日のアップデートで AWS Firewall Manager の AWS WAF ポリシーにて、既存 Web ACL を活用出来るオプションが追加されました。
AWS Firewall Manager は誰もが使うサービスというわけでもないので、おそらく上記アナウンスを見ても「よくわからんな」という方がいるのではないかと思います。
本日は AWS Firewall Manager ポリシーの動作を解説しつつ、従来の動作と今回のオプションの挙動の違いを検証してみましたので紹介します。
AWS Firewall Manager ポリシーの Web ACL 管理機能
AWS Firewall Manager はマルチアカウント環境下でファイアウォールポリシーを統制するための機能です。
AWS WAF をイメージする方が多いですが、実は様々なファイアウォールリソースがサポートされておりまして、マネジメントコンソールから確認するだけでも以下などを管理できます。
- AWS WAF
- AWS WAF Classic
- AWS Shield Advanced
- Security group
- AWS Network Firewall
- Amazon Route 53 Resolver DNS Firewall
- Network ACL
- Palo Alto Networks Cloud NGFW (Marketplace)
- Fortigate Cloud Native Firewall as a Service (Marketplace)
ファイアウォールポリシーの統制というのは、例えば AWS WAF の場合だと「この管理化の AWS アカウントの ALB ではこのルールを満たす Web ACL を使っていること」などのポリシーを設定することができます。
そしてポリシーを満たしていないリソースが検出された際に非準拠としてマークしたり、あるいは強制的に Web ACL をアタッチさせることができます。
AWS WAF でのポリシー定義から準拠させる流れについては以下がわかりやすいと思います。
で、上記のように色々なポリシー設定を行うのですが、今回のアップデートでポリシータイプが AWS WAF の場合に以下の設定が追加されました。
従来は Firewall Manager のポリシーに従っていない場合、その非準拠リソースに既存の Web ACL がアタッチされているされていないにかかわらず Firewall Manager が準拠出来るルール構成の Web ACL を新規作成し、ALB などに自動関連付けをしてくれました。
今回のオプションを使うと Web ACL を新規作成せずに既存 Web ACL のルール内容を Firewall Manager が変更してくれるようになります。ただし、非準拠リソースに既存 Web ACL がアタッチされている場合のみに限りこの動作が行われます。
やってみる
Firewall Manager で AWS WAF タイプの次のようなポリシーを作成し、Default(従来の動作)と Retrifit(今回選択出来るようになったオプション)の挙動を比較してみたいと思います。
上記ポリシーを作成し、組織内の任意の AWS アカウントの ALB (Application Load Balancer) をスコープとして設定しています。
Default の動作
まずは次のように Manage web ACL source で Defaultを選択します。
スコープ内の AWS アカウントで適当な ALB を作成し準拠していないルールの Web ACL をアタッチさせておきます。
しばらく待つと、Firewall Manager のポリシー上で該当 AWS アカウントの ALB が非準拠であることと検出されました。
ここで管理者が認識して必要に応じて対処という運用も出来るのですが、今回は Firewall Manager ポリシー上で強制的に非準拠リソースを修正する設定にしているので Firewall Manager 自動で ALB を修正してくれます。
しばらく待つと非準拠リソースから対象の ALB が表示されなくなりました。
ALB にアタッチされている Web ACL を確認してみましょう。
心当たりのない Web ACL に置き換わってますね。
この FMManagedWebACLV2-xxxx-xxxx という Web ACL は Firewall Manager が自動作成した Web ACL です。
Retrofit existing web ACLs の動作
では続いて今回のアップデートで使えるようになった機能を確認してみます。
こちらの Retrofit 動作にはいくつか条件がありまして、既存 Web ACL がアタッチされていないとか、更新対象の Web ACL がスコープ外のリソースに関連づいてないこととか、いくつかあります。詳しくは以下の公式ドキュメントも確認してください。
ちなみに、既存 Web ACL を修正する関係で「Replace existing associated web ACLs ...」のオプションは使えません。あと、ルールとログ以外の他のオプションについても Firewall Manager は変更を行いません。
CLI などで無理やり行おうとすると次のようなエラーが発生する場合があるので、その場合は上記オプションを無効化してみてください。
今回は非準拠の ALB を 2 つ作成しました。
1 つは適当な Web ACL が関連づいており、もう 1 つは Web ACL 関連付けが何もないものです。
作成後しばらく待ってみると非準拠リソースとしてどちらも検出されました。
ただ、Violation reason がちょっと違うんですね。既存 Web ACL が関連付けされつつ非準拠のものは「WEB_ACL_CONFIGURATION_OR_SCOPE_OF_USE」という理由でした。これメッセージとして正しいのかな。
Web ACL が関連付けされていないものは「Reousrce is missing a Firewall Manager managed WebACL」でした。
まず、Web ACL の関連付けがなかった ALB ですが、少し待つと先ほどと同様に Firewall Manager によって自動で Web ACL が作成され、関連付けまでされていました。
で、Web ACL の関連付けがあったほうですが、少し待っても非準拠状態から変わらず、既存 Web ACL にも変化がありませんでした。
数時間待っても期待した挙動にならなかったので、これはアップデートが機能していないのかも?と思って放置していたのですが、今朝確認してみたところ...非準拠検出がされなくなっていました。24 時間後くらいでしょうか。
既存 Web ACL を見てみると...
おぉ、前後に Firewall Manager でポリシーとして指定したルールグループが追加されています。
こうなるのか...!
そして ALB に関連づいている Web ACL は既存のままですね。なるほど。
非準拠の既存 Web ACL がリソースごとに異なっている場合は既存 Web ACL ごとにこの自動適用がされるそうです。
さいごに
本日は AWS Firewall Manager で AWS WAF のポリシー準拠を適用する時に、既存 Web ACL を活用できるオプションが追加されたので試してみました。
アナウンスでは既存 WAF デプロイに影響を与えないように...のような言及がされていましたが、私は Firewall Manager がポリシー適用する際に不要な既存 Web ACL が放置されて料金が発生するのがこれまで気になっていたので、今回のアップデート中々良いなと思いました。