Azure SQL Database と Azure Synapse Analytics に対する Azure Private Link

対象: Azure SQL データベースAzure Synapse Analytics (専用 SQL プールのみ)

Private Link を使用すると、プライベート エンドポイントを経由して Azure 内のさまざまな PaaS サービスに接続できます。 Private Link 機能をサポートしている PaaS サービスの一覧については、「Private Link のドキュメント」ページを参照してください。 プライベート エンドポイントは、特定の VNet およびサブネット内のプライベート IP アドレスです。

重要

この記事は、Azure SQL Database と Azure Synapse Analytics の専用 SQL プール (以前の SQL DW) の両方に適用されます。 これらの設定は、このサーバーに関連するすべての SQL Database と専用 SQL プール (以前の SQL DW) データベースに適用されます。 単純にするために、"データベース" という言葉で Azure SQL Database と Azure Synapse Analytics の両方のデータベースを表すことにします。 同様に、"サーバー" という言葉は、Azure SQL Database と Azure Synapse Analytics の専用 SQL プール (以前の SQL DW) をホストする論理サーバーを表しています。 この記事は、Azure SQL Managed Instance または Azure Synapse Analytics ワークスペースの専用 SQL プールには適用 "されません"。

作成プロセス

プライベート エンドポイントは、Azure portal、PowerShell、または Azure CLI を使用して作成できます。

承認プロセス

ネットワーク管理者がプライベート エンドポイント (PE) を作成すると、SQL 管理者は SQL Database へのプライベート エンドポイント接続 (PEC) を管理できます。

  1. Azure portal でサーバーリソースに移動します。

  2. プライベート エンドポイントの承認ページに移動します。

    • Azure SQL Database で、リソース メニューの [セキュリティ][ネットワーク] を選択します。 [プライベート アクセス] タブを選択します。
    • Synapse ワークスペースで、リソース メニューの [セキュリティ] で、[プライベート エンドポイント接続] を選択します。
  3. ページには、以下が表示されます:

    • すべてのプライベート エンドポイント接続 (PEC) の一覧
    • 作成されたプライベート エンドポイント (PE)

    サーバー リソースのプライベート エンドポイント接続の一覧を見つける方法を示すスクリーンショット。

  4. プライベート エンドポイントがない場合は、[プライベート エンドポイント] ボタンを使用してプライベート エンドポイントを作成します。 それ以外の場合は、リストから個々の PEC を選択します。

    Azure portal でプライベート エンドポイント接続を選択する方法を示すスクリーンショット。

  5. SQL 管理者は、PEC の承認または拒否を選択できます。また、必要に応じて、短いテキスト応答を追加することもできます。

    Azure portal で PEC を承認する方法を示すスクリーンショット。

  6. 承認または拒否すると、リストには応答テキストとともに適切な状態が反映されます。

    管理者による承認後の [承認済み] 状態の PEC を示すスクリーンショット。

  7. 最後に、プライベート エンドポイント名を選択します

    エンドポイント名がある PEC の詳細を示すスクリーンショット。

    これにより、[プライベート エンドポイントの概要] ページが表示されます。 [ネットワーク インターフェイス] リンクを選択して、プライベート エンドポイント接続のネットワーク インターフェイスの詳細を取得します。

    プライベート エンドポイント接続の NIC の詳細を示すスクリーンショット。

    [ネットワーク インターフェイス] ページには、プライベート エンドポイント接続のプライベート IP アドレスが表示されます。

    [ネットワーク インターフェイス] ページには、プライベート エンドポイント接続のプライベート IP アドレスを示すスクリーンショット。

重要

プライベート エンドポイント接続を追加する場合、論理サーバーへのパブリック ルーティングは既定ではブロックされません。 [ファイアウォールと仮想ネットワーク] ペインで、[パブリック ネットワーク アクセスの拒否] 設定は既定では選択されていません。 パブリックネットワーク アクセスを無効にするには、[パブリック ネットワーク アクセスの拒否] を選択します。

