將您的應用程式與 Azure 虛擬網路整合

本文說明 Azure App 服務 虛擬網路整合功能,以及如何在App Service中使用應用程式進行設定。 透過 Azure 虛擬網路,您可以將許多 Azure 資源放在非因特網路由的網路中。 App Service 虛擬網路整合功能可讓您的應用程式存取 VNet 中的資源,或透過 VNet 存取資源。

注意

閘道必要虛擬網路整合的相關信息已 移至新位置

App Service 有兩種變化:

  • 專用的計算定價層,包括基本、標準、進階、進階 v2 和進階 v3。
  • App Service 環境,其會直接部署至具有專用支援基礎結構的虛擬網路,並使用隔離式和隔離式 v2 定價層。

虛擬網路整合功能會用於 Azure App Service 專用計算定價層。 如果您的應用程式位於 App Service 環境 中,它已與虛擬網路整合,而且不需要您設定虛擬網路整合功能以連線到相同虛擬網路中的資源。 如需所有網路功能的詳細資訊,請參閱 App Service 網路功能

虛擬網路整合能讓您的應用程式存取您虛擬網路中的資源,但不會授與從虛擬網路存取您應用程式的輸入私人存取權。 私人站台存取是指讓您的應用程式只能透過在 Azure 虛擬網路中等私人網路存取。 虛擬網路整合只會用來從您的應用程式對虛擬網路進行輸出呼叫。 如需 輸入私人存取,請參閱私人端點

虛擬網路整合功能:

  • 需要支援的基本或標準、進階版、進階版 v2、進階版 v3 或 Elastic 進階版 App Service 定價層。
  • 支援 TCP 和 UDP。
  • 使用 App Service 應用程式、函數應用程式和邏輯應用程式。

虛擬網路整合不支援部分項目,例如:

  • 掛接磁碟機。
  • Windows Server Active Directory 網域加入。
  • NetBIOS。

虛擬網路整合支援連線至相同區域中的虛擬網路。 使用虛擬網路整合可讓您的應用程式存取:

  • 您在虛擬網路中整合的資源。
  • 在與您應用程式所整合虛擬網路對等互連之虛擬網路中的資源,包括全域對等互連連線。
  • Azure ExpressRoute 連線中的資源。
  • 服務端點保護的服務。
  • 已啟用私人端點的服務。

當您使用虛擬網路整合時,可以使用下列 Azure 網路功能:

  • 網路安全組 (NSG):您可以使用您在整合子網上使用的NSG 來封鎖輸出流量。 因為您無法使用虛擬網路整合來提供應用程式的輸入存取權,所以不適用輸入規則。
  • 路由表 (UDR):您可以將路由表放在整合子網上,以傳送您想要的輸出流量。
  • NAT 閘道:您可以使用 NAT 閘道來取得專用的輸出IP,並降低 SNAT 埠耗盡。

瞭解如何 啟用虛擬網路整合

虛擬網路整合的運作方式

App Service 中的應用程式裝載於背景工作角色上。 虛擬網路整合的運作方式是將虛擬介面掛接至具有委派子網路中位址的背景工作角色。 使用的虛擬介面不是客戶可直接存取的資源。 因為來源位址位於您的虛擬網路中,所以它可以存取虛擬網路中,或透過虛擬網路中存取多數內容,例如虛擬網路中的 VM。

顯示虛擬網路整合運作方式的圖表。

啟用虛擬網路整合時,您的應用程式會透過虛擬網路進行輸出呼叫。 應用程式屬性入口網站中所列的輸出位址是您應用程式仍然使用的位址。 不過,如果您的輸出呼叫是整合虛擬網路或對等互連虛擬網路中的虛擬機器或私人端點,則輸出位址是來自整合子網路的位址。 指派給執行個體的私人 IP 會透過環境變數 WEBSITE_PRIVATE_IP 來公開。

啟用所有流量路由時,所有輸出流量都會傳送至您的虛擬網路。 如果未啟用所有流量路由,則只會將整合子網路上設定的私人流量 (RFC1918) 和服務端點傳送至虛擬網路。 從應用程式直接路由傳送至網際網路的輸出流量。

