Azure App Service 混合式連線

混合式連線既是 Azure 服務,也是 Azure App Service 功能。 作為服務時,它具有 App Service 所利用之用途和功能以外的用途和功能。 若要深入了解混合式連線及其在 App Service 之外的使用方式,請參閱 Azure 轉送混合式連線

在App Service內,混合式連線可用來存取任何網路中可透過埠 443 對 Azure 進行輸出呼叫的應用程式資源。 混合式連線可讓您從應用程式存取 TCP 端點,而且不會啟用新的方法來存取您的應用程式。 和在 App Service 中使用時相同,每個「混合式連線」都會與單一 TCP 主機和連接埠的組合相互關聯。 這可讓您的應用程式存取任何 OS 上的資源,前提是它是 TCP 端點。 混合式連線功能不知道或關心應用程式通訊協定是什麼,或您正在存取的內容。 它只會提供網路存取。

運作方式

混合式連線需要部署轉送代理程式,才能連線到所需的端點和 Azure。 轉送代理程式混合式連線管理員 (HCM) ,透過埠 443 呼叫 Azure 轉送。 從 Web 應用程式網站,App Service基礎結構也會代表您的應用程式連線到 Azure 轉寄。 透過加入的連線,您的應用程式能夠存取所需的端點。 連線會使用 TLS 1.2 以求安全性,並使用共用存取簽章 (SAS) 金鑰來進行驗證和授權。

Diagram of Hybrid Connection high-level flow

當應用程式提出的 DNS 要求與所設定的「混合式連線」端點相符時,系統就會透過「混合式連線」將輸出 TCP 流量重新導向。

注意

這表示您應該嘗試一律對混合式連線使用 DNS 名稱。 如果端點改為使用 IP 位址,某些用戶端軟體不會執行 DNS 查閱。

App Service 混合式連線優點

「混合式連線」功能有一些優點,包括:

  • 應用程式可以安全地存取內部部署系統和服務。
  • 此功能不需要可存取網際網路的端點。
  • 快速且容易設定。 不需要閘道。
  • 每個「混合式連線」都會與單一的「主機:連接埠」組合對應,有助於提高安全性。
  • 它通常不需要防火牆漏洞。 連線全都是透過標準的 Web 連接埠輸出。
  • 因為此功能是網路層級,所以與應用程式所使用的語言和端點所使用的技術無關。
  • 它可用來讓您從單一應用程式存取多個網路。
  • Windows應用程式和 Linux 應用程式支援 GA。 不支援Windows自訂容器。

混合式連線無法執行的作業

混合式連線無法執行的作業包括:

  • 裝載磁碟。
  • 使用 UDP。
  • 存取使用動態連接埠的 TCP 型服務 (例如「FTP 被動模式」或「延伸被動模式」)。
  • 支援 LDAP,因為它需要 UDP。
  • 支援 Active Directory,因為您無法將 App Service 背景工作角色加入網域。

在您的應用程式中新增和建立混合式連線

若要建立「混合式連線」,請移至 Azure 入口網站,然後選取您的應用程式。 選取 [網路設定>混合式連線端點]。 您可以在這裡看到為您應用程式設定的「混合式連線」。

Screenshot of Hybrid Connection list

若要新增混合式連線,請選取 [[+] 新增混合式連線]。 您會看見已建立的混合式連線清單。 若要在應用程式中新增其中的一或多個混合式連線,請按一下您想要的混合式連線,然後選取 [新增選取的混合式連線]

Screenshot of Hybrid Connection portal

如果您想要建立新的「混合式連線」,請選取 [建立新的混合式連線]。 指定下列項目:

  • 混合式連線名稱。
  • 端點主機名稱。
  • 端點連接埠。
  • 您想要使用的「服務匯流排」命名空間。

Screenshot of Create new hybrid connection dialog box

每個「混合式連線」都會繫結至一個「服務匯流排」命名空間,而每個「服務匯流排」命名空間都位於 Azure 區域中。 請務必嘗試使用與應用程式位於相同區域的「服務匯流排」命名空間,以避免網路所引發的延遲。

如果您想要移除應用程式中的「混合式連線」,請對它按一下滑鼠右鍵,然後選取 [中斷連線]

將「混合式連線」新增至應用程式之後,您只要選取它就可以查看詳細資料。

Screenshot of Hybrid connections details

在 Azure 轉送入口網站中建立混合式連線

除了透過入口網站從您應用程式內進行的方式之外,您也可以從「Azure 轉送」入口網站內建立「混合式連線」。 若要讓 App Service 使用混合式連線,必須:

  • 要求用戶端授權。
  • 擁有一個以「主機:連接埠」組合作為值的中繼資料項目具名端點。

混合式連線和 App Service 方案

只有在「基本」、「標準」、「進階」及「隔離」定價 SKU 中,才有提供「App Service 混合式連線」。 混合式連線不適用於取用方案中的函式應用程式。 定價方案會有相關聯的限制。

