適用於 Azure SQL Database 和 Azure Synapse Analytics 的 Azure Private Link
適用于:Azure SQL Database
Azure Synapse Analytics (專用 SQL 集區, (先前稱為 SQL DW) )
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 集區。
如何設定 Private Link
建立程序
您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來建立私人端點:
核准流程
網路管理員建立私人端點 (PE) 後,SQL 管理員就可以管理 SQL Database 的私人端點連線 (PEC)。
依照下列螢幕擷取畫面中所示的步驟,導覽至 Azure 入口網站中的伺服器資源
- (1) 在左窗格中選取私人端點連線
- (2) 顯示所有私人端點連線 (PEC) 的清單
- (3) 已建立對應的私人端點 (PE)
從清單中選取個別的 PEC。
SQL 管理員可以選擇核准或拒絕 PEC,並選擇性地新增簡短文字回應。
核准或拒絕之後,清單會反映適當的狀態以及回應文字。
重要
當您新增私人端點連線時,預設不會封鎖對邏輯伺服器的公用路由。 在 [防火牆與虛擬網路] 窗格中,預設不會選取 [拒絕公用網路存取] 設定。 若要停用公用網路存取,請確定選取 [拒絕公用網路存取]。
停用邏輯伺服器的公用存取
在此案例中,假設您想要停用邏輯伺服器的所有公用存取,並且只允許來自虛擬網路的連線。
首先,請確定已啟用並設定您的私人端點連線。 然後,若要停用邏輯伺服器的公用存取:
測試從相同虛擬網路中的 Azure VM 連線到 SQL Database
在此案例中,假設您已在與私人端點相同的虛擬網路中,建立執行新版 Windows 的 Azure 虛擬機器。
接著,您可以使用下列工具執行一些基本連線檢查,以確保 VM 可透過私人端點連接到 SQL Database:
- Telnet
- Psping
- Nmap
- SQL Server Management Studio (SSMS)
使用 Telnet 檢查連線能力
Telnet 用戶端是一項 Windows 功能,可以用來測試連線能力。 視 Windows 作業系統的版本而定,您可能需要明確地啟用此功能。
在您安裝 Telnet 之後,請開啟 [命令提示字元] 視窗。 執行 Telnet 命令,並指定 SQL Database 資料庫的 IP 位址和私人端點。
>telnet 10.9.0.4 1433
當 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
限制
私人端點的連線僅支援 Proxy 作為連線原則
透過私人對等互連的內部部署連線
當客戶從內部部署機器連線到公用端點時,他們的 IP 位址必須透過伺服器層級防火牆規則來新增至以 IP 為基礎的防火牆。 雖然此模型可針對開發或測試工作負載來允許個別機器的存取,但難以在生產環境中進行管理。
透過 Private Link,客戶可以使用 ExpressRoute、私人對等互連或 VPN 通道來啟用私人端點的跨單位存取。 接著,客戶就可以停用所有透過公用端點的存取,而不使用以 IP 為基礎的防火牆來允許任何 IP 位址。
適用於 Azure SQL Database 的 Private Link 使用案例
用戶端可以從相同的虛擬網路、相同區域中的對等式虛擬網路,或透過跨區域虛擬網路連線的虛擬網路,連線到連線到私人端點。 此外,用戶端可以使用 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 上限制公用端點的存取。
- 將 [允許 Azure 服務] 設為 [關閉],即可阻止所有 Azure 服務流量透過公用端點流向 SQL Database。 請確定伺服器和資料庫層級防火牆規則中不允許任何 IP 位址。 如需詳細資訊,請參閱 Azure SQL Database 和 Azure Synapse Analytics 網路存取控制。
- 僅允許使用 VM 的私人 IP 位址對 SQL Database 資料庫傳送流量。 如需詳細資訊,請參閱有關服務端點和虛擬網路防火牆規則的文章。
- 在 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 資料庫),不能存取其他資源。
後續步驟
- 如需 Azure SQL Database 安全性的概觀,請參閱保護您的資料庫
- 如需 Azure SQL Database 連線的概觀,請參閱 Azure SQL 連線架構
- 您可能也會想了解 Azure SQL Database 的 Web 應用程式私人連線架構案例,這會將虛擬網路外部的 Web 應用程式連線到資料庫的私人端點。