概要
Application GatewayのWAFを運用する際、本番環境はポリシーA、検証環境はポリシーBにしたいという要望が多々あるかと思います。
最初からそのような設計になっていたら特に問題なさそうですが、導入時は本番・検証あわせてグローバルな1つのポリシーしかなかったのに途中から方針が変わってしまった際の対応方法メモです。
前提
Application GatewayのWAFはグローバルなポリシー設定の他に、Application GatewayのリスナーごとやルートパスごとにWAFポリシーを適用することが可能です。
今回使用するApplication GatewayのSKUはWaf_v2を想定しています。
Application Gatewayにて、本番環境用と検証環境用のリスナーが設定されていることを想定しています。
シナリオ
株式会社Aでは、Application Gatewayをデプロイし、その際にApplication Gateway WAFポリシーとして「WAF-Policy-01」を作成して関連付けました。
ある日、本番環境と検証環境で別々のポリシーを設定したいという要望が社内であがりました。
リスナーごとにWAFポリシーを設定すれば実現可能であるということが判明したので、さっそく設定をしようとしたのだが・・・?
既存のWAFポリシー関連付け解除ができない
現在設定されているWAFポリシーの関連付けを解除しないと、いつまでもグローバルなポリシーがあたってしまいます。
しかし、WAFポリシーの設定画面からも、リソースグループ画面からも削除ができません。
一体なぜかと言うと、Azureの仕様として関連付け解除がサポートされていないためです。(2022年5月時点)
ワークアラウンド
上記問題を回避するためには、以下いづれかの対応を実施する必要があります。
- 既存のWAFポリシーを無効化して、リスナーごとに使用するWAFをデプロイ&関連付け
- Application Gatewayを再度作成
2の方はすでに運用されている環境だとなかなか難しい対応となるため、現実的には1を実施することになると思います。
仕様らしいので、ここはしょうがないですね。。。
ざっくり手順
これまでの情報を踏まえて、本番環境・検証環境ごと(リスナーごと)にWAFポリシーを設定するための手順は以下になります。
- 本番環境用のWAFポリシーA、検証環境用のWAFポリシーBをデプロイ
- ポリシーAの「関連付けられたアプリケーションゲートウェイ」タブにて、「関連付けの追加」からHTTPリスナーを選択し、本番環境のリスナーを選択
- ポリシーBでも上記と同様に検証環境用の設定を実施
- 既存のWAFポリシーを無効化
- 環境ごとにお好みのポリシー設定投入
以上です。