論理サーバーへのパブリック アクセスを無効にする

Azure SQL データベース論理 SQL Server で、Azure SQL 論理サーバーへのすべてのパブリック アクセスを無効にして、自分の仮想ネットワークからの接続のみを許可するとします。

まず、プライベート エンドポイント接続が有効で、構成されていることを確認します。 次に、Azure SQL 論理サーバーへのパブリック アクセスを無効にするために、以下のようにします。

  1. 論理サーバーの [ネットワーク] ページに移動します。

  2. [パブリック ネットワーク アクセスの拒否] チェックボックスをオンにします。

    プライベート エンドポイント接続のパブリック ネットワーク アクセスを無効にする方法を示すスクリーンショット。

同じ仮想ネットワーク内の Azure VM から SQL Database への接続をテストする

このシナリオでは、プライベート エンドポイントと同じ仮想ネットワーク内に最新バージョンの Windows を実行する Azure 仮想マシン (VM) を作成したとします。

  1. リモート デスクトップ (RDP) セッションを開始し、仮想マシンに接続します。

  2. 次に、次のツールを使用して、VM がプライベート エンドポイント経由で SQL Database に接続されていることを確認する基本的な接続チェックを実行できます。

Telnet を使用して接続を確認する

Telnet クライアントは、接続をテストするために使用できる Windows の機能です。 Windows OS のバージョンによっては、この機能を明示的に有効にする必要がある場合があります。

Telnet をインストールした後で、コマンド プロンプト ウィンドウを開きます。 Telnet コマンドを実行し、SQL Database 内のデータベースの IP アドレスとプライベート エンドポイントを指定します。

telnet 10.9.0.4 1433

Telnet が正常に接続されると、次の図に示すように、コマンド ウィンドウに空白の画面が表示されます。

空白の画面がある Telnet ウィンドウの図。

PowerShell コマンドを使用して接続を確認する:

Test-NetConnection -computer myserver.database.windows.net -port 1433

PsPing を使用して接続を確認する

PsPing を次のように使用して、プライベート エンドポイントがポート 1433 での接続をリッスンしていることを確認することができます。

次のように論理 SQL server の FQDN とポート 1433 を指定して、PsPing を実行します。

PsPing.exe mysqldbsrvr.database.windows.net:1433

これは期待される出力の例を次に示します。

TCP connect to 10.9.0.4:1433:
5 iterations (warmup 1) ping test:
Connecting to 10.9.0.4:1433 (warmup): from 10.6.0.4:49953: 2.83ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49954: 1.26ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49955: 1.98ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49956: 1.43ms
Connecting to 10.9.0.4:1433: from 10.6.0.4:49958: 2.28ms

出力には、PsPing がプライベート エンドポイントに関連付けられているプライベート IP アドレスに ping を実行できることが示されます。

Nmap を使用して接続を確認する

Nmap (ネットワーク マッパー) は、ネットワーク探索とセキュリティ監査に使用される無料のオープン ソース ツールです。 詳細とダウンロード リンクについては、 https://Nmap.org にアクセスしてください。このツールを使用すると、プライベート エンドポイントがポート 1433 での接続をリッスンしていることを確認できます。

次のようにプライベート エンドポイントをホストするサブネットのアドレス範囲を指定して、Nmap を実行します。

Nmap -n -sP 10.9.0.0/24

これは期待される出力の例を次に示します。

Nmap scan report for 10.9.0.4
Host is up (0.00s latency).
Nmap done: 256 IP addresses (1 host up) scanned in 207.00 seconds

結果には、1 つの IP アドレスが稼働していることが示されます。これは、プライベート エンドポイントの IP アドレスに対応します。

SQL Server Management Studio (SSMS) を使用して接続を確認する

Note