虛擬網路整合功能支援每個背景工作角色的兩個虛擬介面。 每個背景工作角色有兩個虛擬介面表示每個 App Service 方案的兩個虛擬網路整合。 換句話說,App Service 方案可以有最多兩個子網/虛擬網路的虛擬網路整合。 相同 App Service 方案中的應用程式只能使用特定子網路的其中一個虛擬網路整合,這表示應用程式在指定時間只能有單一虛擬網路整合。

子網路需求

虛擬網路整合取決於專用子網路。 當您建立子網路時,Azure 子網路會從頭取用五個 IP。 每個 App Service 方案執行個體的整合子網路都會使用一個位址。 如果您將應用程式調整為四個執行個體,則會使用四個位址。

當您相應增加/減少實例大小時,App Service 方案所使用的IP位址數量會在調整作業完成時暫時加倍。 在取消布建現有實例之前,新實例必須完全運作。 調整作業會影響指定子網路大小的實際可用支援執行個體。 平台升級需要免費的 IP 位址,以確保升級可以發生,而不會中斷輸出流量。 最後,在擴大、縮小或作業完成之後,可能需要一小段時間才能釋放 IP 位址。 在罕見的情況下,此作業最多可以 12 小時。

由於在指派之後無法變更子網路大小,請使用夠大的子網路來容納應用程式可能達到的任何規模。 您也應該保留用於平台升級的 IP 位址。 若要避免子網路容量發生任何問題,請使用具有 64 個位址的 /26。 當您在 Azure 入口網站 中建立子網作為與虛擬網路整合的一部分時,需要的大小下限/27。 如果子網已存在,再透過入口網站整合,您可以使用 /28 子網。

使用多方案子網聯結 (MPSJ), 您可以將多個 App Service 方案加入相同的子網。 所有 App Service 方案都必須位於相同的訂用帳戶中,但虛擬網路/子網可以位於不同的訂用帳戶中。 每個 App Service 方案中的每個實例都需要來自子網的 IP 位址,而且需要最少的 /26 子網大小才能使用 MPSJ。 如果您打算加入許多和/或大規模方案,您應該規劃較大的子網範圍。

注意

多重方案子網聯結目前為公開預覽狀態。 在預覽期間,應該觀察下列已知限制:

  • 子網大小 /26 的最低需求目前不會強制執行,但將在 GA 強制執行。
  • 如果子網具有可用的IP,則目前沒有驗證,因此您可能能夠加入 N+1 方案,但實例將不會取得 IP。 您可以在已連線至子網的應用程式中,檢視 [虛擬網路整合] 頁面中 Azure 入口網站 的可用IP。

Windows 容器特定限制

Windows 容器會針對每個 App Service 方案執行個體的每個應用程式使用額外的 IP 位址,而且您必須據以調整子網路的大小。 例如,如果您有 10 個包含 4 個執行中應用程式的 Windows 容器 App Service 方案執行個體,則需要 50 個 IP 位址和其他位址,才能支援水平 (縮減/擴增) 調整。

範例計算:

針對每個 App Service 方案實例,您需要:4 個 Windows 容器應用程式 = 4 個 IP 位址 1 個 IP 位址,每個 App Service 方案實例 4 + 1 = 5 個 IP 位址

針對 10 個實例:每個 App Service 方案 5 x 10 = 50 個 IP 位址

因為您有 1 個 App Service 方案,1 x 50 = 50 個 IP 位址。

此外,您也會受限於使用的背景工作 SKU 中可用的核心數目。 每個核心都會新增三個「網路單元」。 背景工作角色本身會使用一個單位,而每個虛擬網路連線都會使用一個單位。 其餘單位可用於應用程式。

範例計算:

App Service 方案實例,執行並使用虛擬網路整合的 4 個應用程式。 應用程式會連線到兩個不同的子網(虛擬網路連線)。 這需要 7 個網路單元(1 個背景工作角色 + 2 個連線 + 4 個應用程式)。 執行此設定的最小大小為 I2v2(4 核心 x 3 單位 = 12 個單位)。

透過 I1v2,您可以使用相同的 (1) 連線執行最多 4 個應用程式,或使用 2 個連線執行 3 個應用程式。

權限

您必須在子網路上至少有下列或更高層級的角色型存取控制權限,才能透過 Azure 入口網站、CLI 或直接設定 virtualNetworkSubnetId 網站屬性時設定虛擬網路整合:

動作 描述
Microsoft.Network/virtualNetworks/read 讀取虛擬網路定義
Microsoft.Network/virtualNetworks/subnets/read 讀取虛擬網路子網路定義
Microsoft.Network/virtualNetworks/subnets/join/action 加入虛擬網路

