共用方式為


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

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

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

概觀

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

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

高層級連線架構

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

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

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

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

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

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

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

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

通訊概觀

應用程式可以透過三種類型的端點連線到 SQL 受控實例:VNet 本機端點公用端點,以及 私人端點。 這些端點會展示適用於不同案例的不同屬性和行為。

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

VNet 本機端點

VNet 本機端點是連線至 SQL 受控執行個體的預設方法。 VNet 本機端點網域名稱的格式為<mi_name>.<dns_zone>.database.windows.net。 此網域名稱會從子網路的位址範圍解析為 IP 位址。 使用 VNet 本機端點,在所有標準連線案例中連線到 SQL 受控執行個體。 VNet 本地端點在連接埠 1433 上接受連線。

VNet 本機端點支援 Proxy 和重新導向連線類型

當連線至 VNet 本地主端點時,請一律使用其網域名稱,並在整個子網路範圍中允許所需連接埠的入站流量,因為基礎 IP 位址可能偶爾會變動。

若要尋找某個執行個體的 VNet-本機端點的網域名稱,請依照以下步驟進行:

  • Azure 入口網站:在 [ 概觀 ] 窗格的 [基本] 區段中,[ 主機 ] 值會顯示 VNet 本機端點網域名稱
  • PowerShellGet-AzSqlInstance -ResourceGroupName <resource-group> -Name <mi-name>VNet 本機端點網域名稱 顯示為 fullyQualifiedDomainName 屬性。
  • Azure CLIaz sql mi show -g <resource-group> -n <mi-name>VNet 本機端點網域名稱 顯示為 fullyQualifiedDomainName 屬性。

為了提高安全性,請指定加密連線,並且不要信任憑證。 如需詳細資訊,請參閱安全性概觀

公用端點

公用端點是以 <mi_name>.public.<dns_zone>.database.windows.net形式的網域名稱。 此網域名稱會解析為可從網際網路存取的公用 IP 位址。 公用端點適用於需要透過公用網際網路存取 SQL 受控執行個體的案例。 例如,當對等互連或私人端點無法使用時,從不同的虛擬網路連線到它時。 公用端點只會傳輸用戶端流量,而且無法用於兩個執行個體之間的資料複寫,例如 容錯移轉群組受控執行個體連結。 公用端點接受連接埠 3342 上的連線。

公用端點一律會使用 Proxy 連線類型 ,而不論連線類型設定為何。

執行個體的公用端點域名等於其 VNet 在地端點名稱,並在主機名稱與域名的其餘部分之間插入標籤: <mi-name>.public.<dns-zone>.database.windows.net

當連接到公用端點時,請一律使用其域名,並允許整個子網範圍內埠 3342 的入站流量,因為基礎 IP 位址偶爾會變更。

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

私人端點

私人端點是另一個虛擬網路中的選用固定 IP 位址,可將流量引導到 SQL 受控執行個體。 一個 Azure SQL 受控執行個體可以在多個虛擬網路中有多個私人端點。 私人端點只會傳輸用戶端流量,而且無法用於兩個執行個體之間的資料複寫,例如容錯移轉群組或 受控執行個體連結。 私人端點接受埠 1433 上的連線。

私人端點一律會使用 Proxy 連線類型 ,而不論連線類型設定為何。

執行個體的私人端點網域名稱等於其 VNet 本機網域名稱,除非端點已以不同方式設定。 當私人端點和 VNet 本機端點都位於相同的虛擬網路中時,就會發生這種情況。 如需詳細資訊,請參閱 設定私人端點的網域名稱解析

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

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

虛擬叢集連線架構

下圖顯示 虛擬叢集架構的概念配置:

此圖顯示 Azure SQL 受控執行個體的虛擬叢集連線結構。

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

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

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

網路需求

Azure SQL 受控執行個體需要以特定方式設定委派子網路的各個層面,您可以使用服務輔助子網路設定來達成此目的。 除了服務所需之外,使用者還可完全控制其子網路網路設定,例如:

  • 允許或封鎖部分或所有連接埠上的流量。
  • 將項目新增至路由表,以透過虛擬網路設備或閘道路由傳送流量。
  • 設定自訂 DNS 解析。
  • 設定對等互連或 VPN。

