みち草

Azure中心にまとめる技術情報ブログ

PaaSにプライベート接続!Azure Private Linkを試してみた

はじめに

9月17日、Azureの新サービスとしてAzure Private Linkがプレビュー公開されました。

azure.microsoft.com

2020年2月14日、一般提供が開始されました!

azure.microsoft.com

これを使うとなんと、AzureのVNetからはもちろん、VNetとVPN/ExpressRouteで接続したオンプレミス環境から、インターネットに出ないプライベート接続でPaaSサービスが使えてしまうんです!

こんな面白そうなもの試すしかない、ということで早速試してみました。

情報や手順は以下のサイトを参照しています。

docs.microsoft.com

目次

Private Link構成イメージ

繰り返しになりますが、Private LinkはAzure上のVNet、またはVNetにVPN/ER接続されたオンプレミス環境とPaaSをプライベート接続で繋ぐためのサービスです。

実際の構成イメージは以下のようになります。

PaaSへのプライベート接続を行うためには、VNet内へのプライベートエンドポイントの作成およびエンドポイントとPaaSとのリンクが必要です。

Azure VMまたはオンプレマシンがプライベートエンドポイントと通信することで、エンドポイントにリンクされたPaaSを使用することができます。 そのため、以下のどれかしらの方法にて、SQL DatabaseやストレージのFQDNが、エンドポイントのプライベートIPアドレスに名前解決される必要があります。

  • hostsファイルに記述する(テスト用のみ推奨)
  • プライベートDNSゾーンを使用する(楽だがプライベートDNSゾーンもプレビュー)
  • 環境内のDNSサーバーを使用する

なお、1つのVNet内に複数のエンドポイントを作成することや、VMと同じサブネットに作成することが可能です。AppGWのような専用サブネットは不要です。

Azure Private Linkでの接続~SQL Database編~

以下では実際にPrivate Linkを作成して、Azure VMからAzure SQL Databaseへのプライベート接続を行う流れを紹介します。

用意した環境

用意したのは以下の環境です。 すべて米国西部リージョンで作成しており、VNet、VM、NSGは作成済みです。

NSGでは、インターネット接続拒否の送信ルールを入れています。

プライベートエンドポイント作成

(1)[すべてのサービス]から[プライベートリンクセンター]を開く

(2)[サービスへのプライベート接続を開始する]の[開始]をクリック

(3)作成するエンドポイントのリソースグループや名前を指定して次へ

(4)接続対象のサービスを指定(ここではSQL Database)して次へ

「リソースIDまたはエイリアスを使って...」の方を選択することで、別サブスクリプションや別テナントのリソースに接続することが可能です。

(5)プライベートエンドポイントを作成するサブネット、プライベートDNS統合を指定して作成開始

(6)5分ほどでデプロイ完了

エンドポイント用ネットワークインターフェースが作成され、VNetに接続されていることがわかります。

(7)SQL Database側にもエンドポイント接続が設定される

接続テスト

(1)ログイン後にPowerShellを起動し、エンドポイントに関連付けたAzure SQL ServerのFQDNと、普段通りのAzure SQL ServerのFQDNをnslookupしてみる

関連付けたAzure SQL ServerのFQDN(kkplsqlserver.database.windows.net)がエンドポイントのプライベートIPアドレスに解決されていますが、何もしていない方のFQDNは当然ながらグローバルIPアドレスに解決されていることがわかります。

(2)いざManagement Studioで接続

接続成功!NSGを適用しているのでインターネットには出られませんが、PaaSが使えています。非常に簡単です!

NSGでの制御について

プライベートエンドポイントですが、NSGがサポートされていません。 詳しくは、NSGの適用されたサブネットにエンドポイントをデプロイすることはできますが、 宛先にエンドポイントのIPを指定した受信ルール、発信元にエンドポイントのIPを指定した送信ルールは、効力を発揮しません。

Azure VMからエンドポイントのIPへの送信を拒否することは可能なため、 VMからの発信を拒否するように送信ルールを書くことで制御は可能です。

プレビューなのでリリース時にはどうなるかわかりませんが、現状ではその仕様です。

価格

以下のサイトにあるとおり、エンドポイント自体とデータの送受信量に課金が発生します。 エンドポイント自体は1ヶ月(730時間)で410円くらいです。

azure.microsoft.com

ただ、"Please note that above price is premium for Azure Private Link. Data Transfer pricing still applies to data transfer."という一文を見ると、通常のデータ送信料に加えてプライベートエンドポイントのデータ送受信料がかかる、ということのようです。

おわりに

これまでPaaSを使うにはインターネット経由(グローバルIPアドレス宛て)であることは避けられず、 それが原因でPaaSを使用しないということは多々ありました。

しかし、Private Linkを用いることでクラウド内とオンプレのどちらからでも、 宛先がプライベートIPかつインターネットに出さずにPaaSを使うことができるため、PaaSを使ってみよう、ということが増えるのではないかと思います。

設定自体も非常に簡単であり、せっかくクラウドを使うならなるべくPaaSを使いたいと思うので、 選択肢を増やせるPrivate Linkのリリースがリリースが今から楽しみです。

あとは、App Serviceに対応してくれれば...!