如果虛擬網路位於與應用程式不同的訂用帳戶中,則您必須確定已向 Microsoft.Web 資源提供者註冊具有虛擬網路的訂用帳戶。 您可以遵循此文件明確註冊提供者,但在訂用帳戶中建立第一個 Web 應用程式時,它也會自動註冊。

路由

您可以控制流經虛擬網路整合的流量。 當您設定虛擬網路整合時,需要考慮三種類型的路由。 應用程式路由 會定義從您的應用程式和虛擬網路路由傳送的流量。 設定路由 會影響應用程式啟動之前或期間發生的作業。 範例包括具有 金鑰保存庫 參考的容器映像提取和應用程式設定網路路由 是處理如何從您的虛擬網路和輸出路由應用程式和組態流量的能力。

透過應用程式路由或組態路由選項,您可以設定透過虛擬網路整合傳送的流量。 只有在透過虛擬網路整合傳送時,流量才會受到 網路路由

應用程式路由

應用程式路由會套用至應用程式啟動時從您的應用程式傳送的流量。 請參閱 啟動期間流量的設定路由 。 當您設定應用程式路由時,您可以將所有流量或僅限私人流量(也稱為 RFC1918 流量)路由傳送至您的虛擬網路。 您可以透過輸出網際網路流量設定來設定此行為。 如果已停用輸出網際網路流量路由,您的應用程式只會將私人流量路由傳送至您的虛擬網路。 如果您想要將所有輸出應用程式流量路由傳送至虛擬網路,請確定已啟用輸出網際網路流量。

  • 只有應用程式或組態路由中設定的流量受限於套用至整合子網路的 NSG 和 UDR。
  • 啟用輸出網際網路流量路由時,來自您應用程式的輸出流量來源位址仍然是應用程式屬性中列出的其中一個 IP 位址。 如果您透過防火牆或 NAT 閘道路由傳送流量,則來源 IP 位址會源自此服務。

瞭解如何 設定應用程式路由

注意

當 SMTP 流量透過虛擬網路整合路由傳送時,App Service 支援輸出 SMTP 連線 (連接埠 25)。 支援性取決於部署虛擬網路所在訂用帳戶上的設定。 針對在 1 之前建立的虛擬網路/子網路。 2022 年 8 月,您必須起始虛擬網路/子網路的暫存組態變更,才能從訂用帳戶同步設定。 例如,新增暫存子網路、暫時建立 NSG 的關聯/解除關聯,或暫時設定服務端點。 如需詳細資訊,請參閱疑難排解 Azure 中的輸出 SMTP 連線問題

組態路由

當您使用虛擬網路整合時,您可以設定如何管理組態流量的部分。 根據預設,組態流量會直接透過公用路由傳送,但針對提及的個別元件,您可以主動設定流量以透過虛擬網路整合進行路由傳送。

內容共用

將您自己的記憶體用於函式中 ,其中內容共用 已設定為 Functions 應用程式的一部分。

若要透過虛擬網路整合路由傳送內容共用流量,您必須確定已設定路由設定。 瞭解如何 設定內容共用路由

除了設定路由之外,您還必須確定子網路流量上設定的任何防火牆或網路安全性群組都允許流量流向連接埠 443 和 445。

容器映像提取

使用自訂容器時,您可以透過虛擬網路整合提取容器。 若要透過虛擬網路整合路由傳送容器提取流量,您必須確定已設定路由設定。 瞭解如何 設定映像提取路由

備份/還原

App Service 有內建的備份/還原,但如果您想要備份至自己的儲存體帳戶,則可以使用自訂備份/還原功能。 如果您想要透過虛擬網路整合將流量路由傳送至儲存體帳戶,則必須設定路由設定。 虛擬網路整合不支援資料庫備份。

使用 Key Vault 參考的應用程式設定

使用 Key Vault 參考的應用程式設定會嘗試透過公用路由取得祕密。 如果 Key Vault 封鎖公用流量,且應用程式正在使用虛擬網路整合,則會嘗試透過虛擬網路整合來取得祕密。

注意

  • 目前不支援從私人 金鑰保存庫 設定 SSL/TLS 憑證。
  • 目前不支援 App Service 記錄至私人儲存體帳戶。 我們建議使用診斷記錄,並允許儲存體帳戶的受信任服務。

