適用於 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 Synapse Analytics 工作區中的 Azure SQL 受控執行個體或專用 SQL 集區。

建立程序

您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來建立私人端點:

核准流程

網路管理員建立私人端點 (PE) 後,SQL 管理員就可以管理 SQL Database 的私人端點連線 (PEC)。

  1. 在 [Azure 入口網站]中,瀏覽至您的伺服器資源。

  2. 瀏覽至私人端點核准頁面:

    • 在 Azure SQL 資料庫中的資源功能表的 [安全性] 底下,選取 [網路]。 選取 [私人存取] 索引標籤。
    • 在 Synapse 工作區中 [資源] 功能表的 [安全性] 底下,選取 [私人端點連線]
  3. 此頁面會顯示下列內容:

    • 所有私人端點連線 (PEC) 的清單
    • 已建立的私人端點 (PE)

    顯示如何尋找伺服器資源私人端點連線清單的螢幕擷取畫面。

  4. 如果沒有私人端點,請使用 [建立私人端點]按鈕建立一個端點。 否則,從清單中選取個別的 PEC。

    顯示如何在 Azure 入口網站中選取私人端點連線的螢幕擷取畫面。

  5. SQL 管理員可以選擇核准或拒絕 PEC,並選擇性地新增簡短文字回應。

    顯示如何在 Azure 入口網站中核准 PEC 的螢幕擷取畫面。

  6. 核准或拒絕之後,清單會反映適當的狀態以及回應文字。

    顯示管理員核准後處於已核准狀態的 PEC 的螢幕擷取畫面。

  7. 最後,選取私人端點名稱

    顯示端點名稱為 PEC 詳細資料的螢幕擷取畫面。

    這會帶您前往 [私人端點] 概觀頁面。 選取 [網路介面] 連結,以取得私人端點連線的網路介面詳細資料。

    顯示私人端點連線的 NIC 詳細資料的螢幕擷取畫面。

    [網路介面]頁面會顯示私人端點連線的私人 IP 位址。

    顯示私人端點連線的私人 IP 位址的螢幕擷取畫面。

重要

當您新增私人端點連線時,預設不會封鎖邏輯伺服器的公用路由。 在 [防火牆與虛擬網路]窗格中,根據預設,不會選取[拒絕公用網路存取] 設定。 若要停用公用網路存取,請確定選取 [拒絕公用網路存取]。

停用邏輯伺服器的公用存取

在 Azure SQL 資料庫邏輯 SQL Server 中,假設您想要停用邏輯伺服器的所有公用存取,並只允許來自您虛擬網路的連線。

首先,請確定已啟用並設定您的私人端點連線。 然後,若要停用邏輯伺服器的公用存取:

  1. 前往邏輯伺服器的 [網路] 頁面。

  2. 選取 [拒絕公用網路存取] 核取方塊。

    顯示如何停用私人端點連線公用網路存取的螢幕擷取畫面。

測試從相同虛擬網路中的 Azure VM 連線到 SQL Database

在此案例中,假設您已在與私人端點相同的虛擬網路中,建立執行新版 Windows 的 Azure 虛擬機器。

  1. 啟動遠端桌面 (RDP) 工作階段並連線至虛擬機器

  2. 接著,您可以使用下列工具執行一些基本連線檢查,以確保 VM 可透過私人端點連接到 SQL Database:

使用 Telnet 檢查連線能力

Telnet 用戶端是一項 Windows 功能,可以用來測試連線能力。 視 Windows 作業系統的版本而定,您可能需要明確地啟用此功能。

在您安裝 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 位址。

使用 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

結果會顯示某個 IP 位址已啟動;該位址會對應至私人端點的 IP 位址。

使用 SQL Server Management Studio (SSMS) 檢查連線能力

注意

在用戶端的連接字串中,使用伺服器的完整網域名稱 (FQDN) (<server>.database.windows.net)。 任何直接對 IP 位址進行或使用私人連結 FQDN (<server>.privatelink.database.windows.net) 的登入嘗試都會失敗。 這是刻意設計的行為,因為私人端點會將流量路由至區域中的 SQL 閘道,而且必須指定正確的 FQDN,登入才會成功。

