Azure Private Link for Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse は、将来のアーキテクチャ、組み込みの AI、および新機能を備えた、Data Lake 基盤上のエンタープライズ 規模のリレーショナル ウェアハウスです。 データ ウェアハウスを初めて使用する場合は、Fabric Data Warehouseから始めます。 既存の dedicated SQL プール ワークロードは、Fabric にアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

Azure Private Linkを使えば、プライベートエンドポイントを通じてSynapse SQLに接続できます。 プライベートエンドポイントとは、仮想ネットワークおよびサブネット内のプライベートIPアドレスを持つネットワークインターフェースのことです。 トラフィックは公共のインターネットを通らず、Microsoftのバックボーンネットワーク上に留まります。

すべてのクライアント ドライバーとツールの接続文字列には、常にサーバー (<server>.database.windows.net) の完全修飾ドメイン名 (FQDN) を使用します。 プライベートIPアドレスやプライベートリンクFQDN(<server>.privatelink.database.windows.net)を使う認証試みは機能しません。 この動作は仕様です。これは、プライベート エンドポイントがトラフィックを SQL ゲートウェイにルーティングし、認証要求を正しくルーティングするには正しい FQDN が必要であるためです。

作成プロセス

Azureポータル、PowerShell、またはAzure CLIを使ってプライベートエンドポイントを作成する:

承認プロセス

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

  1. Azureポータルのサーバーリソースにアクセスしてください。

  2. プライベート エンドポイントの承認ページに移動してください。 Azure Synapse AnalyticsのSQLサーバーリソースのリソースメニューのセキュリティ欄で、Private endpoint connectionsを選択します。

  3. 以下をご覧ください:

    • すべてのプライベートエンドポイント接続(PEC)の一覧
    • 作成済みのプライベートエンドポイント(PE)
  4. プライベートエンドポイントがない場合は、「 プライベートエンドポイントを作成する」を選択して作成してください。 それ意外の場合は、一覧から個々の PEC を選択します。

  5. SQL管理者はPECの承認または拒否を行い、オプションで短いテキスト応答を追加できます。

  6. 承認または却下の後、リストは適切な状態と回答文を反映します。

  7. プライベートエンドポイント名を選択してください。

    この操作は プライベートエンドポイント の概要ページに移動します。 プライベート エンドポイント接続のネットワーク インターフェイスの詳細を表示するには、ネットワーク インターフェイス リンクを選択してください。

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

Important

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

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

Azure Synapse Analytics SQL サーバーでは、論理サーバーへのすべての公開アクセスを無効にし、仮想ネットワークからの接続のみを許可できます。

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

  1. 論理サーバーの [ネットワーク] ページに移動します。
  2. [パブリック ネットワーク アクセスの拒否] チェックボックスをオンにします。

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

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

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

  2. その後、以下のツールを使って、VMがプライベートエンドポイント経由でSQLデータベースに接続しているかを確認するための基本的な接続チェックを行うことができます。

Telnetを使って接続を確認します

TelnetはWindowsの機能で、接続性をテストするために使えます。 Windowsのバージョンによっては、この機能を明示的に有効にする必要があるかもしれません。

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

telnet 10.9.0.4 1433

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

PowerShellを使って接続性を確認してください

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(Network Mapper)は、ネットワーク発見およびセキュリティ監査のための無料かつオープンソースのツールです。 詳細およびダウンロードリンクについては、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 を使用します。 IPアドレスに直接、またはプライベートリンクFQDN(<server>.privatelink.database.windows.net)を利用したログイン試行は失敗します。 この動作は意図的なもので、プライベートエンドポイントはそのリージョン内のSQLゲートウェイにトラフィックをルーティングします。 ログインが成功するには正しいFQDNを指定する必要があります。

「 SSMSを使ってSQLデータベースに接続する」の手順に従ってください。 SSMSを使って接続した後、以下のクエリは接続元のAzure VMのプライベートIPアドレスに一致するclient_net_addressを返します。

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

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

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

Private Linkを使えば、ExpressRoute、プライベートピアリング、VPNトンネリングを利用してプライベートエンドポイントへのクロスプレミスアクセスが可能になります。 その後、パブリックエンドポイントを通じたすべてのアクセスを無効にし、IPベースのファイアウォールを使用してIPアドレスを許可しないようにできます。

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

さらに、仮想ネットワークで直接実行されているわけではないが、仮想ネットワークと統合されているサービス (App Service Web Apps や Functions など) も、データベースへのプライベート接続を実現できます。

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

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

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

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

オンプレミス環境から VPN 経由で接続する

オンプレミス環境からの接続を確立するには、以下のいずれかのオプションを選択し実装してください:

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

PolyBaseとCOPY文を使ってAzure Synapse AnalyticsからAzure Storageへ接続する

PolyBaseとCOPY文を使って、Azure StorageアカウントからAzure Synapse Analyticsにデータを読み込みます。 もしデータの読み込み元である Azure Storage アカウントが、プライベート エンドポイント、サービス エンドポイント、または IP ベースのファイアウォールを使用して、特定の仮想ネットワーク サブネットのセットからのアクセスのみに制限されている場合、PolyBase と COPY ステートメントからそのアカウントへの接続が失われます。 仮想ネットワークにセキュリティで保護された Azure Storage に接続する Azure Synapse Analytics でインポートとエクスポートの両方のシナリオを有効にするには、「 Azure Storage で仮想ネットワーク サービス エンドポイントを使用する影響」を参照してください。

データの流出防止

データ漏出とは、データベース管理者のようなユーザーが、あるシステムからデータを抽出し、組織外の別の場所やシステムに移動させるときに起こります。 たとえば、ユーザーがデータを Microsoft 以外のエンティティが所有するストレージ アカウントに移動することが考えられます。

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

  1. 公開エンドポイントを通じたSQL DatabaseへのすべてのAzureサービストラフィックを無効化し、「Allow Azure Services」をオフに設定してください。 サーバーやデータベースレベルのファイアウォールルールでIPアドレスを許可していないことを確認してください。 詳細については、Azure Synapse Analytics ネットワークアクセス制御をご覧ください。
  2. VMのプライベートIPアドレスへのトラフィックのみを許可してください。 詳細については、 仮想ネットワークファイアウォールルールをご覧ください。
  3. Azure VMでは、ネットワークセキュリティグループ(NSG)とサービスタグを使って、以下の通り送信接続の範囲を絞り込みます。
    • サービスタグ = SQL.WestUs のトラフィックを許可する NSG ルールを指定し、米国西部の SQL Database への接続のみを許可します。
    • Service Tag = のトラフィックを拒否する、SqlNSG ルールを指定します。これにより、すべてのリージョンで SQL Database への接続が拒否されます。

このセットアップの最終段階では、Azure VMは米国西部地域のリソースにのみ接続可能です。 しかし、接続性は単一のデータベースに限定されません。 VMはサブスクリプションに含まれていないデータベースを含め、米国西部地域のどのデータベースにも接続可能です。 前述のシナリオでデータ流出の範囲を特定の地域に縮小しましたが、完全に排除したわけではありません。

Private Linkを使うことで、NSGのようなネットワークアクセス制御を設定し、プライベートエンドポイントへのアクセスを制限できます。 個々のAzure PaaSリソースを特定のプライベートエンドポイントにマッピングできます。 悪意のある内部者はマッピングされたPaaSリソースのみにアクセスでき、他のリソースにはアクセスできません。