若要符合 Microsoft Online Services 服務等級協定中的 符合規範的網路設定 準則,部署 SQL 受控執行個體的虛擬網路和子網路必須符合下列需求:

  • 專用子網路:SQL 受控執行個體使用的子網路只能委派給 SQL 受控執行個體服務。 子網路不可以是閘道子網路,而且您只能在子網路中部署 SQL 受控執行個體資源。
  • 子網路委派:SQL 受控執行個體子網路必須委派給 Microsoft.Sql/managedInstances 資源提供者。
  • 網路安全性群組:網路安全性群組必須與 SQL 受控執行個體子網路相關聯。 您可以使用網路安全性群組,藉由篩選埠 1433 上的輸入流量來控制對 SQL 受控執行個體資料端點的存取。 服務會自動佈建規則並保留為必要規則,以確保管理流量的流程不會中斷。
  • 路由表:路由表必須與 SQL 受控執行個體子網路相關聯。 您可以將項目新增至此路由表,例如透過虛擬網路閘道將流量路由傳送至內部部署,或新增預設的 0.0.0.0/0 路由,以引導所有流量通過虛擬網路設備,例如防火牆。 Azure SQL 受控執行個體會自動佈建及管理其在路由表中的必要項目
  • 足夠的 IP 位址:SQL 受控執行個體子網路必須至少有 32 個 IP 位址。 如需詳細資訊,請參閱決定 SQL 受控執行個體的子網路大小。 在設定 SQL 受控執行個體以滿足 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 名稱
  • 必要的 DNS 記錄:SQL 受控執行個體取決於特定網域名稱的正確解析。 這些網域名稱不應透過 Azure DNS 私人區域 或自定義 DNS 伺服器在其虛擬網路中被覆寫。 否則,SQL 受控執行個體將無法部署或無法使用。 不可覆寫下列網域: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 受控執行個體的虛擬網路內建立私人端點,甚至是上述網域中的資源。 私人端點使用 DNS 機制,不需要本機 DNS 伺服器成為整個 DNS 區域的授權。
  • AzurePlatformDNS:使用 AzurePlatformDNS 服務標籤來封鎖平台 DNS 解析,可能會導致 SQL 受控執行個體無法使用。 雖然 SQL 受控實例支援客戶定義的 DNS,用於內部引擎的 DNS 解析,但平台操作仍依賴於 Azure DNS。

服務輔助的子網路設定

為了改善服務安全性、可管理性和可用性,SQL 受控執行個體使用 Azure 虛擬網路基礎結構上的服務輔助子網路設定和網路意圖原則,設定網路、相關聯的元件和路由表,以確保符合 SQL 受控執行個體的最低需求。

客戶可以看到自動設定的網路安全性和路由表規則,並用下列前置詞之一進行標註:

  • 適用於強制性規則和路由的 Microsoft.Sql-managedInstances_UseOnly_mi-
  • 適用於可選規則和路由的 Microsoft.Sql-managedInstances_UseOnly_mi-optional-

如需其他詳細資訊,請檢閱 服務輔助子網路組態

如需連線結構和管理流量的詳細資訊,請參閱高階連線結構

網路限制

虛擬網路功能和流量的下列限制有效:

  • 專用子網路:目前不支援在專用子網路中部署 SQL 受控執行個體 (其中 已停用預設輸出存取 )。
  • VNet 加密:目前不支援在已啟用 Azure 虛擬網路加密 的虛擬網路中部署和操作 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 受控執行個體的管理作業失敗。
  • NAT 閘道:目前不支援使用 Azure 虛擬網路 NAT 來控制與特定公用 IP 位址的輸出連線。
  • 適用於 Azure 虛擬網路的 IPv6:將 SQL 受控執行個體部署到雙重堆疊 IPv4/IPv6 虛擬網路預期會失敗。 將網路安全性群組或路由表與使用者定義的路由 (UDR) 建立關聯 (其中使用者定義的路由包含 SQL 受控執行個體子網路的 IPv6 位址首碼),會使 SQL 受控執行個體呈現無法使用。 此外,將 IPv6 位址前置詞新增至已與 SQL 受控執行個體子網路相關聯的網路安全性群組或 UDR,會讓 SQL 受控執行個體無法運作。 將 SQL 受控執行個體部署到已有 IPv6 首碼的網路安全性群組和 UDR 子網路,預期會失敗。
  • 在輸出連線上強制執行 TLS 1.2:從 2020 年 1 月開始,Microsoft 針對所有 Azure 服務中的服務內流量強制執行 TLS 1.2。 針對 SQL 受控執行個體,這會導致在用於與 SQL Server 的複寫和連結伺服器連線輸出連線上,強制執行 TLS 1.2。 如果您使用 2016 之前的 SQL Server 版本搭配 SQL 受控執行個體,請確定您套用 TLS 1.2 特定更新
  • 內部回退至 Azure DNS:SQL 受控執行個體依賴於其虛擬網路中運作的 DNS 解析。 如果 SQL 受控執行個體的虛擬網路設定為使用 自訂 DNS 伺服器 ,且發出給自訂 DNS 伺服器的 DNS 要求無法在特定間隔 (1-2 秒) 內完成,則 SQL 受控執行個體會針對該虛擬網路中的 Azure DNS 重複要求。