請遵循此處的步驟來使用 SSMS 連線到 SQL Database。 使用 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 資料提供者、Core .NET SqlClient 資料提供者和 JDBC (版本 9.4 或更新版本) 驅動程式中包含重新導向支援。 來自所有其他驅動程式的連線會進行代理。

符合必要條件之後,用戶端必須明確選擇 [重新導向]連線原則

如果無法修改防火牆設定以允許在 1433-65535 連接埠範圍內進行輸出存取,替代解決方案是將連線原則變更為 Proxy

使用預設連線原則的現有私人端點應進行 Proxy 處理,亦即它們將使用 Proxy 連線原則搭配連接埠 1433。 這樣做的原因是為了避免用戶端流量因為重新導向的必要連接埠範圍未開啟而發生中斷,無法到達 SQL Database。

透過私人對等互連的內部部署連線

當客戶從內部部署機器連線到公用端點時,他們的 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 儲存體

PolyBase 和 COPY 陳述式通常用於將資料從 Azure 儲存體帳戶載入 Azure Synapse Analytics。 如果您正在載入資料的來源 Azure 儲存體帳戶限制只能透過私人端點、服務端點或 IP 型防火牆存取一組虛擬網路子網路,則從 PolyBase 和 COPY 陳述式到帳戶的連線會中斷。 若要在 Azure Synapse Analytics 連線至固定到虛擬網路的 Azure 儲存體時,啟用匯入和匯出案例,請按照這裡提供的步驟執行作業。

預防資料外洩

當使用者 (例如資料庫管理員) 可以從某個系統擷取資料,並將資料移至組織外部的另一個位置或系統時,Azure SQL Database 中就會發生資料外流。 例如,使用者將資料移至第三方所擁有的儲存體帳戶。

請考慮這樣的案例:使用者在連線到 SQL Database 資料庫的 Azure 虛擬機器內執行 SQL Server Management Studio (SSMS)。 此資料庫位於美國西部的資料中心。 下列範例示範如何使用網路存取控制,在 SQL Database 上限制公用端點的存取。

  1. 將 [允許 Azure 服務] 設為 [關閉],即可阻止所有 Azure 服務流量透過公用端點流向 SQL Database。 請確定伺服器和資料庫層級防火牆規則中不允許任何 IP 位址。 如需詳細資訊,請參閱 Azure SQL Database 和 Azure Synapse Analytics 網路存取控制
  2. 僅允許使用 VM 的私人 IP 位址對 SQL Database 資料庫傳送流量。 如需詳細資訊,請參閱有關服務端點虛擬網路防火牆規則的文章。
  3. 在 Azure VM 上,使用網路安全性群組 (NSG) 和服務標籤來縮小傳出連線的範圍,如下所示。
    • 指定 NSG 規則,以允許服務標記 = SQL.WestUs 的流量 - 僅允許連線到位於美國西部的 SQL Database。
    • 指定 NSG 規則 (使用較高的優先順序) 以拒絕服務標籤 = SQL 的流量 - 拒絕連線到所有區域中的 SQL Database。

在此設定結束時,Azure VM 只能連線到美國西部區域的 SQL Database 資料庫。 不過,連線並不限於單一 SQL Database 資料庫。 VM 仍然可以連線到美國西部區域的任何資料庫,包括不屬於訂用帳戶的資料庫。 雖然在上述案例中,我們已將資料外泄範圍縮減到特定區域,但我們尚未完全消除此問題。

透過 Private Link,客戶現在可以設定網路存取控制 (例如 NSG) 來限制私人端點的存取。 這麼一來,個別的 Azure PaaS 資源就會對應到特定的私人端點。 懷有惡意的測試人員只能存取對應的 PaaS 資源 (例如 SQL Database 資料庫),不能存取其他資源。