※2021/9/22追記
現在ではPrivateLinkがあるのでこんなことをしなくてもP1以上のスケールであれば簡単に設定可能です。
#こんな構成にならできそうな気がする
#実際に構築して試してみた
事前に用意されていたもの
オンプレミスネットワークとS2Sで接続しているAzureVnet
P2Sでも同様に接続できるかは未確認
構築するもの
- AppService
- 接続先を上記Vnet内に新規作成したサブネットからのみ接続許可しておく
- Vnet上に新しくSubnet作成(アドレスをx.x.x.x/29)にする
- ApplicationGateWay
- WAFを使用(WAFV2を使用したいところだが外部の入り口を開けない)
- 検証用のため80通信のみ
まずはVnet内からしか接続できないように設定
AppService作成
特に気にせず構築したので割愛
AppService設定
これだけです。
社内からアクセスすると
Vnetからの接続だと
指定したサブネット内からの接続のみ許可するという設定を行います。AppService単体ではパブリック接続しかできないのでAzureVnetとS2SでつながっているローカルPCであっても外から接続なのでVnet外からのアクセスになっているので接続できません。
そこで
- ApplicationGatewayをVnet上にたててApplicationGatewayにプライベートIPでアクセスできるようにします。
- ApplicationGatewayのバックエンドをAppServiceに設定しAppserviceからはApplicationGatewayの所属するSubnetkらの接続のみ許可する設定にします
構築してみる
Vnetにサブネット追加
AppServiceの設定を変更しておきます
VMからも接続できない状態になりました
ApplicationGatewayを構築します
これで作成完了です。
リソースが作成されるのを待ちます
しかし
実は上記設定ではうまくいかなくて、作成完了後にこのように設定を変更してあげる必要があります。
ここまで設定したら完成です。
では接続してみます。
プライベートIPで接続できるようになりました
これだけでは味気ないのでアプリをデプロイして確認してみます。
プライベート接続できている風の環境が出来上がりました。
最初に検証した同じVnetの別サブネットにおいてあるVMからも
VMでも同様にプライベートIPからのアクセスからできなくなりました。
めでたしめでたし