先日、Private Link がプレビューで公開されました。
現時点で対応しているサービスとしては次のようなものがあります。
During public preview, Private Link supports Azure Storage, Azure Data Lake Storage Gen 2, Azure SQL Database, Azure SQL Data Warehouse, and customer-owned services.
Azure プライベート リンク の価格 に料金も出ていますが、時間と容量の課金がありますので、どの程度のコストがかかるかを把握しておくのもお忘れなく。
ポータルの操作としては「プライベート リンク センター」から始めることになるのですが、リソースのブレードに表示される画像がわかりやすいのかなと思います。
リンクも記載されているので情報を把握しやすいですね。
リンクは次の情報に対して設定されています。
SQL Database に接続をする場合は、
- コンシューマー (接続側) の VNET に対して、Private Endpoint を作成する
- Private Endpoint にリンクされたリソースとして、SQL Database を設定する
というような考え方になるようです。
Private Endpoint による接続を許可した場合は、次のような状態の SQL Database の論理サーバーに対しても接続ができるようになります。
Azure からのサービス / IP アドレスベースの接続 / VNET (サービスエンドポイント) の接続は許可していない状態となっているのですが、Private Endpoint を設定することで、Private Endpoint からの接続は許可されるようになります。
それでは、Private Endpoint の作成の流れを見ていきましょう。
現時点では、Availability に記載があるように、Private Link Services が利用可能なリージョンが限定されていますので、検証する際には、使用するリージョンも気を付けておいた方が良いかと。
今回は、どのように接続できる機能なのかを見ることが目的ですので、米国東部 (East US) に使用する全てのリソース (SQL Database / VNET / Private Endpoint) をまとめています。
Private Endpoint は VNET 内に作成するリソースとなりますので、最初に VNET を作成しておく必要があります。
Private Endpoint を作成する VNET のサブネットですが、現時点では、Limitations に記載されているような制約があります。
- Network Security Group (NSG) rules do not apply to Private Endpoint
- Private Endpoints cannot be created in subnets enabled for service endpoint or specialized workloads
Private Endpoint には NSG の設定が適用されない / サービスエンドポイントまたは、特殊なワークロードが有効なサブネットには Private Endpoint が作成できないというような制限がありますので、「どのサブネットに作成するか」については最初に考慮しておく必要があります。
Private Endpoint の作成はとてもシンプルで、最初にエンドポイントのリソースを、どこに作成するかを設定し、
次に「どのリソースをエンドポイントに関連付けるか」を選択します。
自サブスクリプションの SQL Database であれば、プルダウンで選択してしまうのが早いかと。
最後に、「エンドポイントをどのサブネットに作成するか」と「エンドポイントを解決するためのレコードをどのようにして作成するか」を設定します。
プライベート DNS ゾーンと統合した場合には、「privatelink.database.windows.net」というゾーンが、Private Endpoint の作成先の VNET に仮想ネットワークリンクされた状態となり、該当の VNET での名前解決に利用することができます。
Private Endpoint の作成が完了すると、次のようなリソースが作成されます。
Private Endpoint 用の NIC が作成され、その NIC にはプライベート IP アドレスが付与されます。
プライベート DNS ゾーンと統合するようにした場合は、この NIC の IP アドレスが、SQL Database のサーバー名用の A レコードと関連づくようになります。
今回は、「privatelinktest01」という SQL Database の論理サーバー名を作成していますので、
- privatelinktest01.database.windows.net -> Public IP による接続
- privatelinktest01.privatelink.database.windows.net -> Private IP による接続
- こちらについては、Private IP で名前解決ができるように DNS を設定しておく必要がある
というような接続が可能となります。
今回は、Private Endpoint を作成した VNET と P2S (ポイント対サイト) の VPN 接続をしており、「privatelink.database.windows.net 」の名前解決を考慮していない環境で接続をしています。
Private Endpoint までネットワーク的な経路ができているのであれば、
- サーバー名 : Private Endpoint の プライベート IP アドレス
- ログイン名 : ログイン名@SQL Database 論理サーバー名
というような資格情報で、とりあえず接続はできるかと。
P2S 経由で接続をした場合、接続元のアドレスとしては、アドレスプールからクライアント側に割り当てられた IP アドレスが取得できるようですね。
Private Endpoint を使用することで、Public IP や、Microsoft Peering を使用せず、VNET 内の Private IP を介した SQL Database への接続が簡単に可能となりますね。
ネットワーク的な考慮点としては、次のようなものがあります。
- Control the traffic by using NSG rules for outbound traffic on source clients.
- Connecting to a private link service (your own) from a different region is not supported
- During Preview, you must deploy your Private Link service in the same region.
Private Endpoint の接続許可を NSG のルールベースで実施することができないため接続のセキュリティをどのように考えるか / Link Service に設定できるスコープ (テナント / サブスクリプション) については、情報を随時キャッチアップした方が良いのかなと。