Vnet統合とは
AppService/Functions/LogicApps等のネットワーク設定のVnet統合とは、どういう機能なのか皆さん説明できますでしょうか?「当然、AppService/Functions等をVnet内に配置できるようになる機能でしょう!」と思ってる方いませんか?それは違います。正しくは、「AppService/Functions等がVnet(仮想ネットワーク)にアクセスできるようになる機能」というのが正しいです。どういうことかというと、AppServiceはマルチテナント向けサービスで、仮想ネットワークは非マルチテナント向けサービスです。これらは本来通信し合えないサービス同士なんです。それを、通信できるようになるというのがAppService/Functions等のVnet統合という機能なんです。
公式ドキュメントでは以下のように説明されていますが、私はわかりづらいと思いました。
===== 抜粋 ここから =====
Azure仮想ネットワーク(VNet)では、インターネットでルーティングできないネットワークに、多くの Azure リソースを配置できます。 AppServiceのVNet統合機能を使用すると、アプリは仮想ネットワーク内のリソースにアクセスしたり、仮想ネットワークを通じてリソースにアクセスしたりできます。 仮想ネットワーク統合では、アプリにプライベートでアクセスすることはできません。
===== 抜粋 ここまで =====
サービスエンドポイントとプライベートエンドポイントの違い
[サービスエンドポイント]: グローバルIPを使用して、インターネットを経由して通信されます。※ Resolve-DnsNameコマンドでドメイン解決すると、グローバルIPが返ってくることが確認できます。
[プライベートエンドポイント]: プライベートIPを使用して、インターネットを経由して通信されます。※ Resolve-DnsNameコマンドでドメイン解決すると、プライベートIPが返ってくることが確認できます。
サービスエンドポイントもプライベートエンドポイントも、Azure 環境上に「Azure 仮想ネットワーク」というリソースを一つ作成して、その仮想ネットワーク上にAppService/FunctionsやStorageAccountなどを接続させると、仮想ネットワークに属しているリソース同士の通信のみ許可させる構成を作れる。という意味では、どちらも同じような通信はできます。また、最初にイメージ・理解しておくべきことは、AppService -> StorageAccountの通信をセキュアにしたければStorageAccount側の設定でプライベートエンドポイント等を設定する必要があります。AppService -> SQLDatabaseの通信をセキュアにしたければSQLDatabase側の設定でプライベートエンドポイント等を設定する必要があります。更に、AppServiceのネットワーク設定からVnet統合をする必要があります。
全プロダクトでサービスエンドポイントとプライベートエンドポイントを作れるわけではない
この公式ドキュメントでサポートしているプロダクトの一覧が書かれています。
エンドポイントに関連するアプリケーション設定
- [WEBSITE_DNS_SERVER]: WEBSITE_DNS_SERVER (値 168.63.129.16)
- [WEBSITE_VNET_ROUTE_ALL]: 値:1を設定していない場合、AppServiceから送られる通信はインターネットを介するパブリック通信になります。値:1を設定した場合、全ての通信がVnetに向けて送信されます。
以上です。