Azure SQL Database 和 Azure Synapse Analytics 的網路存取控制

當透過 Azure 入口網站為 Azure SQL Database 和 Azure Synapse Analytics 建立邏輯 SQL 伺服器時,結果會出現公用端點,格式為 yourservername.database.windows.net

您可以使用下列網路存取控制,選擇性地允許透過公用端點存取資料庫:

  • 允許 Azure 服務:設為 [開啟] 時,Azure 界限內的其他資源 (例如 Azure 虛擬機器) 即可存取 SQL Database
  • IP 防火牆規則:使用此功能可明確允許來自特定 IP 位址的連線,例如從內部部署機器

您也可以透過下列方式,允許從虛擬網路進行資料庫的私人存取:

  • 虛擬網路防火牆規則:使用此功能可允許來自 Azure 界限內特定虛擬網路的流量
  • Private Link:使用此功能可為特定虛擬網路內的邏輯 SQL 伺服器建立私人端點

重要

本文「不」適用於 SQL 受控執行個體。 如需網路設定的詳細資訊,請參閱連線到 Azure SQL 受控執行個體

請觀看以下影片,以取得這些存取控制和其用途的概要說明:

允許 Azure 服務

根據預設,透過 Azure 入口網站建立新的邏輯 SQL 伺服器期間,此設定會設定為 [關閉]。 當允許使用公用服務端點連線時,就會出現此設定。

您也可以在按照如下方式建立邏輯 SQL 伺服器之後,透過防火牆窗格變更這項設定。

管理伺服器防火牆的螢幕擷取畫面

當設定為 [開啟] 時,伺服器即允許來自 Azure 界限內所有資源的通訊,這些資源不一定是您訂閱的一部分。

在許多情況下,[開啟] 設定對大多數客戶來說都過於寬鬆。 建議將此設定設為 [關閉],並將其取代為更嚴格的 IP 防火牆規則或虛擬網路防火牆規則。

不過,這麼做會影響下列功能,因為這些功能是在 Azure 中的虛擬機器上執行,而該虛擬機器不屬於您的虛擬網路,因此必須透過 Azure IP 位址連接到資料庫:

匯入匯出服務

當 [允許存取 Azure 服務] 設為 [關閉] 時,匯入匯出服務功能將無法運作。 不過,您可以從 Azure VM 手動執行 sqlpackage.exe,或使用 DACFx API 直接在程式碼中執行匯出,以解決此問題。

資料同步

若要在 [允許存取 Azure 服務] 設為 [關閉] 的情況下使用資料同步功能,您需要建立個別的防火牆規則項目,以透過 SQL 服務標籤,為裝載中樞資料庫的區域新增 IP 位址。 將這些伺服器層級防火牆規則新增至裝載中樞成員資料庫的伺服器 (這些伺服器可能位於不同區域)

使用下列 PowerShell 指令碼,產生對應到美國西部區域 SQL 服務標籤的 IP 位址

PS C:\>  $serviceTags = Get-AzNetworkServiceTag -Location eastus2
PS C:\>  $sql = $serviceTags.Values | Where-Object { $_.Name -eq "Sql.WestUS" }
PS C:\> $sql.Properties.AddressPrefixes.Count
70
PS C:\> $sql.Properties.AddressPrefixes
13.86.216.0/25
13.86.216.128/26
13.86.216.192/27
13.86.217.0/25
13.86.217.128/26
13.86.217.192/27

提示

就算指定了 Location 參數,Get-AzNetworkServiceTag 仍會傳回 SQL 服務標籤的全域範圍。 請務必將範圍篩選為裝載同步群組所用中樞資料庫的區域

請注意,PowerShell 指令碼的輸出是採無類別網域間路由 (CIDR) 標記法。 您必須使用 Get-IPrangeStartEnd.ps1 將其轉換成開始和結束 IP 位址的格式,類似如下:

PS C:\> Get-IPrangeStartEnd -ip 52.229.17.93 -cidr 26
start        end
-----        ---
52.229.17.64 52.229.17.127

您可以使用這個額外的 PowerShell 指令碼,將所有 IP 位址從 CIDR 轉換成開始和結束 IP 位址格式。

PS C:\>foreach( $i in $sql.Properties.AddressPrefixes) {$ip,$cidr= $i.split('/') ; Get-IPrangeStartEnd -ip $ip -cidr $cidr;}
start          end
-----          ---
13.86.216.0    13.86.216.127
13.86.216.128  13.86.216.191
13.86.216.192  13.86.216.223

您現在可以將它們新增為不同的防火牆規則,然後將 [允許 Azure 服務存取伺服器] 設定為 [關閉]。

IP 防火牆規則

IP 型防火牆是 Azure 中邏輯 SQL 伺服器的一項功能,可在您明確新增用戶端電腦的 IP 位址之前,防止對伺服器的所有存取。

虛擬網路防火牆規則

除了 IP 規則,伺服器防火牆還可讓您定義「虛擬網路規則」。
若要深入了解,請參閱 Azure SQL Database 的虛擬網路服務端點和規則,或觀看下列影片:

Azure 網路術語

當探索虛擬網路防火牆規則時,請注意下列 Azure 網路字詞

虛擬網路:您可以將虛擬網路與 Azure 訂閱建立關聯

子網路:虛擬網路包含子網路。 您有的任何 Azure 虛擬機器 (VM) 會指派給子網路。 一個子網路可以包含多個 VM 或其他計算節點。 虛擬網路外部的計算節點無法存取虛擬網路,除非您將安全性設定為允許存取。

虛擬網路服務端點:虛擬網路服務端點是一個子網路,其屬性值包含一或多個正式的 Azure 服務類型名稱。 本文探討 Microsoft.Sql 類型名稱,其參考名為 SQL Database 的 Azure 服務。

虛擬網路規則:伺服器的虛擬網路規則是伺服器存取控制清單 (ACL) 中所列的子網路。 子網路必須包含 Microsoft.Sql 類型名稱,才能列在 SQL Database 資料庫的 ACL 中。 虛擬網路規則會指示伺服器接受來自子網路上每個節點的通訊。

IP 與虛擬網路防火牆規則的比較

Azure SQL Database 防火牆可讓您指定 IP 位址範圍,以接受來自此範圍內的通訊進入 SQL Database。 此方法對 Azure 私人網路外部的穩定 IP 位址很適合。 不過,Azure 私人網路中的虛擬機器 (VM) 會設定為使用「動態」IP 位址。 當 VM 重新啟動時,動態 IP 位址可能會變更,而導致 IP 型防火牆規則失效。 在生產環境中,請勿在防火牆規則中指定動態 IP 位址。

您可以藉由取得 VM 的「靜態」IP 位址來解決這項限制。 如需詳細資料,請參閱使用 Azure 入口網站建立具有靜態公用 IP 位址的虛擬機器。 不過,靜態 IP 方法可能變得難以管理,而且大規模使用時成本很高。

虛擬網路規則是更簡單的替代方法,可讓您建立來自特定子網路 (包含 VM) 的存取,並加以管理。

注意

子網路上還不能有 SQL Database。 如果伺服器是虛擬網路中某個子網路的節點,則虛擬網路內的所有節點都可以與 SQL Database 通訊。 在此情況下,VM 可以與 SQL Database 通訊,而不需要任何虛擬網路規則或 IP 規則。

Private Link 可讓您透過私人端點連線到伺服器。 私人端點為特定虛擬網路和子網路內的私人 IP 位址。

後續步驟