このエントリは2020/06/10現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります(2021/09/01アップデート)。
VNet Integration (VNet統合) とは
App Service、FunctionsからVNet上のリソースにアクセスできるようにするしくみ。実装方式は以下の2種類。
Regional VNet統合 (Gatewayを使わない)
- 同一リージョンのResource Manager VNetに接続する場合に、統合対象のVNetの専用サブネットを作成して接続
WindowsでGA、LinuxはPreviewWindows、LinuxともGA(2020/06/10)Linuxの場合はRFC 1918のアドレスへの呼び出しのみサポート
(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
Gatewayが必要なVNet統合
- VPN Gatewayなどを使って統合するしくみ
- ターゲットVNetのリソース、もしくはピアリングまたはVPNを使用してターゲットVNetに接続されたネットワーク内のリソースへのアクセスのみを提供
- ExpressRoute接続を使って利用可能なリソースへのアクセスはできないが、サービスエンドポイントは利用可能
- Linux Appに対しては利用不可
以後ではRegional VNet統合についてまとめる。VNet統合については以下のドキュメントに記載がある。2020/06/10現在、英語版ドキュメントにのみApp Service LinuxでのRegional VNet統合のサポートについて言及がある(日本語版は古い)。近日中に日本語版も更新されるはず(知らんけど)。
Integrate your app with an Azure Virtual Network
https://docs.microsoft.com/azure/app-service/web-sites-integrate-with-vnet
Regional VNet Integration
できること
- 統合する同一リージョンのVNetのリソースへのアクセス
- 同一リージョンのVNetにピアリングされたVNetのリソースへのアクセス
- サービス エンドポイントでセキュリティ保護されたサービスへの呼び出し
- ExpressRoute 接続にまたがるリソースへのアクセス
- 接続されている VNet 内のリソースへのアクセス
- ExpressRoute 接続を含むピアリングされた接続にまたがるリソースへのアクセス
- プライベートエンドポイントのアクセス
これにともない、NSGとRoute Table (UDR) を使ってトラフィックを制御できるようになった。
デフォルトでは、アプリはRFC1918トラフィックのみをVNetにルーティングするが、すべての送信トラフィックをVNetにルーティングするには、Azure Portalからは[route all]をクリック、CLIでは --vnet-route-all-enabled
で指定する(CLIは2.27.0以後である必要がある)(2021/09/01更新)以下の構成を実施する必要がある(Windowsのみ)が、全然直感的ではない・・・。
アプリ設定WEBSITE_VNET_ROUTE_ALLをアプリに適用アプリポータルの構成UIで、新しいアプリケーション設定を選択名前:WEBSITE_VNET_ROUTE_ALL値:1
制限事項
- グローバル ピアリング接続にまたがるリソースには到達不可
- この機能は、PremiumV2 App Serviceプランをサポートする新しいApp Serviceスケールユニットでのみ使用可
- 統合サブネットは、1つのApp Serviceプランでのみ使用可
- ASE にある Isolated プランのアプリでは使用不可
- Resource Manager VNet 内に 32 個以上のアドレスを含む /27 である未使用のサブネットが必要
- アプリとVNetは同一リージョンにあること
- アプリと統合されたVNetは、VNetを削除する前に統合を削除する必要がある
- Webアプリと同じサブスクリプションでのみVNetと統合可
- App Serviceプランごとに構成可能なRegional VNet統合は1個のみ。また、同じApp Serviceプラン内の複数のアプリが同じVNetを使用可。
- Regional VNet統合を使用しているアプリがある間は、アプリまたはApp Serviceプランのサブスクリプションを変更不可