🌐

Application Gateway のバックエンドの Web Apps を Private Endpoint で保護する

2024/01/13に公開

はじめに

Azure Application Gateway (AppGw) の L7 のロードバランサーであり、バックエンドに Azure App Service の Web Apps を配置することが可能です。Web Apps は PaaS サービスなので、ネットワークを気にせず利用する場合、AppGw -> Web Apps の通信はインターネット側を通る構成となります。
閉域化の要件がある場合は、こちらのドキュメント[1] に記載のように、AppGw -> Web Apps の通信も Private Endpoint 経由とするのが良いでしょう。本記事ではその構成を試してみます。

試してみる

Web Apps のデプロイ

Web Apps をデプロイします。デプロイ後、展開されるURLにアクセスして、起動していることを確認します。この時点ではパブリックアクセス可能な状態です。

Application Gateway のバックエンドプールに Web Apps を配置して構成

パブリックな Application Gatway をデプロイします。作成時もしくは作成後にバックエンドプールの設定を開き、App Service としてターゲットを追加します。

以下のようなカスタムプローブを用意します。

バックエンド設定で以下のように構成します。

検証用なので、Web Apps の HTTP 強制をオフにします。

Application Gateway のパブリック IP 経由で Web Apps にアクセスできることを確認します。

Private Endpoint の設定

Web Apps に対して Private Endpoint の設定を入れていきます。これにより、Private Endpoint に到達性のある範囲(ここでは VNET 内)からしか呼び出せなくなります。設定自体は Web Apps の[ネットワーク]から行っていきます。

パブリックアクセスも拒否します。

ネットワークの設定としては公衆ネットワークアクセスが無効、Private Endpoint が 1 つ構成された状態になります。

この状態で、Application Gateway のパブリック IP を叩くと、まだ Private Endpoint のための DNS 設定が反映されていないためパブリック回しで Web Apps にアクセスしようとして 403 Error となります。Application Gateway が DNS参照 の結果をキャッシュしているため、再起動によるリフレッシュが必要です。

以下のコマンドで起動・停止が実行可能です。

az network application-gateway stop --resource-group myRG --name myAppGw
az network application-gateway start --resource-group myRG --name myAppGw

その後再度 Application Gateway 経由でアクセスすると、問題なく初期画面が表示されました。

まとめ

  • Application Gateway のバックエンドに Web Apps を置く構成について、Private Endpoint 経由にする構成を試しました。
  • 多少のハマりポイントは DNS のキャッシュ更新くらいですが、Application Gateway の構成自体ややこしいので、どなたかの役に立てば幸いです。
脚注
  1. https://learn.microsoft.com/ja-jp/azure/app-service/overview-app-gateway-integration#considerations-for-using-private-endpoints ↩︎

GitHubで編集を提案
Microsoft (有志)

Discussion