Azure Private Linkを使ってExpressRoute(Private Peering)経由でSQL Databaseに接続する


サービスエンドポイントという機能は、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(プライベートエンドポイント)を作成する

  • SQL Serverの左バーより[プライベートエンドポイント接続]を選択します。

  • [+プライベートエンドポイント]を選択します。

  • [名前]、[地域]を入力します。

  • リソースの種類に[Microsoft.sql/servers]を選択し、対象リソースを選びます。

  • ExpressRoute(PrivatePeering)接続されたvNetを選択します。

  • ここまで入力してプライベートエンドポイントを作成します。

  • 数分でプライベートエンドポイントが作られます。ちゃんとプライベートIPが振られてますね。

接続確認

自分の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が効いているからですね。

以上