Azure Private Link について

#概要
　[Azure Private Link](https://azure.microsoft.com/ja-jp/services/private-link/) は、VNET 内から VNET の外側にある Azure PaaS サービスにセキュアに接続（リンク）するためのサービスで、本記事は [Microsoft 公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/private-link/)の補足となります。

#特徴
　従来からある VNET の[サービス エンドポイント](https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview)と比較して Azure Private Link には、以下の利点があります。

###１．VNET から特定リソースだけにアクセス許可、データ流出の脅威を防ぐ
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/3c81c480-4da9-f8c9-ff56-2c2e2a01e296.png)
　従来型のサービス エンドポイントでは、NSG タグによる許可制限のため許可した SQL Database と同一リージョンにある全ての SQL Database へネットワーク的な到達が可能でした。Private Endpoint ではリンクされた特定のリソースのみにアクセスすることが可能となります。

###２．オンプレミスや VNET ピアリングされたリモートからアクセスが可能
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/a7acd278-42db-9282-4c75-89a2734a9930.png)
　上図で Private Endpoint は VNET 内に配置され内部 IP アドレス（例：10.1.1.5）を持ちます。オンプレミスやリモートのピアリングされた VNET からでも、この内部 IP アドレスにアクセス出来れば Private Endpoint の先にリンクされた Azure サービスへセキュアに接続出来ます。即ち VNET 内に配置された VM にアクセスするのと同じ感覚で Azure PaaS サービスにアクセス可能となります。

#用語と概念
###1. Private Link サービス
　[Private Link 対応サービス](https://docs.microsoft.com/ja-jp/azure/private-link/private-link-service-overview)は、現時点（2019年10月）で SQL Database, Storage, Standard Loadbalancer の 3 種類があります。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/d2230c54-048c-1c44-0741-4241157042eb.png)

　このうち 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
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/0ce87676-a675-2504-b699-ea71338eec1b.png)

###2. プライベートエンドポイント
　[プライベートエンドポイント (Private Endpoint)](https://docs.microsoft.com/ja-jp/azure/private-link/private-endpoint-overview) は、上述の 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 など全てのリソースが 同一リソースグループ内に配置されています。その中で下図赤枠が、プライベートエンドポイントとそれにアタッチされたネットワーク インターフェイスを示しています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/eb67963f-4cdf-6fbd-a308-8b18561f6611.png)

###3. プライベート DNS
　Azure [プライベート DNS](https://docs.microsoft.com/ja-jp/azure/dns/private-dns-overview) は、VNET 内にカスタムの DNS サーバーを構築せずに PaaS サービスとしてカスタムドメイン名を管理および解決します。プライベートエンドポイントの内部名前解決のために利用する事が出来ます。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/521d4083-1bd8-2a24-4195-2103345dc2fc.png)

　プライベート DNS ゾーンは、プライベートエンドポイントの作成時に「プライベート DNS 統合」を有効にすると自動的に構成されます。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/166732/457d8e81-47ce-d3de-adc1-b77bec89aaf9.png)
　プライベートエンドポイントに対する 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