#はじめに
2019年4月末にAzure App ServiceのVNET Service EndpointがPublic Previewになりましたね。
Azure App Service の VNET Service Endpoint がプレビューに
我らがしばやんがいち早く試してくれたので、私も真似しましたw
Azure Application GatewayはWAFを有効にできるため、Application GatewayとWeb Appsを組み合わせてWAF経由でのみWebサイトにアクセスする構成を作って試しました。
#導入までの流れ
##Web Apps側の準備
今回は試用ですが、それなりにコンテンツ入りのものが有ったほうが良いので、Azure Web Apps上にWordpressを導入しています。
まずはWeb Apps単独でWordpressがカスタムドメインでアクセス可能なように設定します。
私はnya-n.netのドメインを保持しており、Azure DNSで管理しているのですが、まずはWeb Appsのカスタムドメインとしてappgw.nya-n.netを追加します。
Azure DNSにてwwwのCNAMEとしてktkrappgw.azurewebsites.netをマップしてまずは承認させます。
WordpressをWeb Appsに導入する方法としては、以下の私の別コンテンツも参照下さい。
App ServiceとAzure Database for MySQLで簡単Wordpressサイト構築
とりあえずWeb Appsへ直にhttpsでWordpressサイトにアクセスさせます。
無論証明書エラーが出ている状態。
##Application Gatewayの作成
今回はApplication Gateway WAF V2で作成します。
ポータル画面ではまだプレビュー表示ですが、しっかり2019/4末にGAしているのでご安心を。
Azure Application Gateway Standard v2 and WAF v2 SKUs generally available
今回はApplication Gatewayもカスタムドメインによるhttps接続を行わせるので、SSL証明書もデプロイ時に設定します。
無事できました。
Application Gatewayに割り振られたPublic IP AddressをDNSのAレコードとして登録します。(先に作成したCNAMEレコードは削除する)
#Application Gatewayの設定
バックエンドプールにWordpressを入れたWeb Appsを指定します。
HTTP設定で、バックエンドのWeb Appsの設定をします。
デフォルトの設定のままだと、Web AppsからオリジナルのURL(example.azurewebsites.net)が返ってしまうため、少し設定をします。
詳しくはこちら。
Application Gateway と App Service のトラブルシューティング
「バックエンドアドレスからホスト名を選択します」のチェックを外して、「ホスト名の上書き」にカスタムドメイン名を設定します。
これで、Application Gateway(WAF)経由でWeb Appsにアクセスできるようになりました。
ちゃんとSSL証明書も有効になっていますね。
#Web AppsのVNET Service Endpointを有効にする
最後にWeb AppsのVNET Service Endpointを有効にして、Web AppsにApplication Gateway以外から接続させないようにします。
Web Appsのネットワークメニューから「アクセス制限」を選択して、Application Gatewayのあるサブネットを追加します。
以下の感じに設定されました。
VNET側のサブネットの情報でも、今までミステリアスだった「Microsoft.Web」が追加されています。
この状態でWeb Appsの元のURLでアクセスすると、以下の403エラーが出てコンテンツが表示出来ないことが確認できます。
ちゃんとカスタムドメインでアクセスすると、Application Gatewayを経由してサイトが表示されましたね。
#おわりに
特にApplication GatewayのWAF機能について細かい設定は紹介しませんでしたが、Web Appsのサービスエンドポイント機能がPublic Previewですが出てきたお蔭で、より安全に特定のVNET(Subnet)からのみアクセスできるようになりました。