共用方式為


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

適用於:Azure SQL 資料庫Azure Synapse Analytics (僅限專用的 SQL 集區)

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

根據預設,邏輯伺服器會拒絕所有連線,以確保安全性。 您可以使用下列一或多個網路訪問控制,選擇性地允許透過 公用端點存取資料庫

  • 基於 IP 位址的防火牆規則:使用此功能可明確允許來自特定 IP 位址的連線。 例如,從內部部署機器或IP位址範圍指定開始和結束IP位址。

  • 允許 Azure 服務和資源存取伺服器:啟用時,Azure 界限內的其他資源即可存取 SQL Database 例如,Azure 虛擬機器可以存取 SQL Database 資源。

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

  • 虛擬網路防火牆規則:使用此功能可允許來自 Azure 界限內特定虛擬網路的流量。

  • 私人連結:使用此功能可為特定虛擬網路內的 Azure 中的邏輯伺服器建立私人端點。

重要

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

IP 防火牆規則

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

防火牆規則有兩種類型:

  • 伺服器層級防火牆規則:這些規則會套用至伺服器上的所有資料庫。 您可以透過 Azure 入口網站、PowerShell 或 T-SQL 命令來設定它們,例如 sp_set_firewall_rule
  • 資料庫層級防火牆規則:這些規則適用於個別資料庫,而且只能使用 sp_set_database_firewall_rule 之類的 T-SQL 命令來設定

以下是命名防火牆規則的條件約束:

  • 防火牆規則名稱不能是空的。
  • 它不能包含下列字元:<, >, *, %, &, :, \\, /, ?.
  • 它不能以句號 (.. ) 結束。
  • 防火牆規則名稱不能超過128個字元。

任何建立不符合這些條件約束的防火牆規則嘗試都失敗,並出現錯誤訊息。 對現有IP型防火牆規則所做的任何修改最多可能需要5分鐘才會生效。

允許 Azure 服務

根據預設,從 Azure 入口網站建立新的邏輯伺服器時,沒有勾選且沒有啟動 [允許 Azure 服務和資源存取此伺服器]。 當允許使用公用端點連線時,就會出現此設定。

您也可以在按照如下方式建立邏輯伺服器之後,透過網路設定變更這項設定:

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

當啟用 [允許 Azure 服務及資源存取此伺服器] 時,您的伺服器即可從 Azure 界限內的所有資源進行通訊,這些資源可以是,也可以不是您訂用帳戶的一部分。 在幕後,會新增特殊的伺服器層級防火牆規則,其開頭和結尾是ip位址為 0.0.0.0

在許多情況下,啟用設定對大多數客戶來說都過於寬鬆。 您可能想要取消選取此設定,並將其取代為限制更嚴格的IP防火牆規則,或使用其中一個選項進行私人存取。

重要

選取 [允許 Azure 服務和資源存取此伺服器] 會新增 IP 型防火牆規則,開頭和結束 IP 位址為 0.0.0.0

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

匯入匯出服務

未啟用 [允許 Azure 服務和資源存取此伺服器] 時,匯入匯出服務無法運作。 不過,您可以從 Azure VM 手動執行 SqlPackage,或使用 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 服務和資源存取此伺服器] 設定。

Sql 服務標籤

服務標籤可用於安全性規則,以及從用戶端路由至 SQL Database。 服務標籤可在網路安全組、Azure 防火牆和使用者定義的路由中使用,方法是在安全性規則的來源或目的地欄位中指定服務標籤。 Sql 服務標籤是由 SQL Database 使用的所有 IP 位址所組成。 標記會依區域進一步區隔。 例如,Sql.WestUS 會列出美國西部 SQL Database 所使用的所有 IP 位址。

Sql 服務標籤是由建立連線性至閘道 IP 位址中所述之 SQL Database 所需的 IP 位址所組成。 此外,服務標籤也會與功能中使用的來自 SQL Database 的任何輸出流量產生關聯,例如:

SqlManagement 服務標籤

SqlManagement 服務標籤用於針對 SQL Database 的控制平面作業。

虛擬網路防火牆規則

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

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