#概要
Azure Private Link は、VNET 内から VNET の外側にある Azure PaaS サービスにセキュアに接続(リンク)するためのサービスで、本記事は Microsoft 公式ドキュメントの補足となります。
#特徴
従来からある VNET のサービス エンドポイントと比較して Azure Private Link には、以下の利点があります。
###1.VNET から特定リソースだけにアクセス許可、データ流出の脅威を防ぐ
従来型のサービス エンドポイントでは、NSG タグによる許可制限のため許可した SQL Database と同一リージョンにある全ての SQL Database へネットワーク的な到達が可能でした。Private Endpoint ではリンクされた特定のリソースのみにアクセスすることが可能となります。
###2.オンプレミスや VNET ピアリングされたリモートからアクセスが可能
上図で Private Endpoint は VNET 内に配置され内部 IP アドレス(例:10.1.1.5)を持ちます。オンプレミスやリモートのピアリングされた VNET からでも、この内部 IP アドレスにアクセス出来れば Private Endpoint の先にリンクされた Azure サービスへセキュアに接続出来ます。即ち VNET 内に配置された VM にアクセスするのと同じ感覚で Azure PaaS サービスにアクセス可能となります。
#用語と概念
###1. Private Link サービス
Private Link 対応サービスは、現時点(2019年10月)で SQL Database, Storage, Standard Loadbalancer の 3 種類があります。
このうち SQL Database や Storage の既存 PaaS サービスは Private Link 機能が最初からサービスに組み込まれているため Private Link サービスはデプロイされません。ユーザー独自のサービスを Standard Loadbalancer を利用して Azure Private Link サービスとして公開する時に Private Link サービスのデプロイが必要となります。
Azure PowerShell を使用してプライベート リンク サービスを作成する
https://docs.microsoft.com/ja-jp/azure/private-link/create-private-link-service-powershell
###2. プライベートエンドポイント
プライベートエンドポイント (Private Endpoint) は、上述の Private Link サービスにプライベートかつ安全に接続する VNET 内のエンドポイントです。自分の VNET 内のプライベート IP アドレスを使用して、サービスを実質的に VNET に取り込みます。
Azure portal を使用してプライベート エンドポイントを作成する
https://docs.microsoft.com/ja-jp/azure/private-link/create-private-endpoint-portal
上記のチュートリアルで作成したリソース群が下図となります。ここには Private Link の接続先である Azure SQL Database や、接続元 VNET 内の VM など全てのリソースが 同一リソースグループ内に配置されています。その中で下図赤枠が、プライベートエンドポイントとそれにアタッチされたネットワーク インターフェイスを示しています。
###3. プライベート DNS
Azure プライベート DNS は、VNET 内にカスタムの DNS サーバーを構築せずに PaaS サービスとしてカスタムドメイン名を管理および解決します。プライベートエンドポイントの内部名前解決のために利用する事が出来ます。
プライベート DNS ゾーンは、プライベートエンドポイントの作成時に「プライベート DNS 統合」を有効にすると自動的に構成されます。
プライベートエンドポイントに対する DNS 構成
https://docs.microsoft.com/ja-jp/azure/private-link/private-endpoint-overview#dns-configuration
FQDN を使用して Private Link サービスに接続する場合、プライベートエンドポイントに割り当てられた IP アドレスが名前決されるよう DNS を構成する必要があります。既存の Azure PaaS サービスはパブリック エンドポイントに使用する DNS 構成が既に存在しているため、プライベート エンドポイントを使用して接続するには、これをオーバーライドする必要があります。
- ホスト ファイルを使用する (テストの時など) VM 上のホスト ファイルを使用して、DNS をオーバーライドする
- プライベート DNS を使用する プライベート DNS ゾーンを自分の VNET にリンクして、VNET 内で特定のプライベート リンク リソースの DNS を解決する
- カスタム DNS サーバーを構成する 独自の DNS サーバーを使用して、特定のプライベート リンク リソースの DNS 解決する
#Roadmap
現在(2019年10月)プレビュー期間中のため利用可能サービスやリージョンが限定されていますが、正式リリースに向けて将来的には、以下の Azure PaaS サービスへの対応が予定されています。また日本国内リージョンへの展開も予定されています。
- Cosmos DB
- Azure Kubernetes Service
- Azure Key Vault
- Azure Database for PostgreSQL
- Azure Database for MySQL
- Azure Database for Maria DB