はじめに
AzureのFrontDoorもしくはApplicationGatewayを利用して、複数のアプリを振り分けるケースがあると思います。
その際にアプリごとに接続可能なグローバルIPアドレスを制限するWAFの設定方法を説明していきます。
Azure WAFとは?
Azure WAF(Web Application Firewall)
SQL インジェクションなどの一般的な Web ハッキング手法や、クロスサイト スクリプティングなどのセキュリティ脆弱性から Web アプリを保護するクラウドネイティブ サービスです。
構成例
今回は例としてFrontDoorのリソースからAアプリとBアプリをそれぞれ異なるグローバルIPアドレスで制限する方法を紹介します。
事前準備
WAFのリソース作成
事前にWAFリソースを作成しておく必要があります。
■Application GatewayでWAFを作成する場合
■Front DoorでWAFを作成する場合
ドメイン名の確認
FrontDoorからAアプリとBアプリのそれぞれのWebアプリを呼んでいるドメイン名を確認しておきます。
設定方法の流れ
カスタムルールの作成
左メニューの「カスタムルール」を選択し、「カスタムルールの追加」ボタンをクリックします。
カスタムルールの設定(Aアプリ側)
カスタムルールを以下の通り設定します。
1つ目の条件
- 一致の種類:IPアドレス
- 一致変数:SocketAddr
- 演算:次の値を含まない
- IPアドレスまたは範囲:Webアプリ「Aアプリ」に接続させたいグローバルIPアドレス
2つ目の条件
- 一致の種類:文字列
- 一致変数:RequestUri
- 演算:次の値に一致する
- 演算子:次の値を含む
- 一致する値:Webアプリ「Aアプリ」に紐づくFrontDoorのドメイン名
カスタムルールの設定(Bアプリ側)
カスタムルールを以下の通り設定します。
1つ目の条件
- 一致の種類:IPアドレス
- 一致変数:SocketAddr
- 演算:次の値を含まない
- IPアドレスまたは範囲:Webアプリ「Bアプリ」に接続させたいグローバルIPアドレス
2つ目の条件
- 一致の種類:文字列
- 一致変数:RequestUri
- 演算:次の値に一致する
- 演算子:次の値を含む
- 一致する値:Webアプリ「Bアプリ」に紐づくFrontDoorのドメイン名
おわりに
WAFを初めて作成した際は「検知モード」になっていて先程設定したカスタムルールでブロックされない状態になっているので、「防止モード」に変更することは忘れないようにしましょう。
構成例を元に設定方法をご紹介しましたが、この情報がどなたかの参考になれば嬉しいです。
なにかあれば随時、情報を追記したり修正したりしようと思います。