定價方案 方案中可用的混合式連線數目
基本 每個方案 5 個
標準 每個方案 25 個
進階 (v1-v3) 每個應用程式 220 個
隔離 (v1-v2) 每個應用程式 220 個

App Service 方案 UI 會顯示您正在使用的混合式連線數目,以及由哪些應用程式使用。

Screenshot of App Service plan properties

請選取 [混合式連線] 以查看詳細資料。 您可以看到在應用程式檢視中所看到的所有資訊。 您也可以查看在相同的方案中,有多少其他的應用程式使用了該混合式連線。

在App Service方案中可以使用的混合式連線端點數目有限制。 不過,每個使用的混合式連線,則可用於方案中任何數目的應用程式上。 例如,一個在「App Service 方案」中 5 個個別應用程式上使用的「混合式連線」,只算 1 個「混合式連線」。

定價

除了有App Service方案 SKU 需求之外,使用混合式連線還需要額外的成本。 混合式連線所使用的每個接聽程式都會收取費用。 接聽程式是混合式連線管理員。 如果由兩個混合式連線管理員支援的混合式連線有五個,那就有 10 個接聽程式。 如需詳細資訊,請參閱服務匯流排價格

混合式連線管理員

「混合式連線」功能需要在裝載「混合式連線」端點的網路中有轉送代理程式。 該轉送代理程式稱為混合式連線管理員 (HCM)。 若要下載 HCM,請在 Azure 入口網站 中,從您的應用程式選取 [網路]>[設定您的混合式連接端點]

此工具可在 Windows Server 2012 和更新版本上執行。 HCM 以服務形式執行,並向外連線到連接埠 443 上的 Azure 轉送。

在安裝 HCM 之後,您可以執行 HybridConnectionManagerUi.exe 來使用工具的 UI。 此檔案位於混合式連線管理員的安裝目錄下。 在 Windows 10 中,您也可以在搜尋方塊中搜尋「混合式連線管理員 UI」即可。

Screenshot of Hybrid Connection Manager

啟動 HCM UI 時,您會先看到一個表格,當中會列出與這個 HCM 執行個體搭配設定的所有「混合式連線」。 如果您想要進行任何變更,請先向 Azure 進行驗證。

若要在 HCM 中新增一或多個混合式連線︰

  1. 啟動 HCM UI。

  2. 選取 [新增混合式連線]。 Screenshot of Configure New Hybrid Connections

  3. 使用您的 Azure 帳戶登入,讓您的混合式連線可供您的訂用帳戶使用。 HCM 不會繼續使用您的 Azure 帳戶。

  4. 選擇訂用帳戶。

  5. 選取您要讓 HCM 轉送的「混合式連線」。 Screenshot of Hybrid Connections

  6. 選取 [儲存]。

現在可以看到您新增的「混合式連線」。 您也可以選取已設定的混合式連線,以查看詳細資料。

Screenshot of Hybrid Connection Details

若要支援其設定的混合式連線,HCM 需要:

  • 對 Azure 的 TCP 存取權 (透過連接埠 443)。
  • 對「混合式連線」端點的 TCP 存取權。
  • 能夠對端點主機和「服務匯流排」命名空間執行 DNS 查閱。 換句話說,Azure 轉寄連線中的主機名稱應該可從裝載 HCM 的機器解析。

注意

「Azure 轉送」需倚賴「Web 通訊端」來取得連線能力。 此功能只有在 Windows Server 2012 或更新版本上才有提供。 因此,Windows Server 2012 以前的所有版本皆不支援 HCM。

備援性

每個 HCM 都可以支援多個「混合式連線」。 此外,任何指定的「混合式連線」也都可以受到多個 HCM 支援。 預設行為是在任何給定端點所設定的 HCM 之間路由傳送流量。 如果您想要讓來自您網路的「混合式連線」具有高可用性,請在不同電腦上執行多個 HCM。 轉送服務用來將流量散發至 HCM 的負載分配演算法會隨機指派。

手動新增混合式連線

若要想讓訂用帳戶外的人員裝載指定「混合式連線」的 HCM 執行個體,您可以與他們共用「混合式連線」的閘道連接字串。 您可以在 Azure 入口網站中的混合式連線屬性中看到閘道連接字串。 若要使用該字串,請在 HCM 中選取 [手動輸入],然後貼上閘道連接字串。

Manually add a Hybrid Connection

升級

混合式連線管理員會定期更新,以修正問題或改善效能。 當升級程式發行時,HCM UI 中會出現快顯視窗。 套用升級後,HCM 會發生變更並重新啟動。

以程式設計方式將混合式連線新增至應用程式

混合式連線支援 Azure CLI。 提供的命令會在應用程式和App Service計畫層級運作。 應用層級命令如下:

az webapp hybrid-connection

Group
    az webapp hybrid-connection : Methods that list, add and remove hybrid-connections from webapps.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    add    : Add a hybrid-connection to a webapp.
    list   : List the hybrid-connections on a webapp.
    remove : Remove a hybrid-connection from a webapp.

