AzurePaaS研究サイト

AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

Vnet統合・サービスエンドポイント・プライベートエンドポイントを理解する

Vnet統合とは

Vnet統合とは、どういう機能なのか皆さん説明できますでしょうか。
 
AppServiceとFunctionsがもっている機能ですが、「AppService/FunctionsがVnet内に配置される機能だ!」と思ってる方いませんか?
 
それは違います。
 
正しくは、「AppServiceがVnet・仮想ネットワークにアクセスできるようになる機能」というのが正しいです。
 
どういうことかというと・・・
AppServiceは、マルチテナント向けサービスです。
仮想ネットワークは、非マルチテナント向けサービスです。
 
これらは本来通信し合えないサービス同士なんです。
それを、通信できるようになるというのがAppService/FunctionsのVnet統合という機能なんです。
 
 
上記内容は、公式ドキュメントでは以下のように説明されています。
ふわっとした書き方になっていてちょっとわかりづらいですよね。

docs.microsoft.com

===== 抜粋 ここから =====
Azure 仮想ネットワーク (VNets) では、インターネットでルーティングできないネットワークに、多くの Azure リソースを配置できます。 App Service の VNet 統合機能を使用すると、アプリは仮想ネットワーク内のリソースにアクセスしたり、仮想ネットワークを通じてリソースにアクセスしたりできます。 仮想ネットワーク統合では、アプリにプライベートでアクセスすることはできません。
===== 抜粋 ここまで =====

サービスエンドポイントとプライベートエンドポイントの違い

サービスエンドポイントもプライベートエンドポイントも、Azure 環境上に「Azure 仮想ネットワーク」というリソースを一つ作成して、その仮想ネットワーク上に AppService/Functions や StorageAccount などを接続させると、仮想ネットワークに属しているリソース同士の通信のみ許可させる構成を作れる。
という意味では、どちらも同じことができるものです。
 
また、最初にイメージ・理解しておくべきことは、
 
AzureAppService -> AzureStorageAccount の通信をセキュアにしたければ AzureStorageAccount 側の設定でプライベートエンドポイント等を設定する必要があります。
AzureAppService -> AzureSQLDatabase の通信をセキュアにしたければ AzureSQLDatabase 側の設定でプライベートエンドポイント等を設定する必要があります。
上記の場合は、AzureAppService 側は何もしなくていいのかというとそうではなく、ネットワーク設定から Vnet 統合をする必要があります。

全プロダクトでサービスエンドポイントとプライベートエンドポイントを作れるわけではない

この公式ドキュメントでサポートしているプロダクトの一覧が書かれています。

docs.microsoft.com

サービスエンドポイント経由の通信

送信元リソース > 外部インターネット > 送信先リソース

という感じで、通信が外部インターネットを経由して送信されます。

プライベートエンドポイント経由の通信

送信元リソース > Azure内部通信 > 送信先リソース

という感じで、通信が外部インターネットを経由せずに直接Azure内部通信が行われます。

関連するアプリケーション設定

WEBSITE_DNS_SERVER

WEBSITE_DNS_SERVER (値 168.63.129.16)

WEBSITE_VNET_ROUTE_ALL

名前:WEBSITE_VNET_ROUTE_ALL
値:1
 
設定していない場合、AppService から送られる通信はインターネットを介するパブリック通信になります。
設定した場合、全ての通信がパブリックではなくVnetに向けて送信されます。
 
 
以上です。
 

ご意見・ご要望はこちらへ