クライアント (<server>.database.windows.net) の接続文字列で、サーバーの完全修飾ドメイン名 (FQDN) を使用します。 IP アドレスに対して直接、またはプライベート リンクの FQDN (<server>.privatelink.database.windows.net) を使用してログインを試みると、失敗します。 この動作は仕様によるものです。トラフィックは、プライベート エンドポイントによってリージョン内の SQL Gateway にルーティングされ、ログインに成功するためには、正しい FQDN を指定する必要があるためです。

ここに示す手順に従い、SSMS を使用して SQL データベースに接続します。 SSMS を使用して SQL Database に接続した後、次のクエリには、接続元の Azure VM のプライベート IP アドレスと一致する client_net_address が反映されます。

SELECT client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;

プライベート エンドポイントでリダイレクト接続ポリシーを使用する

待機時間を短縮し、スループットを向上させるために、リダイレクト接続ポリシーと共にプライベート リンクを使用することをおすすめします。 このモードを使用する接続の場合、クライアントは次の前提条件を満たす必要があります。

  • プライベート エンドポイントをホストしている VNET への受信通信をポート範囲 1433 から 65535 に許可します。

  • クライアントをホストしている VNET からポート範囲 1433 から 65535 への送信通信を許可します。

  • リダイレクトのサポートが組み込まれている最新バージョンのドライバーを使用します。リダイレクトのサポートは、ODBC、OLEDB、NET SqlClient Data Provider、Core .NET SqlClient Data Provider、JDBC (バージョン 9.4 以降) ドライバーに含まれています。 他のすべてのドライバーからの接続はプロキシされます。

前提条件を満たしたら、クライアントは明示的に [リダイレクト接続ポリシー] を選択する必要があります。

1433-65535 ポートの範囲で送信アクセスを許可するようにファイアウォールの設定を変更することが実行可能でない場合、別の解決策として、接続ポリシーをプロキシに変更する方法もあります。

既定の接続ポリシーを使用する既存のプライベート エンドポイントはプロキシされます。つまり、ポート 1433 でプロキシ接続ポリシーを使用します。 これを行う理由は、リダイレクトに必要なポート範囲が開いていないのが原因で、クライアントのトラフィックが Sql Database にできなくなるのを回避するためです。

プライベート ピアリングを介したオンプレミス接続

お客様がオンプレミスのマシンからパブリック エンドポイントに接続する場合、サーバーレベルのファイアウォール規則を使用して、ご自分の IP アドレスを IP ベースのファイアウォールに追加する必要があります。 このモデルは、開発またはテストのワークロード用に個々のコンピューターへのアクセスを許可する場合には適していますが、運用環境で管理するのは困難です。

Private Link を使用すると、ExpressRoute、プライベート ピアリング、または VPN トンネリングを使用して、プライベート エンドポイントへのクロスプレミス アクセスを有効にすることができます。 その後、お客様はパブリック エンドポイント経由のすべてのアクセスを無効にし、IP ベースのファイアウォールを使用して任意の IP アドレスを許可しないようにすることができます。

クライアントは、同じ仮想ネットワークから、同じリージョン内のピアリングされた仮想ネットワークから、またはリージョン間の仮想ネットワーク間接続を介して、プライベート エンドポイントに接続できます。 さらに、クライアントは、ExpressRoute、プライベート ピアリング、または VPN トンネリングを使用して、オンプレミスから接続できます。 次の簡略図は、一般的なユース ケースを示しています。

接続オプションの図。

さらに、仮想ネットワークで直接実行されているわけではないが、仮想ネットワークと統合されているサービス (App Service Web Apps や Functions など) も、データベースへのプライベート接続を実現できます。 このユース ケースの詳細については、Azure SQL Database へのプライベート接続を使用する Web アプリのアーキテクチャ シナリオをご覧ください。

ピアリングされた仮想ネットワー内の Azure VM から接続する

仮想ネットワーク ピアリングを構成し、ピアリングされた仮想ネットワーク内の Azure VM から SQL Database への接続を確立します。

