🐕
Application GatewayとFront Doorを組み合わせたときにFront Doorへのアクセスを制限したい
はじめに
Application Gateway -> Front Door -> App Serviceという少しトリッキーなネットワーク構成を検証してみました。
この時Front Doorへの直接のリクエストをガードしようと思い、Application Gatewayの書き換えルールとFront Doorのルールエンジンを組み合わせることで対処してみたので残しておきます。
前提
- Application Gatewayにはカスタムのドメインを設定し、仮に
example.com
とする。 - Front Doorのフロントエンドにもカスタムのドメインを設定し、仮に
fd.example.com
とする。 - 今回Front Doorはクラシックモデルを採用しておりますが、最新のStandard, Premiumにも対応できると考えてます。
- Application GatewayのバックエンドプールはFQDNとして
fd.example.com
を登録。正常性プローブもfd.example.com
当てにチェックをするものとします。
設定内容
Application Gatewayの設定
書き換えセットでリクエストヘッダーにカスタムヘッダーを用意します
この時のヘッダー名と値を控えておく。実際の値は予測の難しいランダムな値が良いかと思います。
Front Doorの設定
ルールエンジンに以下の通り設定します。
ヘッダー名とヘッダー値に先ほど控えた値を入力し、演算子を等しくないとすることで、Application Gateway経由以外のアクセスは正規のリクエストとなるようリダイレクトとするようにします。
検証
curlで試してみます。
Application Gatewayへのアクセス
curl -I https://example.com
HTTP/2 200
date: Sun, 19 Nov 2023 21:54:36 GMT
content-type: text/html; charset=utf-8
cache-control: private, no-cache, no-store, max-age=0, must-revalidate
...
vary: Accept-Encoding
x-xss-protection: 1; mode=block
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
strict-transport-security: max-age=31536000; preload
x-azure-ref: 20231119T215435Z-ztfdcw114t29x7m9th0tcwpwng...
x-cache: CONFIG_NOCACHE
Front Doorへのアクセス
Application Gatewayへのカスタムドメインにリダイレクトされること確認。
curl -I https://fd.example.com
HTTP/2 302
date: Sun, 19 Nov 2023 21:55:24 GMT
content-type: text/html
content-length: 0
location: https://example.com/
x-azure-ref: 20231119T215524Z-4k89tm5knh6k3ds4375t1eub1w...
x-cache: CONFIG_NOCACHE
最後に
タイトルに掲げたアクセス制限については達成できました。これにプラス、Front DoorとApp Serviceのアクセス制限設定を付け加えることでよりセキュアなネットワーク環境がで構築できると思います。
ただ、冒頭の構成は運用環境にはコスト的にも構成的にもおすすめはしないので、フロントにはApplication Gateway、もしくはFront Doorのいずれかを選択することが望ましいです。
Discussion