Private Link が変えるのは接続がどこに届くかであり、接続の名前ではありません。Azure SQL Database では、この区別が設計のすべてであり、論理サーバーは名前を保ち、プライベート エンドポイントはその名前が解決されるネットワーク エントリを提供します。名前を IP アドレスに置き換えることは、TLS、資格情報、ツールを同時に壊す唯一の変更です。二つの接続文字列は同等に見えても、まったく異なる動作をします。

orders-db.database.windows.net を保ち、クライアントにそのためのプライベートな応答を返します。

名前とアドレスには別の役割があります

名前は SQL サービスを識別し、証明書とログインが期待するのはまさにそれです。プライベート アドレスは、接続された仮想ネットワーク内のネットワーク エントリを提供します。一方を他方と混同すると、何かに到達しながら何に対しても認証しない接続になります。

Azure SQL に関する Microsoft のガイダンスは、クライアントに通常のサーバー名を求めます。直接の IP も、privatelink 接頭辞付きの名前も、交換可能なログイン先ではありません。IP を受け入れるツールはそれを受け入れ、その後 TLS または認証で失敗するため、本当の誤りが見えなくなります。こうした失敗は、エラー内のホスト名を見るまで資格情報の問題のように読めます。

プライベート ゾーンが実際に変えるもの

プライベート DNS ゾーンは、privatelink 名前空間内でサーバーのアドレスを一つ記録し、そのゾーンはこれを使うべき仮想ネットワークにリンクされます。解決は移動しますが、接続文字列は移動しません。以下の形は例示であり、パブリック ゾーンに貼り付けるレコードではありません。

Application name:        orders-db.database.windows.net
Private DNS zone:        privatelink.database.windows.net
Resolved private entry:  the approved private endpoint address

そのレコードとゾーンのリンクを、所有者とレビュー日を添えてインフラストラクチャとして維持します。

同じ起点で異なる応答を持つ二つのゾーンは正常な最終状態であり、競合ではありません。パブリック クライアントはパブリックな応答を保ち、プライベート クライアントはエンドポイントのアドレスを受け取ります。注意すべき障害モードは、プライベート ビューの部分的な伝播で、あるサブネットはプライベートに解決し、別のサブネットは静かに解決しない状態です。

Azure の外のクライアントには、そのゾーンへの経路が必要です

VPN クライアントは Azure のリゾルバーの外にいるため、プライベート ゾーンはハイブリッド経路から到達可能でなければなりません。Azure DNS フォワーダーまたは Azure DNS Private Resolver は、そのネットワーク経由で届くクエリを処理できます。Microsoft のガイダンスは、クライアントが privatelink 名を直接問い合わせると仮定するのではなく、該当するパブリック サービス ゾーンをその構成経由で転送することです。プライベートな応答を解決できないクライアントは、不平を言わずにパブリックな応答へフォールバックします。

転送の範囲は意図的に保ちます、なぜなら使用中のパブリック ゾーンを置き換えると、置き換えに含まれない名前が壊れるからです。

アイデンティティを固定した順序でプロビジョニングします

手順には別々の所有者がいます: エンドポイントを作成して承認し、VPN 経路を提供し、プライベート DNS を統合し、最後にクライアントを通常のサーバー名で構成します。経路より先に DNS を行うと、DNS 障害のように見えるタイムアウトが生じます。クライアントを最後にすると、一度に動く変数が一つになります。各手順には観察可能な結果があるため、どれも推測でテストする必要はありません。

接続された VPN アイコンは、それ自体でプライベートな宛先を選ぶわけではありません。

プライベート エンドポイントがオフにしないもの

プライベート エンドポイントを作成しても、論理サーバーへのパブリック アクセスは自動的には無効になりません。それは別の展開上の決定であり、意図したプライベート クライアントが動作することが確認された後に行います。復旧経路を保ち、まだパブリックな入口を使っているアプリケーションを考慮します。パブリック アクセスを先にオフにすることは、動作中のサービスを整った監査証跡付きの障害に変える方法です。

サーバーがどの接続ポリシーを使っているかも確認します。

Redirect は最初のゲートウェイ接続の後、クライアントをノード上のポートへ送り、これによりクライアント ネットワークが許可すべき内容が変わります。Proxy はトラフィックをゲートウェイ上に保ちます。一つのポートでの TCP ハンドシェイクの成功は、ログイン ワークフロー全体ではありません。

これは Azure SQL Database であり、独自の接続モデルを持ち、同等のプライベート エンドポイントの話がない SQL Managed Instance ではありません。どちらの場合も、名前、ネットワーク エントリ、資格情報の三つを別々にラベル付けします。接続がどこを通るかを変えても、クライアントがどのサービスと話していると考えるかは決して変わるべきではありません。

関連記事