App Service計畫命令可讓您設定給定混合式連線將使用的金鑰。 每個混合式連線都有兩個金鑰設定,主要和次要連線。 您可以選擇使用主要或次要金鑰搭配下列命令。 這可讓您在想要定期重新產生金鑰時切換金鑰。

az appservice hybrid-connection --help

Group
    az appservice hybrid-connection : A method that sets the key a hybrid-connection uses.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    set-key : Set the key that all apps in an appservice plan use to connect to the hybrid-
                connections in that appservice plan.

保護您的混合式連線

任何對基礎Azure 服務匯流排轉送具有足夠許可權的使用者,都可以將現有的混合式連線新增至其他App Service Web Apps。 這表示如果您必須防止其他人重複使用相同的混合式連線 (,例如當目標資源是沒有任何其他安全性措施的服務,以防止未經授權的存取) ,您必須鎖定對Azure 服務匯流排轉送的存取。

具有轉送存取權 Reader 的任何人都可以在嘗試將它新增至Azure 入口網站中的 Web 應用程式時看到混合式連線,但無法新增它,因為它們缺少擷取用來建立轉送連線的連接字串的許可權。 若要成功新增混合式連線,他們必須具有 listKeys 許可權 Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action () 。 在 Contributor 轉送上包含此許可權的角色或任何其他角色,將允許使用者使用混合式連線,並將它新增至自己的Web Apps。

管理混合式連線

如果您需要變更混合式連線的端點主機或埠,請遵循下列步驟:

  1. 選取 [混合式連線詳細資料] 視窗左上方的 [連線],然後選取 [混合式連線詳細資料] 視窗左上方的 [移除],以從本機電腦上的混合式連線管理員移除混合式連線。
  2. 在 [App Service網路] 頁面中流覽至[混合式連線],以中斷App Service的混合式連線
  3. 流覽至您需要更新端點的轉送,然後在左側導覽功能表中的 [實體] 底下選取[混合式連線]。
  4. 選取您想要更新的混合式連線,然後在左側導覽功能表中選取 [設定底下的[屬性]。
  5. 進行變更,然後按頂端的 [ 儲存變更 ]。
  6. 返回App Service的混合式連線設定,然後再次新增混合式連線。 請確定端點會如預期般更新。 如果您沒有在清單中看到混合式連線,請在 5-10 分鐘內重新整理。
  7. 返回本機電腦上的混合式連線管理員,然後再次新增連線。

疑難排解

「已連線」狀態意謂著該「混合式連線」至少有一個已設定的 HCM,並且能夠連線至 Azure。 如果混合式連線的狀態未指出 [ 已連線],則您的混合式連線未在任何可存取 Azure 的 HCM 上設定。 當 HCM 顯示 [未連線 ] 時,需要檢查一些事項:

  • 您的主機是否有埠 443 上的 Azure 輸出存取權? 您可以使用 PowerShell 命令Test-NetConnection 目的地 -P 埠從 HCM 主機進行測試

  • 您的 HCM 是否可能處於不良狀態? 請嘗試重新開機「Azure 混合式連線管理員服務」本機服務。

  • 您是否已安裝衝突的軟體? 混合式連線管理員無法與 Biztalk 混合式連線管理員 或 服務匯流排 並存,Windows Server。 因此,安裝 HCM 時,應該先移除這些套件的任何版本。

如果您的狀態顯示 [已連線] ,但您的應用程式無法連線到您的端點,則:

  • 請確定您在混合式連線中使用 DNS 名稱。 如果您使用 IP 位址,則可能不會發生必要的用戶端 DNS 查閱。 如果您的 Web 應用程式中執行的用戶端未執行 DNS 查閱,則混合式連線將無法運作
  • 檢查混合式連線中使用的 DNS 名稱是否可以從 HCM 主機解析。 使用 nslookup EndpointDNSname 檢查解析,其中 EndpointDNSname 與混合式連線定義中使用的專案完全相符。
  • 使用 PowerShell 命令 Test-NetConnection EndpointDNSname -P 埠 從 HCM 主機測試從 HCM 主機存取端點,然後檢查兩部主機之間的防火牆,包括目的地主機上的任何主機型防火牆。
  • 如果您使用 Linux 上的 App Service,請確定您不是使用 「localhost」 作為端點主機。 如果您嘗試在本機電腦上建立與資源的連線,請改用您的電腦名稱稱。

在App Service中,您可以從 [進階工具] (Kudu) 主控台叫用tcpping命令列工具。 此工具可以告訴您您是否具有 TCP 端點的存取權,但無法告訴您您是否具有混合式連線端點的存取權。 當您在主控台中針對混合式連線端點使用此工具時,您只會確認它使用 host:port 組合。

如果您有端點的命令列用戶端,您可以從應用程式主控台測試連線能力。 例如,您可以使用 curl 測試 Web 服務器端點的存取權。