サービスエンドポイントという機能は、vNetに配置されたAzure VMからSQL Databaseへの通信時に、インターネットに出ずにMicrosoftネットワーク内で閉じたアクセス(ルーティング)が可能です。あくまでもルーティングなので、SQL DatabaseにはプライベートIPは付与されません。
Private Linkでは、SQL DatabaseにvNet内のプライベートIPを割り当てることができるため、オンプレからExpress Route(Private Peering)経由で直接アクセスが可能です。
最近Azureの様々なサービスがPrivate Linkに正式対応し始めました。
今回はオンプレからExpress Route(Private Peering)経由でSQL Databaseに繋いでみましょう。
前提
- Express Route(Private Peering)接続されたvNetが存在すること
- SQL Databaseが作成されていること
Private Link(プライベートエンドポイント)を作成する
-
ここまで入力してプライベートエンドポイントを作成します。
接続確認
自分のPCから
- 自PCから名前解決できているのか確認してみます。
$ ping kwhr-private-sql.database.windows.net
cr2.japaneast1-a.control.database.windows.net [13.78.61.196]に ping を送信しています
- パブリックIPを引いてきてますね。独自DNSに設定すればよいのですが、今回は環境がないため、hostsで上書きしてみます。
$ ping kwhr-private-sql.database.windows.net
kwhr-private-sql.database.windows.net [10.10.2.116]に ping を送信しています
-
プライベートIPに変わりました。この状態でSSMSで接続したところ問題なく接続できました。
-
ちなみに、SQL Server側ではパブリックネットワークアクセスは拒否しているため、Private Link経由でアクセスしていることが分かります。
同一vNetから
- 同一vNetの異なるサブネットからはどうでしょうか。
$ ping kwhr-private-sql.database.windows.net
PING kwhr-private-sql.privatelink.database.windows.net (10.10.2.116)
- 今度はhosts設定していませんが、名前解決できています。これは、Azure内のプライベートDNSが効いているからですね。
以上