連線方式的選擇取決於你的安全性需求、預算以及容器部署的位置(是 Azure 內的 AKS/App Service,還是地端的實體伺服器)。
以下是三個選項的比較與建議:
1. 建議選擇:公用端點 (Public Endpoint) + 防火牆
最適合:初期開發、預算有限、或部署在校內伺服器的 Container。
- 原理:SQL Server 有一個公用 IP,但預設封鎖所有連線。你必須在「防火牆設定」中手動加入 Container 主機的 IP,或勾選「允許 Azure 服務存取」。
- 優點:
- 設定最簡單,不需要複雜的虛擬網路 (VNet) 設定。
- 零額外成本(私人端點需要額外付費)。
- 缺點:雖然有防火牆擋著,但資料庫在網際網路上仍有「門牌號碼」,理論上暴露風險比私人端點高一點點。
- 如何設定:選此項後,記得去 SQL Server 的「網路」設定中,將「允許 Azure 服務和資源存取此伺服器」勾選為 「是」。
2. 進階選擇:私人端點 (Private Endpoint)
最適合:對資安要求極高、且 Container 部署在 Azure 虛擬網路 (VNet) 內。
- 原理:給你的 SQL Server 一個私有 IP(例如
10.0.0.5)。你的 Container 必須透過虛擬網路才能連到它。 - 優點:最高安全性。資料庫完全不暴露在公用網際網路,連 IP 都掃不到。
- 缺點:
- 成本較高:Private Link 每小時會收費,且有資料處理費用。
- 設定複雜:需要管理 DNS 區域(Private DNS Zone)和虛擬網路對接。
- 適用情況:如果你的校務系統部署在 Azure Kubernetes Service (AKS) 或 App Service (有連到 VNet),且要求資料絕對不能出現在公用網路。
3. 不建議:沒有存取權
這只是「延後設定」。如果你現在選這個,稍後還是要進去後台選擇「公用」或「私人」。
總結建議:我該選哪一個?
| 你的 Container 在哪裡? | 建議連線方法 | 原因 |
| Azure Container Apps / App Service | 公用端點 | 只要開啟「允許 Azure 服務存取」,就能輕鬆連線,且不用多花錢。 |
| 校內機房的 Docker 實體機 | 公用端點 | 你只需將學校的公用 IP 加入 SQL 防火牆白名單即可。 |
| 重視資安的 AKS / 企業級環境 | 私人端點 | 符合內部稽核,資料傳輸完全走內部網路。 |
💡 開發小技巧:
如果你是初次建立,建議先選 「公用端點」。
因為私人端點如果 DNS 沒設好,你的 Python 程式碼會一直連不上(出現
Login timeout或Server not found),這會讓開發初期除錯變得非常痛苦。
當您從 快速入門:建立單一資料庫 – 適用於 Azure SQL Database 和 Azure Synapse Analytics 建立邏輯伺服器時,結果是一個格式為: yourservername.database.windows.net 的公用端點。
根據預設,邏輯伺服器會拒絕所有連線,以確保安全性。 您可以使用下列一或多個網路訪問控制,選擇性地允許透過 公用端點存取資料庫
- 基於 IP 位址的防火牆規則:使用此功能可明確允許來自特定 IP 位址的連線。 例如,從內部部署機器或IP位址範圍指定開始和結束IP位址。
- 允許 Azure 服務和資源存取伺服器:啟用時,Azure 界限內的其他資源即可存取 SQL Database 例如,Azure 虛擬機器可以存取 SQL Database 資源。
您也可以透過下列方式,允許從虛擬網路進行資料庫的私人存取:
- 虛擬網路防火牆規則:使用此功能可允許來自 Azure 界限內特定虛擬網路的流量。
- 私人連結:使用此功能可為特定虛擬網路內的 Azure 中的邏輯伺服器建立私人端點。
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 位址。
PowerShell
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 位址的格式,如下所示:
PowerShell
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 位址格式。
PowerShell
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 服務標籤包括了用於連接到 SQL Database 所需的 IP 位址,這些位址已在 閘道 IP 位址 中詳細記載。 此外,服務標籤也會與功能中使用的來自 SQL Database 的任何輸出流量產生關聯,例如:
- 適用於 Azure SQL 資料庫和 Azure Synapse Analytics 的稽核
- 弱點評估
- 匯入或匯出 Azure SQL Database,而不允許 Azure 服務存取伺服器
- OPENROWSET
- 大量插入
- sp_invoke_external_rest_endpoint
- 總帳
- PowerShell 和 Azure CLI:使用 Azure Key Vault 中的客戶自控金鑰來啟用透明資料加密
虛擬網路防火牆規則
針對 Azure SQL Database 中的伺服器使用虛擬網路服務端點和規則 ,可讓您更輕鬆地從包含 VM 的特定子網建立和管理存取權。
Private Link
Private Link 可讓您透過私人端點連線到伺服器。 私人端點為特定虛擬網路和子網路內的私人 IP 位址。