路由應用程式設定

App Service 有現有的應用程式設定,可設定應用程式和組態路由。 如果網站屬性和應用程式設定都在,則前者會覆寫後者。 網站屬性的優點是可透過 Azure 原則進行稽核,並在設定時進行驗證。 建議您使用網站屬性。

您仍然可以使用現有的 WEBSITE_VNET_ROUTE_ALL 應用程式設定來設定應用程式路由。

某些組態路由選項也存在應用程式設定。 這些應用程式設定名為 WEBSITE_CONTENTOVERVNETWEBSITE_PULL_IMAGE_OVER_VNET

網路路由

您可以使用路由表,路由傳送來自您應用程式的輸出流量,而不受任何限制。 常見的目的地包括防火牆裝置或閘道。 您也可以使用 網路安全組 (NSG) 來封鎖虛擬網路或因特網中資源的輸出流量。 不論套用至整合子網的任何路由表為何,您套用至整合子網的 NSG 都會生效。

路由表和網路安全性群組僅適用於透過虛擬網路整合路由傳送的流量。 如需詳細資訊,請參閱 應用程式路由組態路由 。 路由不適用於來自輸入應用程式要求的回覆,NSG 中的輸入規則不適用於您的應用程式。 虛擬網路整合只會影響來自您應用程式的輸出流量。 若要控制應用程式的輸入流量,請使用 存取限制 功能或 私人端點

設定套用至輸出流量的網路安全性群組或路由表時,您必須考慮應用程式相依性。 應用程式相依性包括應用程式在執行階段期間所需的端點。 除了應用程式正在呼叫的 API 和服務之外,這些端點也可以衍生端點,例如憑證撤銷清單 (CRL) 檢查端點與身分識別/驗證端點,例如 Microsoft Entra ID。 如果您在 App Service 中使用持續部署,您可能也需要根據類型和語言來允許端點。 特別是針對 Linux 持續部署,您必須允許 oryx-cdn.microsoft.io:443。 針對 Python,您還需要允許 files.pythonhosted.orgpypi.org

當您想要將所有輸出流量路由傳送至內部部署時,可以使用路由表將所有輸出流量傳送至您的 Azure ExpressRoute 閘道。 如果您將流量路由傳送至閘道,請在外部網路中設定路由以傳回任何回覆。 邊界閘道協定 (BGP) 路由也會影響您的應用程式流量。 如果您具有 來自類似 ExpressRoute 閘道的 BGP 路由,您的應用程式輸出流量會受到影響。 與使用者定義的路由類似,BGP 路由會根據您的路由範圍設定影響流量。

服務端點

虛擬網路整合可讓您觸達服務端點所保護的 Azure 服務。 若要存取服務端點保護的服務,請遵循下列步驟:

  1. 設定 Web 應用程式的虛擬網路整合,以連線至特定的子網路進行整合。
  2. 前往目的地服務,並針對整合子網路設定服務端點。

私人端點

如果您想要呼叫 私人端點,請確定您的 DNS 查閱會解析為私人端點。 您可以透過下列其中一種方法強制執行此行為:

  • 與 Azure DNS 私人區域整合。 若您的虛擬網路沒有自訂 DNS 伺服器,則在區域連結至虛擬網路時,便會自動完成整合。
  • 管理應用程式所使用 DNS 伺服器中的私人端點。 若要管理組態,您必須知道私人端點 IP 位址。 然後,使用 A 記錄來指向嘗試連線至該位址的端點。
  • 將您自己的 DNS 伺服器設定為轉接至 Azure DNS 私人區域。

Azure DNS 私人區域

應用程式與虛擬網路整合之後,它會使用與虛擬網路所設定的相同 DNS 伺服器。 如果未指定任何自訂 DNS,則會使用 Azure 預設 DNS 以及連結至虛擬網路的任何私人區域。

限制

使用虛擬網路整合有一些限制:

  • 此功能可從進階 v2 和進階 v3 中的所有 App Service 部署取得。 它也可在基本層和標準層中使用,但僅適用於較新的 App Service 部署。 如果您使用的是較舊的部署,則只能使用進階 v2 App Service 方案中的功能。 如果您想要確定您可以使用基本或標準 App Service 方案中的功能,請在進階 v3 App Service 方案中建立您的應用程式。 這些方案僅支援我們最新的部署。 如果您想要在建立方案之後縮小。
  • 此功能不適用於 App Service 環境中的隔離式方案應用程式。
  • 您無法透過傳統虛擬網路跨對等互連連線來連線資源。
  • 此功能需要 Azure Resource Manager 虛擬網路中 IPv4 /28 區塊或更大的未使用子網。 MPSJ 需要區塊 /26 或更大的區塊。
  • 應用程式和虛擬網路必須位於同一個區域。
  • 整合虛擬網路無法定義 IPv6 位址空間。
  • 整合子網無法 啟用服務端點原則
  • 您無法使用整合式應用程式刪除虛擬網路。 請先移除整合,再刪除虛擬網路。
  • 每個 App Service 方案不能有兩個以上的虛擬網路整合。 相同 App Service 方案中的多個應用程式可以使用相同的虛擬網路整合。
  • 當有使用虛擬網路整合的應用程式時,您無法變更應用程式或方案的訂用帳戶。

存取內部部署資源

虛擬網路整合功能不需要額外的設定,即可透過虛擬網路連線至內部部署資源。 您只需要使用 ExpressRoute 或站對站 VPN 將虛擬網路連線至內部部署資源。

對等互連

如果您使用對等互連搭配虛擬網路整合,便不需要再執行任何設定。

手動虛擬網路整合

使用虛擬網路連線和中斷連線是在應用程式層級。 可能會影響跨多個應用程式中虛擬網路整合的作業位於 App Service 方案層級。 從應用程式 [網路] >> [VNet 整合] 入口網站,您可以取得虛擬網路的詳細資料。 您可以在 [App Service 方案] > [網路] > [VNet 整合] 入口網站中的 App Service 方案層級,查看類似的資訊。

在虛擬網路整合執行個體的應用程式檢視中,您可以將應用程式與虛擬網路中斷連線,而且您可以設定應用程式路由。 若要中斷應用程式與虛擬網路的連線,請選取 [中斷連線]。 當您中斷與虛擬網路的連線時,您的應用程式會重新啟動。 中斷連線並不會變更您的虛擬網路。 不會移除子網路。 如果您接著想要刪除虛擬網路,請先中斷應用程式與虛擬網路的連線。

指派給執行個體的私人IP會透過環境變數 WEBSITE_PRIVATE_IP 公開。 Kudu 主控台 UI 也會顯示 Web 應用程式可用的環境變數清單。 此 IP 會從整合式子網路的位址範圍指派。 Web 應用程式會使用此 IP 透過 Azure 虛擬網路連線至資源。

注意

WEBSITE_PRIVATE_IP 的值會繫結至變更。 不過,這會是整合子網路位址範圍內的 IP,因此您必須允許從整個位址範圍存取。

價格詳細資料

除了 App Service 方案定價層費用之外,虛擬網路整合功能不需要額外費用。

疑難排解

這項功能很容易設定,但不表示您在使用過程中不會遇到問題。 如果您遇到存取所需端點時發生問題,視您觀察到的內容而定,您可以採取各種步驟。 如需詳細資訊,請參閱虛擬網路整合疑難排解指南

注意

  • App Service 中的 Docker Compose 案例不支援虛擬網路整合。
  • 存取限制不適用於通過私人端點的流量。

在中斷網路整合的連線之前,請先刪除 App Service 方案或應用程式

如果您刪除應用程式或 App Service 方案,但未先中斷虛擬網路整合的連線,則無法在已用於與已刪除資源整合的虛擬網路或子網路上執行任何更新/刪除作業。 子網委派 『Microsoft.Web/serverFarms』 仍會指派給您的子網,並防止更新和刪除作業。

若要再次更新/刪除子網路或虛擬網路,您需要重新建立虛擬網路整合,然後中斷其連線:

  1. 重新建立 App Service 方案和應用程式 (必須使用與之前完全相同的 Web 應用程式名稱)。
  2. 在 Azure 入口網站 中瀏覽至應用程式中的網路功能,並設定虛擬網路整合。
  3. 設定虛擬網路整合之後,請選取 [中斷連線] 按鈕。
  4. 刪除 App Service 方案或應用程式。
  5. 更新/刪除子網路或虛擬網路。

如果您在遵循下列步驟之後仍遇到虛擬網路整合的問題,請連絡 Microsoft 支援服務。