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

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

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

概觀

在 SQL 受控執行個體中,執行個體位於專供受控執行個體使用的 Azure 虛擬網路和子網路內。 此部署提供:

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

注意

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

2022 年 11 月功能潮

2022 年 11 月功能潮引進了 SQL 受控執行個體連線結構的下列變更:

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

高層級連線架構

SQL 受控執行個體是由裝載在專用隔離虛擬機器集合上的服務元件組成,這些虛擬機器按類似的設定屬性群組在一起並聯結成虛擬叢集。 某些服務元件部署在客戶的虛擬網路子網路內,而其他服務則是在 Microsoft 管理的安全網路環境中運作。

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

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

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

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

SQL 受控執行個體是單一租用戶的平台即服務供應項目,可在兩個平面中運作:資料平面和控制平面。

資料平面部署在客戶的子網路之中,具有相容性、連線能力和網路隔離特性。 資料平面必須依賴 Azure 儲存體、Microsoft Entra ID (以前稱為 Azure Active Directory) 等 Azure 服務進行驗證,以及遙測收集服務。 您會看到源自子網路的流量,其中包含從 SQL 受控執行個體傳送至這些服務的流量。

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

通訊概觀

應用程式可以透過三種類型的端點連線到 SQL 受控執行個體。 這些端點會提供不同的案例,並展現不同的網路屬性和行為。

此圖顯示 Azure SQL 受控執行個體 VNet 本機、公用和私人端點的可見度範圍。

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 位址偶爾會變更。

公用端點一律以 Proxy 連線類型運作。

深入了解如何設定公用端點,請參閱設定 Azure SQL 受控執行個體的公用端點

私人端點

私人端點是另一個虛擬網路中的選用固定 IP 位址,可將流量引導到 SQL 受控執行個體。 一個 Azure SQL 受控執行個體可以在多個虛擬網路中有多個私人端點。 私人端點只允許 TDS 流量傳送到連接埠 1433 上的 SQL 受控執行個體,且無法用於整合案例,例如容錯移轉群組、受控執行個體連結及其他類似技術。

連線到私人端點時,請一律使用網域名稱,因為系統尚不支援透過其 IP 位址連線到 Azure SQL 受控執行個體。

私人端點一律以 Proxy 連線類型運作。

深入了解私人端點及設定方式,請參閱 Azure SQL 受控執行個體的 Azure 私人連結

虛擬叢集連線架構

本節可讓您深入了解 SQL 受控執行個體的虛擬叢集連線結構。 下圖顯示虛擬叢集的概念性配置:

VNet 本機端點的網域名稱可解析為內部負載平衡器的私人 IP 位址。 雖然此網域名稱是在公用網域名稱系統 (DNS) 區域中註冊且可公開解析,但其 IP 位址屬於子網路的位址範圍,依預設,只能從其虛擬網路內部連線。

負載平衡器會將流量導向至 SQL 受控執行個體閘道。 因為多個受控執行個體可以在相同的叢集中執行,所以閘道會使用 SQL 受控執行個體主機名稱 (如連接字串所示) 來將流量重新導向到正確的 SQL 引擎服務。

當您建立叢集時會自動產生 dns-zone 的值。 如果新建立的叢集裝載次要受控執行個體,會與主要叢集共用其區域識別碼。

服務輔助的子網路組態

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

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

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

重要

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

網路需求

部署 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 名稱

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

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

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

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

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

具有服務輔助子網路設定的強制路由

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

名稱 位址首碼 下一個躍點
AzureActiveDirectory AzureActiveDirectory 網際網路*
OneDsCollector OneDsCollector 網際網路*
Storage.primaryRegion Storage.primaryRegion 網際網路*
Storage.secondaryRegion Storage.secondaryRegion 網際網路*
subnet-to-vnetlocal subnet 虛擬網路

注意

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

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

網路限制

在輸出連線上強制執行 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 服務的 Azure DNS 私人區域:下列網域名稱是保留名稱:windows.netdatabase.windows.netcore.windows.netblob.core.windows.nettable.core.windows.netmanagement.core.windows.netmonitoring.core.windows.netqueue.core.windows.netgraph.windows.netlogin.microsoftonline.comlogin.windows.netservicebus.windows.netvault.azure.net。 將 SQL 受控執行個體部署到虛擬網路,該虛擬網路含有相關聯的 Azure DNS 私人區域且該區域使用的是保留給 Microsoft 服務的名稱時,部署會失敗。 將使用保留名稱的 Azure DNS 私人區域關聯到含有受控執行個體的虛擬網路時,會使 SQL 受控執行個體呈現無法使用。 如需 Private Link 設定的相關資訊,請參閱 Azure 私人端點 DNS 設定

下一步