Azure SQL Managed Instance の Azure Private Link
適用対象: Azure SQL Managed Instance
この記事では、Azure SQL Managed Instance 用のプライベート エンドポイントの概要と、それを構成する手順について説明します。 プライベート エンドポイントは、サービスのネットワーク インフラストラクチャ全体を公開することなく、サービスと複数の仮想ネットワークの間に、安全で分離された接続を確立します。
概要
Private Link は、任意の仮想ネットワークで Azure SQL Managed Instance を使用できるようにする Azure テクノロジです。 ネットワーク管理者は、仮想ネットワーク内の Azure SQL Managed Instance へのプライベート エンドポイントを確立でき、SQL 管理者はエンドポイントがアクティブになる前にそれを受け入れるか拒否するかを選びます。 プライベート エンドポイントは、サービスのネットワーク インフラストラクチャ全体を公開することなく、サービスと複数の仮想ネットワークの間に、安全で分離された接続を確立します。
プライベート エンドポイントと VNet ローカル エンドポイントの違い
各 Azure SQL Managed Instance でデプロイされる既定の VNet ローカル エンドポイントは、サービスを実行しているコンピューターが仮想ネットワークに物理的に接続されているかのように動作します。 これにより、ルート テーブル、ネットワーク セキュリティ グループ、DNS 解決、ファイアウォール、および同様のメカニズムを使って、ほぼ完全にトラフィックを制御できます。 また、このエンドポイントを使うと、フェールオーバー グループ、分散トランザクション、Managed Instance リンクなどの、1433 以外のポートでの接続を必要とするシナリオに、インスタンスを含めることもできます。 VNet ローカル エンドポイントは柔軟性を提供しますが、特定のシナリオ (特に複数の仮想ネットワークまたはテナントを含むシナリオ) 用に構成するときは複雑さが増します。
これに対し、プライベート エンドポイントのセットアップは、Azure SQL Managed Instance を実行しているコンピューターから別の仮想ネットワークに物理的なネットワーク ケーブルを延長するようなものです。 この接続パスは、Azure Private Link テクノロジを使って仮想的に確立されます。 プライベート エンドポイントから Azure SQL Managed Instance への 1 方向の接続のみが許可され、ポート 1433 (標準 TDS トラフィック ポート) でのみトラフィックが伝送されます。 これにより、ネットワーク ピアリングを設定したり、インスタンスのパブリック エンドポイントを有効にしたりする必要なしに、異なる仮想ネットワークで Azure SQL Managed Instance を使用できるようになります。 インスタンスを別のサブネットに移動した場合でも、確立されたプライベート エンドポイントは引き続きそれを指し示します。
Azure SQL Managed Instance でサポートされるさまざまな種類のエンドポイントについて詳しくは、「通信の概要」をご覧ください。
プライベート エンドポイントを使用する時期
Azure SQL Managed Instance へのプライベート エンドポイントは、VNet ローカル エンドポイントまたはパブリック エンドポイントを使うより安全であり、重要な接続シナリオの実装が簡単になります。 これらのシナリオは、次のとおりです。
- Airlock。 Azure SQL Managed Instance へのプライベート エンドポイントは、ジャンプ サーバーと ExpressRoute ゲートウェイを使って仮想ネットワークにデプロイされ、オンプレミス リソースとクラウド リソースの間のセキュリティと分離を提供します。
- ハブとスポーク トポロジ。 スポーク仮想ネットワーク内のプライベート エンドポイントは、SQL クライアントとアプリケーションからハブ仮想ネットワーク内の Azure SQL Managed Instances へのトラフィックを実行し、ネットワークの分離と責任の分離を明確に確立します。
- パブリッシャー - コンシューマー。 パブリッシャー テナント (ISV など) は、仮想ネットワーク内の複数の SQL マネージド インスタンスを管理します。 パブリッシャーは、他のテナントの仮想ネットワーク名にプライベート エンドポイントを作成し、コンシューマーがインスタンスを使用できるようにします。
- Azure PaaS サービスと SaaS サービスの統合。 Azure Data Factory のような一部の PaaS および SaaS サービスでは、Azure SQL Managed Instance へのプライベート エンドポイントを作成して管理できます。
プライベート エンドポイントを使うと、VNet ローカル エンドポイントやパブリック エンドポイントより次のような利点があります。
- IP アドレスの予測可能性: Azure SQL Managed Instance へのプライベート エンドポイントには、サブネットのアドレス範囲から固定 IP アドレスが割り当てられます。 VNet ローカル エンドポイントとパブリック エンドポイントの IP アドレスが変更された場合でも、この IP アドレスは静的なままです。
- 粒度の細かいネットワーク アクセス: プライベート エンドポイントは、その仮想ネットワーク内でのみ認識できます。
- 強力なネットワーク分離: ピアリングのシナリオでは、ピアリングされた仮想ネットワークは双方向の接続を確立しますが、プライベート エンドポイントは一方向であり、ネットワーク内のネットワーク リソースを Azure SQL Managed Instance に公開しません。
- アドレスの重複の回避: 複数の仮想ネットワークをピアリングするには、IP 領域を慎重に割り当てる必要があり、アドレス空間が重複すると問題が発生する可能性があります。
- IP アドレス資産の節約: プライベート エンドポイントは、サブネットのアドレス空間から IP アドレスを 1 つだけ使います。
制限事項
- Azure SQL Managed Instance では、SQL クライアントによって送信される接続文字列に、インスタンスの正確な "ホスト名" が含まれている必要があります。 プライベート エンドポイントの IP アドレスの使用はサポートされておらず、失敗します。 これを解決するには、DNS サーバーを構成するか、「プライベート エンドポイントのドメイン名解決を設定する」で説明されているようにプライベート DNS ゾーンを使います。
- DNS 名の自動登録はまだサポートされていません。 代わりに、「プライベート エンドポイントのドメイン名解決を設定する」の手順のようにします。
- SQL Managed Instance へのプライベート エンドポイントは、SQL トラフィックの標準 TDS ポートであるポート 1433 への接続にのみ使用できます。 他のポートでの通信が必要なさらに複雑な接続シナリオは、インスタンスの VNet ローカル エンドポイントを介して確立する必要があります。
- Azure SQL Managed Instance へのプライベート エンドポイントには、「プライベート エンドポイントのドメイン名解決を設定する」で説明されているように、必要な DNS 解決を構成するための特別な設定が必要です。
- プライベート エンドポイントでは、接続の種類の設定に関係なく、常にプロキシ接続の種類が使用されます。
仮想ネットワーク内にプライベート エンドポイントを作成する
Azure portal、Azure PowerShell、または Azure CLI を使って、プライベート エンドポイントを作成します。
プライベート エンドポイントを作成した後、ターゲット仮想ネットワーク内でその作成を承認することが必要な場合もあります。「プライベート エンドポイントの作成要求を確認して承認する」をご覧ください。
SQL Managed Instance へのプライベート エンドポイントを完全に機能させるには、手順に従ってプライベート エンドポイントのドメイン名解決を設定します。
PaaS または SaaS サービスでプライベート エンドポイントを作成する
一部の Azure PaaS および SaaS サービスでは、プライベート エンドポイントを使って、環境内からデータにアクセスできます。 そのようなサービスでプライベート エンドポイント ("マネージド プライベート エンドポイント" または "マネージド仮想ネットワーク内のプライベート エンドポイント" と呼ばれることもあります) を設定する手順は、サービスによって異なります。 それでも、管理者は、「プライベート エンドポイントの作成要求を確認して承認する」で説明されているように、Azure SQL Managed Instance で要求を確認して承認する必要があります。
注意
Azure SQL Managed Instance では、SQL クライアントからの接続文字列で、ドメイン名の最初のセグメントとしてインスタンスの名前を指定する必要があります (例: <instance-name>.<dns-zone>.database.windows.net
)。 PaaS サービスと SaaS サービスは、IP アドレスを使って Azure SQL Managed Instance のプライベート エンドポイントへの接続を試みても、接続できません。
テナント間のプライベート エンドポイントを作成する
Azure SQL Managed Instance へのプライベート エンドポイントは、異なる Azure テナントに作成することもできます。 これを行うには、プライベート エンドポイントが表示される仮想ネットワークの管理者は、まず、プライベート エンドポイントを要求しようとしている Azure SQL Managed Instance の完全なリソース ID を取得する必要があります。 この情報を使用すると、プライベート リンク センターで新しいプライベート エンドポイントを作成できます。 以前と同様、Azure SQL Managed Instance の管理者は、「プライベート エンドポイントの作成要求を確認して承認する」 に従って、確認して承認または拒否できるリクエストを受け取ります。
プライベート エンドポイントの作成要求を確認して承認する
プライベート エンドポイントの作成が要求されると、SQL 管理者は、Azure SQL Managed Instance へのプライベート エンドポイントの接続を管理できます。 新しいプライベート エンドポイント接続を管理するための最初のステップは、プライベート エンドポイントを確認して承認することです。 プライベート エンドポイントを作成しているユーザーまたはサービスに、Azure SQL Managed Instance リソースに対する十分な Azure RBAC のアクセス許可がある場合、このステップは自動的に行われます。 ユーザーに十分なアクセス許可がない場合は、プライベート エンドポイントの確認と承認を手動で行う必要があります。
プライベート エンドポイントを承認するには、次の手順のようにします。
Azure portal で、対象の Azure SQL Managed Instance に移動します。
[セキュリティ] で [プライベート エンドポイントの接続] を選びます。
保留中状態になっている接続を確認し、承認または拒否する 1 つ以上のプライベート エンドポイント接続のチェック ボックスをオンにします。
[承認] または [拒否] を選んだ後、操作を確認するダイアログ ボックスで [はい] を選びます。
接続を承認または拒否すると、[プライベート エンドポイントの接続] の一覧に、現在のプライベート エンドポイント接続の状態と要求/応答メッセージが反映されます。
プライベート エンドポイントのドメイン名解決を設定する
Azure SQL Managed Instance へのプライベート エンドポイントを作成した後、ドメイン名の解決を構成する必要があります。そうしないと、ログインの試行は失敗します。 次の方法は、Azure DNS 解決を使用する仮想ネットワークで機能します。 カスタム DNS サーバーを使うように仮想ネットワークが構成されている場合は、それに応じて手順を調整します。
VNet ローカル エンドポイントのドメイン名が <instance-name>.<dns-zone>.database.windows.net
であるインスタンスへのプライベート エンドポイントのドメイン名解決を設定するには、インスタンスとそのプライベート エンドポイントが同じ仮想ネットワーク内にあるのか、それとも異なる仮想ネットワーク内にあるのかに応じて、以下の 2 つの手順のいずれかに従って行います。
重要
Azure SQL Managed Instance の VNet ローカル エンドポイントのドメイン名の解決方法を、それ自体の仮想ネットワーク内では変更しないでください。 そのようにすると、管理操作を実行するインスタンスの機能が損なわれます。
プライベート エンドポイントと Azure SQL Managed Instance が異なる仮想ネットワークにある場合は、次の手順のようにします。
これらの手順を完了すると、エンドポイントの仮想ネットワーク内から <instance-name>.<dns-zone>.database.windows.net
に接続する SQL クライアントは、プライベート エンドポイントを通して透過的にルーティングされるようになります。
Private Link センターにアクセスするか、次の手順のようにして、プライベート エンドポイントの IP アドレスを取得します。
Azure portal で、対象の Azure SQL Managed Instance に移動します。
[セキュリティ] で [プライベート エンドポイントの接続] を選びます。
テーブルでプライベート エンドポイント接続を見つけ、選んだ接続の [プライベート エンドポイント名] を選びます。
[概要] ページで、ネットワーク インターフェイスを選びます。
[概要] ページの [基本] をチェックし、[プライベート IP アドレス] を確認してコピーします。
privatelink.<dns-zone>.database.windows.net
という名前のプライベート Azure DNS ゾーンを作成します。DNS ゾーンで、次の値を持つ新しいレコード セットを作成します。
- 名前:
<instance-name>
- タイプ: A
- IP アドレス: 前のセットで取得したプライベート エンドポイントの IP アドレス。
- 名前:
次のステップ
- Azure SQL Managed Instance の接続アーキテクチャについて理解します。
- Azure Private Link とプライベート エンドポイントの詳細を参照します。
- Private Link と互換性のある Azure PaaS サービスの一覧については、「Azure Private Link の可用性」をご覧ください