この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。
概要
Azure のストレージアカウントには、エンドポイントが 3 種類あります。サービスの登場順としては、上から順番に古くなるように並べています。
- Public Endpoint
- Service Endpoint
- Private Endpoint
Public Endpoint
Public Endpoint は、Azure の最初期から存在するストレージアカウントのエンドポイントです。以下のドキュメントにあるように、<ストレージアカウント名>.blob.core.windows.net のようなストレージサービスごとのシンプルな FQDN のエンドポイントをインターネットで名前解決した IP アドレスにアクセスする方式です。
<ストレージ アカウントの概要 – ストレージ アカウント エンドポイント>
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-account-overview#storage-account-endpoints
Azure 外の環境から Azure Storage にアクセスする際には、基本的にこちらの方式を利用することになります。
Service Endpoint
元々 Azure Storage へアクセスする方式は、先述の Public Endpoint だけでしたが、Public Endpoint だけだと以下のような課題がありました。
- VNET 上の VM からの通信を制御する方法がない
- Site-to-Site 接続や ExpressRoute を設定している環境では、強制トンネリングに引きずられてストレージに VNET から直接アクセスできない
VNET 上の VM からもインターネットを経由させることで、ストレージアカウントの FW で通信を制御できるようになりますが、ストレージアカウントの Public Endpoint を使いつつ、VNET 上の VM からセキュアに通信を行いたいという要望には、Service Endpoint が最適です。
<仮想ネットワーク サービス エンドポイント>
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview
Service Endpoint が有効になるとストレージアカウント側は、アクセス元となる VNET の情報を取得できるようになり、VNET からは直接ストレージアカウントに接続できるようになります。
Private Endpoint
Service Endpoint によって、VNET 上の VM からストレージアカウントへの通信を識別できるようになったものの、アクセス先はパブリック IP のままな上、特定の VNET からの通信のみを許可するような形となっている状態です。
そこで、いっそのことストレージアカウント自体にプライベート IP アドレスを持たせて、VNET 上の IP アドレスを使って通信を行えるようにしたのが、Private Endpoint です。
Private Endpoint を有効にすると VNET 上に Private Link リソースが作成されます。Private Link は、VNET 上でアドレスを占有し、着信した通信を宛先のストレージアカウントへ中継するような動きをします。そのため、Private Link に割り振られた IP アドレスに向かって通信を行うことで、ストレージアカウントとの間でプライートな通信を行えるようになります。
<Azure Storage のプライベート エンドポイントを使用する>
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-private-endpoints
ただ、ストレージアカウントは、IP アドレス指定でアクセスされることを想定していないため、FQDN でアクセスする必要があります。そのため、Private Link の IP アドレスを名前解決するために、Pricate DNS Zone を VNET にリンクする構成が一般的です。