App Service 網路功能

您可以透過多種方式,在 Azure App Service 中部署應用程式。 依預設,裝載於 App Service 的應用程式可以直接透過網際網路存取,而且只能連線到網際網路裝載的端點。 但對於許多應用程式,您必須控制輸入和輸出網路流量。 App Service 中有數項功能可協助您符合這些需求。 挑戰在於知道可用來解決特定問題的功能。 本文將協助您根據一些範例使用案例來判斷要使用的功能。

有兩種適用於 Azure App Service 的主要部署類型:

  • 多租用戶公用服務會在免費、共用、基本、標準、進階、PremiumV2 和 PremiumV3 定價 SKU 中裝載 App Service 方案。
  • 單一租用戶 App Service 環境 (ASE) 會直接在 Azure 虛擬網路中裝載隔離式 SKU App Service方案。

您所使用的功能取決於您位於多租用戶服務或 ASE 中。

注意

網路功能不適用於部署在 Azure Arc 中的應用程式

多租用戶 App Service 網路功能

Azure App Service 是分散式系統。 處理傳入 HTTP 或 HTTPS 要求的角色稱為前端。 裝載客戶工作負載的角色稱為背景工作角色。 多租用戶網路中有 App Service 部署中的所有角色。 因為相同 App Service 縮放單位中有許多不同客戶,所以您無法將 App Service 網路直接連線到您的網路。

您不需要連線網路,而是需要功能來處理應用程式通訊的各種層面。 當您從應用程式進行呼叫時,無法使用處理應用程式要求的功能來解決問題。 同樣地,用來解決來自您應用程式呼叫問題的功能,也無法用來解決應用程式的問題。

輸入功能 輸出功能
應用程式指派的位址 混合式連線
存取限制 需要閘道的虛擬網路整合
服務端點 虛擬網路整合
私人端點

除了所述的例外狀況以外,您可以將所有這些功能一起使用。 您可以混用這些功能來解決您的問題。

使用案例和功能

針對任何指定的使用案例,可能有幾個方法可以解決問題。 選擇最佳功能的基準有時不僅在於使用案例本身。 下列輸入使用案例建議如何使用 App Service 網路功能來解決控制流向應用程式流量的問題:

輸入使用案例 功能
支援應用程式以 IP 為基礎的 SSL 需求 應用程式指派的位址
針對您應用程式支援未共用的專用輸入位址 應用程式指派的位址
以一組定義完善的位址限制存取您的應用程式 存取限制
限制從虛擬網路中的資源存取您的應用程式 服務端點
內部 Load Balancer (ILB) ASE
私人端點
在虛擬網路中公開私人 IP 上的應用程式 ILB ASE
私人端點
具有服務端點應用程式閘道執行個體上輸入流量的私人 IP
使用 Web 應用程式防火牆 (WAF) 保護您的應用程式 應用程式閘道和 ILB ASE
應用程式閘道搭配私人端點
應用程式閘道搭配服務端點
具有存取限制的 Azure Front Door
對不同區域中應用程式的流量進行負載平衡 具有存取限制的 Azure Front Door
對相同區域中的流量進行負載平衡 具有服務端點的應用程式閘道

下列輸出使用案例建議如何使用 App Service 網路功能來解決應用程式的輸出存取需求:

輸出使用案例 功能
存取資源位於相同區域中的 Azure 虛擬網路 虛擬網路整合
ASE
存取資源位於不同區域中的 Azure 虛擬網路 虛擬網路整合和虛擬網路對等互連
閘道需要的虛擬網路整合
ASE 和虛擬網路對等互連
存取使用服務端點保護的資源 虛擬網路整合
ASE
存取私人網路中未連線至 Azure 的資源 混合式連線
存取跨 Azure ExpressRoute 線路的資源 虛擬網路整合
ASE
保護來自您 Web 應用程式的輸出流量 虛擬網路整合和網路安全性群組
ASE
路由傳送來自您 Web 應用程式的輸出流量 虛擬網路整合和路由表
ASE

預設網路行為

Azure App Service 縮放單位在每個部署中支援許多客戶。 免費和共用 SKU 方案會在多租用戶背景工作角色上裝載客戶工作負載。 Basic 和更高方案會裝載專屬於僅限一個 App Service 方案的客戶工作負載。 如果您有 Standard App Service 方案,該方案中的所有應用程式都會在相同背景工作角色上執行。 如果您向外延展背景工作角色,該 App Service 方案中的所有應用程式都會在您的 App Service 方案中每個執行個體的新背景工作角色上複寫。

輸出位址

背景工作角色 VM 會依 App Service 方案細分為大部分。 Free、Shared、Basic、Standard 和 Premium 方案全都使用相同的背景工作角色 VM 類型。 PremiumV2 方案使用另一個 VM 類型。 PremiumV3 還使用另一個 VM 類型。 變更 VM 系列時,您會收到一組不同的輸出位址。 如果您從 Standard 調整為 PremiumV2,您的輸出位址將會變更。 如果您從 PremiumV2 調整為 PremiumV3,您的輸出位址將會變更。 在某些較舊的縮放單位中,當您從 Standard 調整為 PremiumV2 時,輸入和輸出位址都會變更。

有許多位址用於輸出呼叫。 您的應用程式用來進行輸出呼叫的輸出位址會列在應用程式的屬性中。 這些位址是由 App Service 部署中相同背景工作角色 VM 系列上執行的所有應用程式共用。 如果您想要查看應用程式可能會在縮放單位中使用的所有位址,有一個名為 possibleOutboundAddresses 的屬性將可列出。

Screenshot that shows app properties.

App Service 有許多端點可用來管理服務。 這些位址會發佈在不同的文件中,而且也會在 AppServiceManagement IP 服務標籤中。 AppServiceManagement 標籤僅用於需要允許此類流量的 App Service 環境。 App Service 輸入位址會在 AppService IP 服務標籤中進行追蹤。 沒有任何 IP 服務標籤包含 App Service 所使用的輸出位址。

Diagram that shows App Service inbound and outbound traffic.

應用程式指派的位址

應用程式指派的位址功能是 IP 型 SSL 功能的衍生。 您可以透過使用應用程式設定 SSL 來進行存取。 您可以將此功能用於 IP 型 SSL 呼叫。 您也可以將其用來為應用程式提供專用位址。

Diagram that illustrates app-assigned address.

當您使用應用程式指派的位址時,您的流量仍會通過相同的前端角色,以處理進入 App Service 縮放單位的所有傳入流量。 但是,指派給應用程式的位址只能由您的應用程式使用。 此功能的使用案例:

  • 支援應用程式的 IP 型 SSL 需求。
  • 為未共用的應用程式設定專用位址。

若要瞭解如何在應用程式上設定位址,請參閱在 Azure App Service 中新增 TLS/SSL 憑證

存取限制

存取限制可讓您篩選輸入要求。 篩選動作會在從應用程式執行所在背景工作角色上游的前端角色上執行。 由於前端角色是背景工作角色的上游,因此您可以將存取限制視為應用程式的網路層級保護。 如需存取限制的詳細資訊,請參閱存取限制概觀

這項功能可讓您建置以優先順序評估的允許和拒絕規則清單。 這類似於 Azure 網路中的網路安全性群組 (NSG) 功能。 您可以在 ASE 或多租用戶服務中使用此功能。 當您將其與 ILB ASE 搭配使用時,您可以限制來自私人位址區塊的存取。 若要瞭解如何啟用此功能,請參閱設定存取限制

注意

每個應用程式最多可設定 512 個存取限制規則。

Diagram that illustrates access restrictions.

私人端點

私人端點是一種網路介面,其可以私人且安全的方式連線至 Azure Private Link 所支援的 Web 應用程式。 私人端點會使用您虛擬網路中的私人 IP 位址,有效地將 Web 應用程式帶入您的虛擬網路。 這項功能僅適用於 Web 應用程式的輸入流量。 如需詳細資訊,請參閱針對 Azure Web 應用程式使用私人端點

此功能的部分使用案例:

  • 限制從虛擬網路中的資源存取您的應用程式。
  • 在虛擬網路中公開私人 IP 上的應用程式。
  • 使用 WAF 保護您的應用程式。

私人端點可防止資料外流,因為您僅能透過已設定的應用程式觸達私人端點。

混合式連線

App Service 混合式連線可讓您的應用程式對指定的 TCP 端點發出輸出呼叫。 端點可以位於內部部署上、虛擬網路中,或允許連接埠 443 上對 Azure 輸出流量的任何位置。 若要使用此功能,您必須在 Windows Server 2012或更新的主機上安裝名為混合式連線管理員的轉送代理程式。 混合式連線管理員必須能夠觸達連接埠 443 上的 Azure 轉送。 您可以從入口網站中的 App Service 混合式連線 UI 下載混合式連線管理員。

Diagram that shows the Hybrid Connections network flow.

App Service 混合式連線是以 Azure 轉送混合式連線功能為基礎而建置的。 App Service 使用特殊形式的功能,僅支援從您的應用程式對 TCP 主機和連接埠發出輸出呼叫。 此主機和連接埠只需要在安裝混合式連線管理員的主機上解析。

當應用程式在 App Service 中,對混合式連線中定義的主機和連接埠執行 DNS 查閱時,流量會自動重新導向以通過混合式連線,並從混合式連線管理員輸出。 若要深入瞭解,請參閱 App Service 混合式連線

此功能經常用於:

  • 使用 VPN 或 ExpressRoute 存取未連線至 Azure 的私人網路資源。
  • 支援將內部部署應用程式移轉至App Service,而不需要移動支援的資料庫。
  • 針對每個混合式連線,提供對單一主機和連接埠的安全性提升。 多數網路功能都會開啟對網路的存取。 使用混合式連線時,您只能連線至單一主機和連接埠。
  • 涵蓋其他輸出連線方法未涵蓋的案例。
  • 以可讓應用程式輕鬆地使用內部部署資源的方式,在 App Service 中執行開發。

由於此功能可讓您存取沒有輸入防火牆漏洞的內部部署資源,因此開發人員很受歡迎。 其他輸出 App Service 網路功能與 Azure 虛擬網路相關。 混合式連線並不依賴於通過虛擬網路。 該連線可用於更廣泛的網路需求。

App Service 混合式連線無法察覺您正在執行的動作。 因此,您可以將其用來存取大型主機上的資料庫、Web 服務或任意 TCP 通訊端。 此功能基本上會通道傳送 TCP 封包。

混合式連線經常用於開發,但也用於生產應用程式。 此連線非常適合用於存取 Web 服務或資料庫,但不適用於涉及建立許多連線的情況。

虛擬網路整合

App Service 虛擬網路整合可讓您的應用程式對 Azure 虛擬網路發出輸出要求。

虛擬網路整合功能可讓您將應用程式的後端放在 Resource Manager 虛擬網路的子網路中。 虛擬網路必須與您的應用程式一樣位於相同的區域中。 此功能無法從已在虛擬網路中的 App Service 環境取得。 此功能的使用案例:

  • 存取相同區域中 Resource Manager 虛擬網路中的資源。
  • 存取對等互連虛擬網路中的資源,包括跨區域連線。
  • 存取使用服務端點保護的資源。
  • 存取可跨 ExpressRoute 或 VPN 連線存取的資源。
  • 存取私人網路中的資源,而不需要虛擬網路閘道的成本。
  • 協助保護所有輸出流量。
  • 強制通道傳送所有輸出流量。

Diagram that illustrates virtual network integration.

若要深入瞭解,請參閱 App Service 虛擬網路整合

需要閘道的虛擬網路整合

閘道必要的虛擬網路整合是 App Service 中的第一個虛擬網路整合版本。 此功能的運作方式是使用點對站 VPN,將應用程式執行所在的主機連線至虛擬網路上的虛擬網路閘道。 當您設定此功能時,您的應用程式會取得指派給每個執行個體的其中一個點對站指派的位址。

Diagram that illustrates gateway-required virtual network integration.

閘道必要的整合可讓您直接連線到另一個區域中的虛擬網路 (而不需要對等互連),以及連線到傳統虛擬網路。 此功能僅限於 App Service Windows 方案,不適用於 ExpressRoute 連線的虛擬網路。 建議您使用區域虛擬網路整合。 如需此功能的詳細資訊,請參閱 App Service 虛擬網路整合

App Service 環境

App Service 環境 (ASE) 是在虛擬網路中執行的 Azure App Service 部署。 此功能的一些案例如下:

  • 存取虛擬網路中的資源。
  • 跨 ExpressRoute 存取資源。
  • 在虛擬網路中使用私人位址公開您的應用程式。
  • 跨服務端點存取資源。
  • 跨私人端點存取資源。

使用 ASE 時,您不需要使用虛擬網路整合,因為 ASE 已經在虛擬網路中。 如果您想要透過服務端點存取 SQL 或 Azure 儲存體等資源,請在 ASE 子網路上啟用服務端點。 如果您想要存取虛擬網路中的資源或虛擬網路中的私人端點,則不需要執行任何額外的設定。 如果您想要跨 ExpressRoute 存取資源,表示已在虛擬網路中,且不需要在 ASE 或其中的應用程式內進行任何設定。

由於 ILB ASE 中的應用程式可以在私人 IP 位址上公開,因此您可以輕鬆地新增 WAF 裝置,以僅公開您想要連線網際網路的應用程式,並協助維持剩餘應用程式的安全。 這項功能有助於簡化多層式應用程式開發。

目前無法從多租用戶服務 (但可能可從 ASE) 取得某些功能。 以下列出一些範例:

  • 在單一租用戶服務中裝載您的應用程式。
  • 擴大至更多執行個體,超過多租用戶服務中的可能執行個體數量。
  • 載入私人 CA 用戶端憑證,以供您的應用程式搭配私人 CA 保護的端點使用。
  • 在裝載於系統的所有應用程式上強制執行 TLS 1.2,無法在應用層級停用。

Diagram that illustrates an ASE in a virtual network.

ASE 提供隔離和專用應用程式裝載的最佳案例,但確實牽涉到一些管理挑戰。 使用作業 ASE 之前要考量的一些事項:

  • ASE 會在虛擬網路內執行,但在虛擬網路外部具有相依性。 必須允許這些相依性。 如需詳細資訊,請參閱 App Service 環境的網路考量
  • ASE 不會像多租用戶服務一般立即調整。 您需要預測調整需求,而非以回應方式調整。
  • ASE 的預先成本較高。 若要充分利用 ASE,您應該規劃將許多工作負載放入一個 ASE 中,而非將其用於小型工作。
  • ASE 中的應用程式無法選擇性地限制對 ASE 中某些應用程式 (而非其他應用程式) 的存取。
  • ASE 位於子網路中,而任何網路規則都會套用至往返於該 ASE 的所有流量。 如果您想要只指派一個應用程式的輸入流量規則,請使用存取限制。

合併功能

針對多租用戶服務所提到的功能可以一起使用,以解決更複雜的使用案例。 這裡描述了兩個較常見的使用案例,但這只是範例。 藉由瞭解各種功能,您幾乎可以滿足所有系統架構需求。

將應用程式放入虛擬網路

您可能想知道如何將應用程式放入虛擬網路。 如果您將應用程式放入虛擬網路中,應用程式的輸入和輸出端點會位於虛擬網路內。 ASE 是解決此問題的最佳方式。 但您可以結合多個功能,以滿足多租用戶服務內的多數需求。 例如,您可以透過下列方式,裝載僅限內部網路的應用程式,其中包含私人輸入和輸出位址:

  • 建立具有私人輸入和輸出位址的應用程式閘道。
  • 使用服務端點保護您應用程式的輸入流量。
  • 使用虛擬網路整合功能,讓應用程式的後端位於虛擬網路中。

此部署樣式不會為您提供網際網路輸出流量的專用位址,或鎖定來自您應用程式所有輸出流量的能力。 而是會提供您多數只使用 ASE 所取得的功能。

建立多層式應用程式

多層式應用程式是只能從前端層存取 API 後端應用程式的一種應用程式。 有兩種方式可以建立多層式應用程式。 這兩個方式都是從使用虛擬網路整合開始,將前端 Web 應用程式連線至虛擬網路中的子網路。 這麼做可讓 Web 應用程式對虛擬網路發出呼叫。 在前端應用程式連線至虛擬網路之後,您需要決定如何鎖定對 API 應用程式的存取。 您可以:

  • 在相同的 ILB ASE 中同時裝載前端和 API 應用程式,並使用應用程式閘道向網際網路公開前端應用程式。
  • 在多租用戶服務中裝載前端,並在 ILB ASE 中裝載後端。
  • 在多租用戶服務中同時裝載前端和 API 應用程式。

如果您要同時裝載多層式應用程式的前端和 API 應用程式,您可以:

  • 在虛擬網路中使用私人端點公開您的 API 應用程式:

    Diagram that illustrates the use of private endpoints in a two-tier app.

  • 使用服務端點來確保 API 應用程式的輸入流量只來自前端 Web 應用程式所使用的子網路:

    Diagram that illustrates the use of service endpoints to help secure an app.

以下是一些可協助您決定要使用哪個方法的考量:

  • 當您使用服務端點時,只需要保護 API 應用程式到整合子網路的流量。 服務端點有助於保護 API 應用程式,但您仍然可以將資料從前端應用程式外流至應用程式服務中的其他應用程式。
  • 當您使用私人端點時,您會使用兩個子網路,而這會增加複雜性。 此外,私人端點是最上層資源,也會增加管理額外負荷。 使用私人端點的優點在於沒有資料外流的可能性。

無論哪個方法都會使用多個前端。 在小型規模上,服務端點更容易使用,因為您只需在前端整合子網路上啟用 API 應用程式的服務端點即可。 當您新增更多前端應用程式時,您必須調整每個 API 應用程式,以包含具有整合子網路的服務端點。 當您使用私人端點時,情況會比較複雜,但在設定私人端點之後,便不需要變更 API 應用程式上的任何內容。

企業營運應用程式

企業營運 (LOB) 應用程式是通常不會公開供網際網路存取的內部應用程式。 這些應用程式會從公司網路內呼叫,而存取權可能會受到嚴格控制。 如果您使用 ILB ASE,便可以輕鬆地裝載企業營運應用程式。 如果您使用多租用戶服務,則可以使用私人端點,或使用與應用程式閘道結合的服務端點。 有兩個原因以搭配服務端點使用應用程式閘道,而非使用私人端點:

  • 您需要 LOB 應用程式上的 WAF 保護。
  • 您想要對 LOB 應用程式的多個執行個體進行負載平衡。

如果這兩個需求都不適用,您最好不要使用私人端點。 透過 App Service 中可用的私人端點,您可以在虛擬網路中的私人位址上公開您的應用程式。 您在虛擬網路中放置的私人端點可以在 ExpressRoute 和 VPN 連線之間觸達。

設定私人端點將會在私人位址上公開您的應用程式,但您必須設定 DNS 以從內部部署觸達該位址。 若要讓此設定運作,您必須將包含私人端點的 Azure DNS 私人區域轉送至內部部署 DNS 伺服器。 Azure DNS 私人區域不支援區域轉送,但您可以使用 Azure DNS 私人解析器來支援區域轉送。

App Service 連接埠

如果您掃描 App Service,將會發現針對輸入連線公開的數個連接埠。 無法封鎖或控制多租用戶服務中對這些連接埠的存取。 以下是公開連接埠的清單:

使用 一或多個連接埠
HTTP/HTTPS 80、443
管理 454、455
FTP/FTPS 21、990、10001-10300
Visual Studio 遠端偵錯 4020、4022、4024
Web Deploy 服務 8172
基礎結構使用 7654、1221