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