Azure SQL 受控執行個體的連線架構
適用於:Azure SQL 受控執行個體
本文說明 Azure SQL 受控執行個體中的連線結構,以及元件如何引導受控執行個體的通訊流量。
概觀
在 SQL 受控執行個體中,執行個體位於專供受控執行個體使用的 Azure 虛擬網路和子網路內。 此部署提供:
- 安全的虛擬網路本機 (VNet 本機) IP 位址。
- 將內部部署網路連線到 SQL 受控執行個體的能力。
- 將 SQL 受控執行個體連線到連結伺服器或其他內部部署資料存放區的能力。
- 將 SQL 受控執行個體連線到 Azure 資源的能力。
高層級連線架構
SQL 受控執行個體是由裝載在專用隔離虛擬機器集合上的服務元件組成,這些虛擬機器按類似的設定屬性群組在一起並聯結成虛擬叢集。 某些服務元件部署在客戶的虛擬網路子網路內,而其他服務則是在 Microsoft 管理的安全網路環境中運作。
客戶應用程式可以連線到 SQL 受控執行個體,並且可以查詢和更新虛擬網路、對等互連虛擬網路或透過 VPN 或 Azure ExpressRoute 連線網路內的資料庫。
下圖顯示連線到 SQL 受控執行個體的實體, 也會顯示需要與受控執行個體通訊的資源。 圖表底部的通訊程序代表連線到 SQL 受控執行個體作為資料來源的客戶應用程式與工具。
SQL 受控執行個體是單一租用戶的平台即服務供應項目,可在兩個平面中運作:資料平面和控制平面。
資料平面部署在客戶的子網路之中,具有相容性、連線能力和網路隔離特性。 資料平面必須依賴 Azure 儲存體、Microsoft Entra ID (以前稱為 Azure Active Directory) 等 Azure 服務進行驗證,以及遙測收集服務。 您會看到源自子網路的流量,其中包含從 SQL 受控執行個體傳送至這些服務的流量。
控制平面可透過自動化代理程式,執行部署、管理和核心服務維護功能。 這些代理程式對於操作服務的計算資源,擁有獨佔存取權。 您無法使用 ssh
或遠端桌面通訊協定來存取這些主機。 所有控制平面通訊都經過加密並使用憑證加以簽署。 為了檢查通訊方的可信度,SQL 受控執行個體會使用憑證撤銷清單持續驗證這些憑證。
通訊概觀
應用程式可以透過三種類型的端點連線到 SQL 受控執行個體。 這些端點會提供不同的案例,並展現不同的網路屬性和行為。
VNet 本機端點
VNet 本機端點是連線至 SQL 受控執行個體的預設方法。 VNet 本機端點是 <mi_name>.<dns_zone>.database.windows.net
格式的網域名稱,可解析為子網路位址集區中的 IP 位址;因此稱為 VNet 本機,或虛擬網路的本機端點。 VNet 本機端點可在所有標準連線案例中用來連接 SQL 受控執行個體。
VNet 本機端點支援代理和重新導向連線類型。
連線到 VNet 本機端點時,請一律使用其網域名稱,因為基礎 IP 位址偶爾會變更。
公用端點
公用端點是 <mi_name>.public.<dns_zone>.database.windows.net
格式的選用網域名稱,可解析成能夠從網際網路連線的公用 IP 位址。 公用端點只允許 TDS 流量傳送到連接埠 3342 上的 SQL 受控執行個體,且無法用於整合案例,例如容錯移轉群組、受控執行個體連結和類似技術。
連線到公用端點時,請一律使用其網域名稱,因為基礎 IP 位址偶爾會變更。
不論連線類型設定為何,公用端點一律會使用代理連線類型。
深入了解如何設定公用端點,請參閱設定 Azure SQL 受控執行個體的公用端點。
私人端點
私人端點是另一個虛擬網路中的選用固定 IP 位址,可將流量引導到 SQL 受控執行個體。 一個 Azure SQL 受控執行個體可以在多個虛擬網路中有多個私人端點。 私人端點只允許 TDS 流量傳送到連接埠 1433 上的 SQL 受控執行個體,且無法用於整合案例,例如容錯移轉群組、受控執行個體連結及其他類似技術。
連線到私人端點時,請一律使用網域名稱,因為系統尚不支援透過其 IP 位址連線到 Azure SQL 受控執行個體。
不論連線類型設定為何,私人端點一律會使用代理連線類型。
深入了解私人端點及設定方式,請參閱 Azure SQL 受控執行個體的 Azure 私人連結。
虛擬叢集連線架構
下圖顯示虛擬叢集結構的概念性配置:
VNet 本機端點的網域名稱可解析為內部負載平衡器的私人 IP 位址。 雖然此網域名稱是在公用網域名稱系統 (DNS) 區域中註冊且可公開解析,但其 IP 位址屬於子網路的位址範圍,依預設,只能從其虛擬網路內部連線。
負載平衡器會將流量導向至 SQL 受控執行個體閘道。 因為多個受控執行個體可以在相同的叢集中執行,所以閘道會使用 SQL 受控執行個體主機名稱 (如連接字串所示) 來將流量重新導向到正確的 SQL 引擎服務。
當您建立叢集時會自動產生 dns-zone
的值。 如果新建立的叢集裝載次要受控執行個體,會與主要叢集共用其區域識別碼。
網路需求
Azure SQL 受控執行個體需要以特定方式設定委派子網路的各個層面,您可以使用服務輔助子網路設定來達成此目的。 除了服務所需之外,使用者還可完全控制其子網路網路設定,例如:
- 允許或封鎖部分或所有連接埠上的流量
- 將項目新增至路由表,以透過虛擬網路設備或閘道來路由傳送流量
- 設定自訂 DNS 解析,或
- 設定對等互連或 VPN
部署 SQL 受控執行個體的子網路必須滿足下列要求:
- 專用子網路:SQL 受控執行個體使用的子網路只能委派給 SQL 受控執行個體服務。 子網路不可以是閘道子網路,而且您只能在子網路中部署 SQL 受控執行個體資源。
- 子網路委派:SQL 受控執行個體子網路必須委派給
Microsoft.Sql/managedInstances
資源提供者。 - 網路安全性群組:網路安全性群組必須與 SQL 受控執行個體子網路相關聯。 當 SQL 受控執行個體設定為重新導向連線時,您可以使用網路安全性群組來控制對 SQL 受控執行個體資料端點的存取權,方法是篩選連接埠 1433 和連接埠 11000-11999 上的流量。 服務會自動佈建規則並保留為必要規則,以確保管理流量的流程不會中斷。
- 路由表:路由表必須與 SQL 受控執行個體子網路相關聯。 您可以將項目新增至此路由表,例如透過虛擬網路閘道將流量路由傳送至內部部署,或新增預設的 0.0.0.0/0 路由,以引導所有流量通過虛擬網路設備,例如防火牆。 Azure SQL 受控執行個體會自動佈建及管理其在路由表中的必要項目。
- 足夠的 IP 位址:SQL 受控執行個體子網路必須至少有 32 個 IP 位址。 如需詳細資訊,請參閱決定 SQL 受控執行個體的子網路大小。 設定現有網路以滿足 SQL 受控執行個體的網路需求之後,即可在現有網路中部署受控執行個體。 否則,請建立新的網路和子網。
- Azure 原則允許:如果您使用 Azure 原則防止在包含 SQL 受控執行個體子網路或虛擬網路的範圍內建立或修改資源,您的原則不得防止 SQL 受控執行個體管理其內部資源。 下列資源必須從原則拒絕效果中排除,以便正常作業:
- 類型
Microsoft.Network/serviceEndpointPolicies
的資源,當資源名稱以\_e41f87a2\_
開頭時 Microsoft.Network/networkIntentPolicies
類型的所有資源Microsoft.Network/virtualNetworks/subnets/contextualServiceEndpointPolicies
類型的所有資源
- 類型
- 虛擬網路上的鎖定:專用子網路的虛擬網路、其父資源群組或訂閱上的鎖定,偶爾可能會干擾 SQL 受控執行個體的管理和維護作業。 當您使用資源鎖定時,請特別小心。
- 複寫流量:在兩個受控執行個體之間,容錯移轉群組的複寫流量應該是直接的,而不是透過中樞網路路由。
- 自訂 DNS 伺服器:如果虛擬網路已設定為使用自訂 DNS 伺服器,則 DNS 伺服器必須能夠解析公用 DNS 記錄。 使用 Microsoft Entra 驗證等功能可能需要解析更完整的網域名稱 (FQDN)。 如需詳細資訊,請參閱解析 Azure SQL 受控執行個體中的私人 DNS 名稱。
服務輔助的子網路設定
為了改善服務安全性、可管理性和可用性,SQL 受控執行個體使用 Azure 虛擬網路基礎結構上的服務輔助子網路設定和網路意圖原則,設定網路、相關聯的元件和路由表,以確保符合 SQL 受控執行個體的最低需求。
客戶可以看到自動設定的網路安全性和路由表規則,並用下列前置詞之一進行標註:
- 適用於強制性規則和路由的
Microsoft.Sql-managedInstances_UseOnly_mi-
- 適用於可選規則和路由的
Microsoft.Sql-managedInstances_UseOnly_mi-optional-
如需其他詳細資料,請檢閱服務輔助的子網路設定。
如需連線結構和管理流量的詳細資訊,請參閱高階連線結構。
網路限制
- 在輸出連線上強制執行 TLS 1.2:從 2020 年 1 月開始,Microsoft 針對所有 Azure 服務中的服務內流量強制執行 TLS 1.2。 針對 SQL 受控執行個體,這會導致在用於與 SQL Server 的複寫和連結伺服器連線輸出連線上,強制執行 TLS 1.2。 如果您使用 2016 之前的 SQL Server 版本搭配 SQL 受控執行個體,請確定您套用 TLS 1.2 特定更新。
SQL 受控執行個體目前「不支援」下列虛擬網路功能:
- 私人子網路:目前不支援在私人子網中部署受控執行個體 (其中已停用預設輸出存取)。
- 連接埠 25 上的資料庫郵件至外部 SMTP 轉送:透過連接埠 25 將資料庫郵件傳送至外部電子郵件服務,僅適用於 Microsoft Azure 中的特定訂用帳戶類型。 其他訂用帳戶類型上的執行個體應該使用不同的連接埠 (例如 587) 來連絡外部 SMTP 轉送。 否則,執行個體可能無法傳遞資料庫郵件。 如需詳細資訊,請參閱疑難排解 Azure 中的輸出 SMTP 連線問題。
- Microsoft 對等互連:在與虛擬網路直接對等互連或轉移互連的 ExpressRoute 線路上啟用 Microsoft 對等互連,其中的 SQL 受控執行個體會影響虛擬網路內 SQL 受控執行個體元件之間的流量流程,且其依賴的服務會導致可用性問題。 可用性問題結果。 將 SQL 受控執行個體部署到已啟用 Microsoft 對等互連的虛擬網路預期會失敗。
- 虛擬網路對等互連 – 全域:跨 Azure 區域的虛擬網路對等互連連線不適用於所在的子網路是在 2020 年 9 月 9 日之前建立的 SQL 受控執行個體。
- 虛擬網路對等互連 – 設定:在包含具有 SQL 受控執行個體之子網路的虛擬網路之間建立虛擬網路對等互連時,這類子網路必須使用不同的路由表和網路安全性群組 (NSG)。 在參與虛擬網路對等互連的兩個或多個子網路中重複使用路由表和 NSG,會導致所有使用這些路由表或 NSG 的子網路出現連線問題,並導致 SQL 受控執行個體的管理作業失敗。
- AzurePlatformDNS:使用 AzurePlatformDNS 服務標籤來封鎖平台 DNS 解析,可能會導致 SQL 受控執行個體無法使用。 雖然 SQL 受控執行個體支援客戶定義的 DNS,以便在引擎內進行 DNS 解析,但還是會相依於平台作業的平台 DNS。
- NAT 閘道:使用 Azure 虛擬網路 NAT 來控制具有特定公用 IP 位址的輸出連線,會導致 SQL 受控執行個體無法使用。 SQL 受控執行個體服務目前僅限於使用基本負載平衡器,不提供 Azure 虛擬網路 NAT 的輸入和輸出流量共存。
- 適用於 Azure 虛擬網路的 IPv6:將 SQL 受控執行個體部署到雙重堆疊 IPv4/IPv6 虛擬網路預期會失敗。 將網路安全性群組或路由表與使用者定義的路由 (UDR) 建立關聯 (其中使用者定義的路由包含 SQL 受控執行個體子網路的 IPv6 位址首碼),會使 SQL 受控執行個體呈現無法使用。 此外,將 IPv6 位址首碼新增至已與受控執行個體子網路相關聯的網路安全性群組或 UDR,會使 SQL 受控執行個體呈現無法使用。 將 SQL 受控執行個體部署到已有 IPv6 首碼的網路安全性群組和 UDR 子網路,預期會失敗。
- 保留 Microsoft 服務的 DNS 記錄:下列功能網域名稱會保留,且其在 Azure DNS 定義之解析必須在託管的受控執行個體的虛擬網路中覆寫:
windows.net
、database.windows.net
、core.windows.net
、blob.core.windows.net
、table.core.windows.net
、management.core.windows.net
、monitoring.core.windows.net
、queue.core.windows.net
、graph.windows.net
、login.microsoftonline.com
、login.windows.net
、servicebus.windows.net
和vault.azure.net
。 將 SQL 受控執行個體部署至虛擬網路,其中一或多個這類功能網域名稱會透過 Azure DNS 私人區域或自定義 DNS 伺服器覆寫,將會失敗。 覆寫虛擬網路中這些網域的解析,其中包含受控執行個體,轉譯該受控執行個體無法使用。 如需如何在包含受控執行個體的虛擬網路內設定私人連結 DNS 記錄的相關知識,請參閱 Azure 私人端點 DNS 設定。
相關內容
- 如需概觀,請參閱什麼是 Azure SQL 受控執行個體?。
- 若要深入了解,請參閱
- 虛擬叢集結構
- 服務輔助的子網路設定
- 設定新的 Azure 虛擬網路或現有的 Azure 虛擬網路,您可以在其中部署 SQL 受控執行個體。
- 計算子網路大小以便在其中部署 SQL 受控執行個體。
- 了解如何建立受控執行個體: