Azure SQL 受控執行個體的連線架構

適用于:Azure SQL 受控執行個體

本文說明Azure SQL 受控執行個體中的連線架構,以及元件如何導向受控實例的通訊流量。

概觀

在SQL 受管理執行個體中,實例會放在 Azure 虛擬網路內,以及專用於受控實例的子網內。 部署提供:

  • 安全的虛擬網路本機 (VNet-local) IP 位址。
  • 將內部部署網路連線到 SQL 受控執行個體的能力。
  • 將SQL 受管理執行個體連線到連結的伺服器或另一個內部部署資料存放區的能力。
  • 將 SQL 受控執行個體連線到 Azure 資源的能力。

注意

2022 年 11 月功能波引進了SQL 受管理執行個體的預設連線結構變更。 本文提供目前架構和尚未在功能波中註冊之實例架構的相關資訊。 如需詳細資訊,請參閱 2022 年 11 月功能波

2022 年 11 月功能波

2022 年 11 月功能波對SQL 受管理執行個體連線架構引進了下列變更:

  • 已移除管理端點。
  • 簡化的強制網路安全性群組規則 (移除了一個強制規則) 。
  • 已修訂強制網路安全性群組規則,使其不再在埠 443 上包含 AzureCloud 的輸出。
  • 簡化路由表 (將強制路由從 13 減少到 5) 。

通訊概觀

下圖顯示連線到 SQL 受控執行個體的實體, 也會顯示需要與受控執行個體通訊的資源。 圖表底部的通訊程序代表連線到 SQL 受控執行個體作為資料來源的客戶應用程式與工具。

此圖顯示 2022 年 11 月之後Azure SQL 受控執行個體連線架構中的實體。

SQL 受管理執行個體是單一租使用者平臺即服務供應專案,可在兩個平面中運作:資料平面和控制平面。

資料平面會部署在客戶的子網內,以取得相容性、連線能力及網路隔離。 資料平面通常是透過其 VNet 本機端點來存取。 資料平面取決於 Azure 儲存體、Azure Active Directory (Azure AD) 等 Azure 服務來進行驗證,以及遙測收集服務。 您會看到源自子網的流量,這些子網包含SQL 受管理執行個體前往這些服務。

控制平面會透過自動化代理程式執行部署、管理和核心服務維護功能。 這些代理程式具有操作服務之計算資源的獨佔存取權。 您無法使用 ssh 或遠端桌面通訊協定來存取這些主機。 所有控制平面通訊都會使用憑證進行加密和簽署。 若要檢查通訊物件的信任度,SQL 受管理執行個體會使用憑證撤銷清單持續驗證這些憑證。

高層級連線架構

概括而言,SQL 受管理執行個體是一組服務元件,裝載于一組專用的隔離虛擬機器上,這些虛擬機器已加入虛擬叢集。 某些服務元件會部署在客戶的虛擬網路子網內。 其他服務會在 Microsoft 管理的安全網路環境中運作。

虛擬叢集可以裝載多個受控執行個體。 叢集會視需要自動擴充或合約,以容納新的和已移除的實例。

客戶應用程式可以連線到 SQL 受控執行個體,並且可以查詢和更新虛擬網路、對等互連虛擬網路或透過 VPN 或 Azure ExpressRoute 連線網路內的資料庫。

此圖顯示 2022 年 11 月之後Azure SQL 受控執行個體的高階連線架構。

為了協助與客戶應用程式的連線,SQL 受管理執行個體提供兩種類型的端點:VNet 本機端點和公用端點。

VNet 本機端點

VNet 本機端點是連線到SQL 受管理執行個體的預設方式。 VNet 本機端點是具有表單 <mi_name>.<dns_zone>.database.windows.net 的功能變數名稱,並解析為來自子網位址集區的 IP 位址。 端點是虛擬網路的本機端點。 您可以使用 VNet 本機端點在所有標準連線案例中連線受控實例。

公用端點

公用端點是選擇性功能變數名稱,其格式 <mi_name>.public.<dns_zone>.database.windows.net 為 ,並解析為可從網際網路連線的公用 IP 位址。 此端點只允許 TDS 流量到達SQL 受管理執行個體,且無法用於容錯移轉群組、SQL 受管理執行個體連結和類似技術的整合案例。

虛擬叢集連線架構

讓我們進一步瞭解SQL 受管理執行個體的連線架構。 下圖顯示虛擬叢集的概念配置:

此圖顯示 2022 年 11 月之後Azure SQL 受控執行個體的虛擬叢集連線架構。

用戶端使用具有 <mi_name>.<dns_zone>.database.windows.net 格式的主機名稱連線到 SQL 受控執行個體。 主機名稱會解析為私人 IP 位址,但已在公用網域名稱系統中註冊, (DNS) 區域且可公開解析。 當您建立叢集時,會自動產生 的值 zone-id 。 如果新建立的叢集裝載次要受控執行個體,會與主要叢集共用其區域識別碼。 如需詳細資訊,請參閱使用自動容錯移轉群組可以啟用多個資料庫透明且協調的容錯移轉

此私人 IP 位址屬於 SQL 受控執行個體的內部負載平衡器。 負載平衡器會將流量導向至 SQL 受控執行個體閘道。 因為多個受控執行個體可以在相同的叢集中執行,所以閘道會使用 SQL 受控執行個體主機名稱來將流量重新導向到正確的 SQL 引擎服務。

服務輔助的子網路組態

為了改善服務安全性、管理性和可用性,SQL 受管理執行個體會在 Azure 虛擬網路基礎結構的某些元素上套用網路意圖原則。 此原則會設定子網、相關聯的網路安全性群組和路由表,以確保符合SQL 受管理執行個體的最低需求。 此平台機制會以透明的方式將網路需求傳達給使用者。 原則的主要目標是防止網路設定錯誤,並確保正常SQL 受管理執行個體作業和服務等級協定承諾。 當您刪除受控執行個體時,也會一併移除網路意圖原則。

服務輔助子網組態建置在虛擬網路 子網委派 功能之上,以提供自動網路組態管理和啟用服務端點。

您可以使用服務端點,在保留備份和稽核記錄的儲存體帳戶上設定虛擬網路防火牆規則。 即使已啟用服務端點,客戶仍鼓勵使用Azure Private Link來存取其儲存體帳戶。 Private Link提供比服務端點更多的隔離。

重要

由於控制平面設定特性,服務輔助子網設定不會在國家雲端中啟用服務端點。

網路需求

部署SQL 受管理執行個體的子網必須具有下列特性:

  • 專用子網:SQL 受管理執行個體使用的子網只能委派給SQL 受管理執行個體服務。 子網不能是閘道子網,而且您只能部署子網中的SQL 受管理執行個體資源。
  • 子網委派:SQL 受管理執行個體子網必須委派給 Microsoft.Sql/managedInstances 資源提供者。
  • 網路安全性群組:網路安全性群組必須與SQL 受管理執行個體子網相關聯。 您可以使用網路安全性群組,藉由篩選埠 1433 上的流量和埠 11000-11999 SQL 受管理執行個體 設定為重新導向連線時,控制對SQL 受管理執行個體資料端點的存取。 此服務會自動布建 規則 ,並視需要保留這些規則,以允許不中斷的管理流量。
  • 路由表:路由表必須與SQL 受管理執行個體子網相關聯。 您可以將專案新增至路由表,以路由傳送具有內部部署私人 IP 位址範圍的流量,以透過虛擬網路閘道或虛擬網路設備作為目的地。 此服務會自動布建 專案 ,並視需要將其保持為最新狀態,以允許不中斷的管理流量。
  • 足夠的 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 記錄。 使用 Azure AD 驗證等功能可能需要解析更完整的功能變數名稱, (FQDN) 。 如需詳細資訊,請參閱解析Azure SQL 受控執行個體中的私人 DNS 名稱

具有服務輔助子網設定的必要安全性規則

為了確保輸入管理流量,下表所述的規則是必要的。 規則是由網路意圖原則強制執行,不需要由客戶部署。 如需連線架構和管理流量的詳細資訊,請參閱 高階連線架構

名稱 連接埠 通訊協定 來源 Destination 動作
healthprobe-in 任意 任意 AzureLoadBalancer Allow
internal-in 任意 任意 Allow

為了確保輸出管理流量,下表所述的規則是必要的。 如需連線架構和管理流量的詳細資訊,請參閱 高階連線架構

名稱 連接埠 通訊協定 來源 Destination 動作
AAD-out 443 TCP AzureActiveDirectory 允許
OneDsCollector-out 443 TCP OneDsCollector Allow
internal-out 任意 任意 Allow
StorageP-out 443 任意 存儲。primaryRegion Allow
StorageS-out 443 任意 存儲。secondaryRegion Allow

具有服務輔助子網設定的必要路由

下表所述的路由是必要的,以確保管理流量會直接路由傳送至目的地。 路由是由網路意圖原則強制執行,不需要由客戶部署。 如需連線架構和管理流量的詳細資訊,請參閱 高階連線架構

名稱 位址首碼 下一個躍點
AzureActiveDirectory AzureActiveDirectory 網際網路*
OneDsCollector OneDsCollector 互聯網*
存儲。primaryRegion 存儲。primaryRegion 互聯網*
存儲。secondaryRegion 存儲。secondaryRegion 互聯網*
subnet-to-vnetlocal 虛擬網路

注意

*[下一個躍點] 資料行中的[網際網路] 值會指示閘道路由傳送虛擬網路外部的流量。 不過,如果目的地位址適用于 Azure 服務,Azure 會透過 Azure 網路將流量直接路由傳送至服務,而不是在 Azure 雲端外部。 Azure 服務之間的流量不會周遊網際網路,不論虛擬網路存在於哪個 Azure 區域,或部署 Azure 服務實例的 Azure 區域為何。 如需詳細資訊,請參閱 Azure 虛擬網路流量路由

您也可以將專案新增至路由表,以透過虛擬網路閘道或虛擬網路設備路由傳送具有內部部署私人 IP 範圍的流量作為目的地。

網路限制

在輸出連線上強制執行 TLS 1.2:從 2020 年 1 月開始,Microsoft 會針對所有 Azure 服務中的服務內流量強制執行 TLS 1.2。 針對 SQL 受管理執行個體,這會導致在用於複寫的輸出連線上強制執行 TLS 1.2,以及在連結的伺服器連線上強制執行SQL Server。 如果您使用早于 2016 SQL 受管理執行個體 的 SQL Server 版本,請確定您套用TLS 1.2 特定更新

SQL 受控執行個體目前「不支援」下列虛擬網路功能:

  • Microsoft 對等互連:在 ExpressRoute 線路上啟用Microsoft 對等互連,這些線路會直接與虛擬網路進行對等互連,而其中SQL 受管理執行個體所在的虛擬網路會影響虛擬網路內SQL 受管理執行個體元件與其相依服務之間的流量流量。 可用性問題結果。 SQL 受管理執行個體部署至已啟用 Microsoft 對等互連的虛擬網路,預期會失敗。
  • 全域虛擬網路對等互連:跨 Azure 區域的虛擬網路對等互連連線不適用於位於 2020 年 9 月 9 日之前所建立子網的SQL 受管理執行個體實例。
  • AzurePlatformDNS:使用 AzurePlatformDNS 服務標籤來封鎖平台 DNS 解析,會導致 SQL 受控執行個體無法使用。 雖然SQL 受管理執行個體支援引擎內 DNS 解析的客戶定義 DNS,但平臺作業的平臺 DNS 相依性。
  • NAT 閘道:使用Azure 虛擬網路 NAT來控制與特定公用 IP 位址的輸出連線,SQL 受管理執行個體無法使用。 SQL 受管理執行個體服務目前僅限於使用基本負載平衡器,這不會提供與 Azure 虛擬網路 NAT 共存的輸入和輸出流程。
  • 適用於 Azure 虛擬網路的 IPv6:將 SQL 受控執行個體部署到雙重堆疊 IPv4/IPv6 虛擬網路預期會失敗。 將網路安全性群組或路由表與使用者定義路由建立關聯, (UDR) ,其中包含 IPv6 位址前置詞至SQL 受管理執行個體子網,會轉譯SQL 受管理執行個體無法使用。 此外,將 IPv6 位址首碼新增至已與受控實例子網相關聯的網路安全性群組或 UDR,會轉譯SQL 受管理執行個體無法使用。 SQL 受管理執行個體具有網路安全性群組和 UDR 且已有 IPv6 前置詞的子網部署預期會失敗。
  • 保留給 Microsoft 服務的 Azure DNS 私人區功能變數名稱稱:下列功能變數名稱是保留名稱: windows.netdatabase.windows.net 、、、 blob.core.windows.netmanagement.core.windows.netmonitoring.core.windows.netqueue.core.windows.nettable.core.windows.netcore.windows.netlogin.microsoftonline.comlogin.windows.netgraph.windows.netservicebus.windows.net 和 。 vault.azure.net 將SQL 受管理執行個體部署至具有相關聯Azure DNS 私人區域的虛擬網路,該虛擬網路會使用保留給 Microsoft 服務的名稱失敗。 將使用保留名稱的 Azure DNS 私人區域與包含受控實例的虛擬網路建立關聯,SQL 受管理執行個體無法使用。 如需Private Link設定的相關資訊,請參閱Azure 私人端點 DNS 設定

下一步