次の方法で共有


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

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

Azure 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 で SQL サーバー リソースに移動します。

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

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

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

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

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

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

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

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

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

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

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

    エンドポイント名と共に PEC の詳細を示すスクリーンショット。

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

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

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

    プライベート エンドポイント接続のプライベート IP アドレスを示すスクリーンショット。

重要

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

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

Azure SQL Database の論理 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 サーバーの 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) を使用して接続を確認する

クライアント (<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、OLE DB、.NET SqlClient データ プロバイダー、Core .NET SqlClient データ プロバイダー、および JDBC (バージョン 9.4 以降) ドライバーに含まれています。 他のすべてのドライバーからの接続はプロキシされます。

前提条件を満たしたら、クライアントは明示的にリダイレクト接続ポリシーを選択する必要があります。 プライベート エンドポイントを設定する前に接続ポリシーが [リダイレクト ] に設定されている場合は、プライベート エンドポイントの設定後に接続ポリシーの切り替えが必要になる場合があります。

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

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

専用 SQL プールの場合、プライベート エンドポイントを使用する場合の接続ポリシーは常に "プロキシ" です。 プライベート エンドポイントを使用する場合、設定を変更しても専用 SQL プールには影響しません。

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

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

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

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

接続オプションの図。

さらに、仮想ネットワークで直接実行されているわけではないが、仮想ネットワークと統合されているサービス (App Service Web Apps や Functions など) も、データベースへのプライベート接続を実現できます。 このユース ケースの詳細については、Azure SQL データベースへのプライベート接続を使用する 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 におけるデータの流出とは、データベース管理者などのユーザーが、あるシステムからデータを抽出して、組織外の別の場所またはシステムに移動できる場合です。 たとえば、ユーザーがデータを Microsoft 以外のエンティティが所有するストレージ アカウントに移動することが考えられます。

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 への接続を拒否できるように、Service Tag = SQL のトラフィックを拒否する NSG ルール (優先度を高く設定) を指定します。

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

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