Tip
Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。
透過使用 Azure Private Link,你可以透過私有端點連接 Synapse SQL。 私有端點是在你的虛擬網路和子網路中,擁有私有 IP 位址的網路介面。 流量會留在 Microsoft 骨幹網路上,而不是透過公共網際網路。
務必在所有客戶端驅動程式和工具的連接字串中使用伺服器的完整限定網域名稱(FQDN)<server>.database.windows.net。 使用私有 IP 位址或私有連結 FQDN(<server>.privatelink.database.windows.net) 的驗證嘗試無法成功。 此行為是設計所致,因為私有端點會將流量路由至 SQL 閘道器,而 SQL 閘道器需要正確的 FQDN 才能成功路由驗證請求。
如何設定 Private Link
創建過程
可透過 Azure 入口網站、PowerShell 或 Azure CLI 建立私有端點:
核准流程
網路管理員建立私有端點(PE)後,SQL 管理員可以管理到 SQL 資料庫的私有端點連線(PEC)。
請前往 Azure 入口網站的伺服器資源。
前往私有端點審核頁面。 在 Azure Synapse Analytics SQL 伺服器資源中,資源選單的安全性選項中,選擇私人端點連線。
請查看以下內容:
- 所有私有端點連線(PEC)列表
- 建立私有端點(PE)
如果沒有私有端點,請選擇「 建立私有端點」來建立一個。 否則,從清單中選取個別的 PEC。
SQL 管理員可以批准或拒絕 PEC,並可選擇新增短文字回應。
在核准或拒絕後,清單會反映相應的狀態及回應文字。
選取該私人端點名稱。
此操作會帶您前往 私有端點 概覽頁面。 選擇 「網路介面」 連結,即可查看私有端點連線的網路介面細節。
[網路介面]頁面會顯示私人端點連線的私人 IP 位址。
Important
當您新增私人端點連線時,預設不會封鎖邏輯伺服器的公用路由。 在 [防火牆與虛擬網路]窗格中,根據預設,不會選取[拒絕公用網路存取] 設定。 若要停用公用網路存取,請確定選取 [拒絕公用網路存取]。
停用邏輯伺服器的公用存取
在你的 Azure Synapse Analytics SQL 伺服器中,你可以停用所有對邏輯伺服器的公開存取,並只允許來自你的虛擬網路的連線。
首先,請確定已啟用並設定您的私人端點連線。 然後,若要停用邏輯伺服器的公用存取:
- 前往邏輯伺服器的 [網路] 頁面。
- 選取 [拒絕公用網路存取] 核取方塊。
測試從相同虛擬網路中的 Azure VM 連線到 SQL Database
在這個情境中,假設你建立了一台 Azure 虛擬機器(VM),在與私有端點相同的虛擬網路中執行較新的 Windows 版本。
接著你可以透過以下工具進行基本的連接檢查,確保虛擬機是透過私有端點連接到 SQL 資料庫:
- 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 檢查連線
使用 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 可以 ping 與私有端點相關的私有 IP 位址。
使用 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
結果顯示有一個 IP 位址處於正常運作狀態,對應於私有端點的 IP 位址。
使用 SQL Server Management Studio(SSMS)檢查連線狀況
在用戶端的連接字串中,使用伺服器的完整網域名稱 (FQDN) (<server>.database.windows.net)。 任何直接對 IP 位址進行的登入嘗試,或使用私有連結 FQDN(<server>.privatelink.database.windows.net)的嘗試都會失敗。 這種行為是刻意設計如此,因為私有端點會將流量路由至該區域中的 SQL 閘道器。 登入成功需要指定正確的 FQDN。
請依照 使用 SSMS 連接 SQL 資料庫的步驟操作。 使用 SSMS 連線後,下列查詢會回傳client_net_address,與你用來連線的 Azure 虛擬機私有 IP 位址相符:
SELECT client_net_address
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
透過私人對等互連的內部部署連線
當你從本地機器連接到公共端點時,你需要使用伺服器層級防火牆規則,將你的 IP 位址加入基於 IP 的防火牆。 雖然此模型可針對開發或測試工作負載來允許個別機器的存取,但難以在生產環境中進行管理。
透過使用 Private Link,您可以透過 ExpressRoute、私有對等或 VPN 隧道,實現對私有端點的跨地端存取。 你可以停用所有透過公共端點的存取,且不使用以 IP 為基礎的防火牆來允許任何 IP 位址存取。
Private Link 的使用案例
用戶端可從同一虛擬網路、同一區域內的對等虛擬網路,或透過跨區域的虛擬網路對虛擬網路連線連接至私人端點。 此外,用戶端可透過 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 儲存體
使用 PolyBase 和 COPY 語句,從 Azure 儲存體 帳戶載入資料到 Azure Synapse Analytics。 如果你從 Azure 儲存體 帳號載入資料,透過私有端點、服務端點或 IP 型防火牆限制只能存取一組虛擬網路子網,那麼從 PolyBase 和 COPY 陳述式到該帳戶的連線就會中斷。 若要啟用 Azure Synapse Analytics 連接到已安全控管至虛擬網路的 Azure 儲存體以進行匯入和匯出情境,請參閱 使用虛擬網路服務端點與 Azure 儲存體的影響。
預防資料外洩
資料外傳是指使用者(例如資料庫管理員)從一個系統擷取資料,並將其移至組織外的其他地點或系統。 例如,使用者將資料移至非 Microsoft 實體所擁有的儲存體帳戶。
請考慮這樣的案例:使用者在連線到 SQL Database 資料庫的 Azure 虛擬機器內執行 SQL Server Management Studio (SSMS)。 此資料庫位於美國西部的資料中心。 以下範例展示了如何透過網路存取控制限制公共端點的存取。
- 將 允許 Azure 服務 設為 關閉,即可停用所有透過公用端點連線至 SQL Database 的 Azure 服務流量。 確保伺服器層級和資料庫層級的防火牆規則不允許任何 IP 位址。 欲了解更多資訊,請參閱 Azure Synapse Analytics 網路存取控制。
- 只允許流量到虛擬機的私有 IP 位址。 欲了解更多資訊,請參閱 虛擬網路防火牆規則。
- 在 Azure 虛擬機上,請使用網路安全群組(NSG)和服務標籤,縮小出站連線範圍,具體如下:
- 指定一個 NSG 規則,允許 Service Tag =
SQL.WestUs的流量,但僅允許連線到美國西部的 SQL 資料庫。 - 指定一個優先 權較高 的 NSG 規則來拒絕服務標籤 =
Sql的流量 - 拒絕所有區域的 SQL 資料庫連線。
- 指定一個 NSG 規則,允許 Service Tag =
在此設定結束後,Azure 虛擬機只能連接美國西部區域的資源。 然而,連線方式並不限於單一資料庫。 虛擬機仍可連接美國西部地區的任何資料庫,包括不屬於訂閱的資料庫。 雖然你將前述情境中資料外洩的範圍縮小到特定區域,但你並沒有完全消除它。
透過使用 Private Link,你可以設定網路存取控制,如 NSG,限制對私有端點的存取。 你可以將個別 Azure PaaS 資源映射到特定的私有端點。 惡意內部人員只能存取映射的 PaaS 資源,無法存取其他資源。