仮想ネットワーク内の Azure VM から仮想ネットワーク環境に接続する

仮想ネットワーク間 VPN ゲートウェイ接続を構成し、別のリージョンまたはサブスクリプションの Azure VM から SQL Database 内のデータベースへの接続を確立します。

オンプレミス環境からの VPN 経由の接続

オンプレミス環境から SQL Database 内のデータベースへの接続を確立するには、次のいずれかのオプションを選択して実装します。

DNS 構成シナリオも検討してください。サービスの FQDN はパブリック IP アドレスに解決できることがあります。

Polybase と COPY ステートメントを使用して Azure Synapse Analytics から Azure Storage に接続する

PolyBase と COPY ステートメントは、Azure Storage アカウントから Azure Synapse Analytics にデータを読み込むときによく使用されます。 データの読み込み元の Azure ストレージ アカウントで、アクセスがプライベート エンドポイント、サービス エンドポイント、または IP ベースのファイアウォールを介した一連の仮想ネットワーク サブネットだけに制限されている場合、PolyBase と COPY ステートメントからそのアカウントへの接続は切断されます。 仮想ネットワークに結び付けられた Azure Storage に接続する Azure Synapse Analytics でインポートとエクスポート両方のシナリオを有効にするには、こちらで示されている手順のようにします。

データの流出防止

Azure SQL Database におけるデータの流出とは、データベース管理者などのユーザーが、あるシステムからデータを抽出して、組織外の別の場所またはシステムに移動できる場合です。 たとえば、ユーザーがサードパーティによって所有されているストレージ アカウントにデータを移動します。

SQL Database 内のデータベースに接続している Azure 仮想マシン内で SQL Server Management Studio (SSMS) を実行しているユーザーのシナリオについて考えます。 このデータベースは、米国西部のデータ センターにあります。 次の例では、ネットワーク アクセス制御を使用して SQL Database のパブリック エンドポイントでアクセスを制限する方法を示します。

  1. [Allow Azure Services](Azure サービスを許可する) を [オフ] に設定して、パブリック エンドポイント経由で SQL Database へのすべての Azure サービス トラフィックを無効にします。 サーバーおよびデータベース レベルのファイアウォール規則で IP アドレスが許可されていないことを確認してください。 詳細については、Azure SQL Database および Azure Synapse Analytics のネットワーク アクセスの制御に関するページを参照してください。
  2. VM のプライベート IP アドレスを使用して、SQL Database 内のデータベースへのトラフィックのみを許可します。 詳細については、サービス エンドポイント仮想ネットワークのファイアウォール規則に関する記事を参照してください。
  3. Azure VM で、次のようにネットワーク セキュリティ グループ (NSG) とサービス タグを使用して、送信接続の範囲を絞り込みます。
    • 米国西部にある SQL Database への接続のみを許可するように、サービス タグへのトラフィックを許可する NSG ルールを指定します (Service Tag = SQL.WestUs)。
    • すべてのリージョンで SQL Database への接続を拒否するように、サービス タグへのトラフィックを拒否する NSG ルールを (高い優先度で) 指定します (Service Tag = SQL)。

この設定が終了すると、Azure VM は米国西部リージョンにある SQL Database 内のデータベースにのみ接続できます。 ただし、接続は SQL Database 内の 1 つのデータベースに限定されません。 この VM は、サブスクリプションに含まれていないデータベースも含め、米国西部リージョンの任意のデータベースに引き続き接続できます。 上記のシナリオでは、データの流出が特定のリージョンに限定されていますが、完全には除外されていません。

Private Link を使用することで、お客様が NSG のようなネットワーク アクセス制御を設定してプライベート エンドポイントへのアクセスを制限できるようになりました。 その後、個々の Azure PaaS リソースが特定のプライベート エンドポイントにマップされます。 悪意のある内部関係者は、マップされた PaaS リソース (SQL Database 内のデータベースなど) にしかアクセスできず、その他のリソースにはアクセスできません。