將您的應用程式與 Azure 虛擬網路整合
本文說明 Azure App Service 虛擬網路整合功能,以及如何使用 App Service 中的應用程式來加以設定。 使用 Azure 虛擬網路後,您可以將許多 Azure 資源放在非網際網路可路由的網路中。 App Service 虛擬網路整合功能可讓您的應用程式存取虛擬網路中的資源,或透過虛擬網路存取資源。
注意
閘道必要虛擬網路整合的相關資訊已 移至新的位置。
App Service 具有兩種變化:
- 專用計算定價層,包括基本、標準、進階、進階 v2 和進階 v3。
- App Service 環境,其會直接部署至具有專用支援基礎結構的虛擬網路中,並使用隔離式和隔離式 v2 定價層。
虛擬網路整合功能用於 Azure App Service 專用計算價格層。 如果您的應用程式位於App Service 環境中,它已與虛擬網路整合,而且不需要您設定虛擬網路整合功能,以連線到相同虛擬網路中的資源。 如需所有網路功能的詳細資訊,請參閱 App Service 網路功能。
虛擬網路整合能讓您的應用程式存取虛擬網路中的資源,但不會從虛擬網路授與應用程式的輸入私人存取權。 私人站台存取是指讓您的應用程式只能透過私人網路 (例如在 Azure 虛擬網路中) 存取。 虛擬網路整合只用於從應用程式傳送輸出呼叫到虛擬網路。 請參閱 私人端點 以取得輸入私人存取。
虛擬網路整合功能:
- 需要支援的基本或標準、進階、進階 v2、進階 v3 或彈性進階 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。 每個方案執行個體的整合子網路會使用一個位址。 如果您將應用程式調整為四個執行個體,則會使用四個位址。
擴大或縮小規模時,所需的位址空間會在短時間內加倍。 調整作業會影響指定子網大小的實際可用支援實例。 下表顯示每個 CIDR 區塊可用的位址上限,以及可用位址對水準調整的影響。
CIDR 區塊大小 | 可用位址上限 | 水平調整上限 (執行個體)* |
---|---|---|
/28 | 11 | 5 |
/27 | 27 | 13 |
/26 | 59 | 29 |
*假設您在某個時間點需要相應增加或減少大小或 SKU。
因為子網路大小在指派之後就無法變更,所以請使用足以容納應用程式可能連線的任何子網路規模。 若要避免子網路容量發生任何問題,請使用具有 64 個位址的 /26
。 與虛擬網路整合的期間,在 Azure 入口網站中建立子網路時,需要的大小下限為 /27。 如果子網已存在,再透過入口網站整合,您可以使用 /28 子網。
注意
Windows 容器會針對每個 App Service 方案執行個體的每個應用程式使用一個額外的 IP 位址,因此您必須據以調整子網路的大小。 例如,如果您有 10 個 Windows 容器 App Service方案執行個體及 4 個執行中應用程式,則您需要 50 個 IP 位址及額外的位址,才能支援水平 (增加/減少) 調整。
如果想讓您方案中的應用程式連線至另一個方案中應用程式已連線的虛擬網路,則請選取不同於預先存在的虛擬網路整合所使用的子網路。
權限
您必須至少擁有子網或較高層級的下列角色型存取控制許可權,才能透過 Azure 入口網站、CLI 或直接設定 virtualNetworkSubnetId
月臺屬性時設定虛擬網路整合:
動作 | 描述 |
---|---|
Microsoft.Network/virtualNetworks/read | 讀取虛擬網路定義 |
Microsoft.Network/virtualNetworks/subnets/read | 讀取虛擬網路子網路定義 |
Microsoft.Network/virtualNetworks/subnets/join/action | 加入虛擬網路 |
如果虛擬網路位於與應用程式不同的訂用帳戶中,則您必須確定已向 Microsoft.Web
資源提供者註冊具有虛擬網路的訂用帳戶。 您可以 遵循此檔來明確註冊提供者,但會在訂用帳戶中建立第一個 Web 應用程式時自動註冊。
路由
您可以控制哪些流量通過虛擬網路整合。 當您設定虛擬網路整合時,需要考慮三種類型的路由。 應用程式路由會定義從您的應用程式路由傳送的流量,以及路由傳送至虛擬網路的流量。 設定路由會影響啟動應用程式之前或期間發生的作業。 範例包括具有金鑰保存庫參考的容器映射提取和應用程式設定。 網路路由是處理如何從虛擬網路路由應用程式和設定流量,並從它們之中路由輸出的能力。
透過應用程式路由或組態路由選項,您可以設定透過虛擬網路整合傳送的流量。 只有在透過虛擬網路整合傳送流量時,流量才會受到網路路由限制。
應用程式路由
應用程式路由會套用至應用程式啟動之後,從您的應用程式傳送的流量。 請參閱啟動期間流量的設定路由。 當您設定應用程式路由時,可以將所有流量或只將私人流量 (也稱為 RFC1918 流量) 路由傳送至虛擬網路。 您可以透過 [完整路由] 設定來設定此行為。 如果停用 [完整路由],則應用程式只會將私人流量路由傳送至您的虛擬網路。 如果您想要將所有輸出應用程式流量都路由傳送至虛擬網路,則請確定已啟用 [Route All] \(完整路由\)。
- 只有應用程式或設定路由中設定的流量,會受限於套用至整合子網路的 NSG 和 UDR。
- 啟用 [全部路由傳送] 時,來自應用程式的輸出公用流量來源位址仍是您應用程式屬性中列出的其中一個 IP 位址。 如果您透過防火牆或 NAT 閘道路由傳送流量,來源 IP 位址來自此服務。
了解如何設定應用程式路由。
注意
透過虛擬網路整合來路由 SMTP 流量時,App Service 支援輸出 SMTP 連線 (連接埠 25)。 支援性取決於部署虛擬網路所在訂用帳戶上的設定。 如果虛擬網路/子網路是在 2022 年 8 月 1 日以前建立,您必須起始虛擬網路/子網路的暫時組態變更,才能從訂用帳戶同步設定。 例如,新增暫時子網路、暫時關聯/中斷關聯 NSG,或暫時設定服務端點。 如需詳細資訊,請參閱針對 Azure 中的輸出 SMTP 連線能力問題進行疑難排解。
設定路由
當您使用虛擬網路整合時,您可以設定管理設定流量的方式。 根據預設,組態流量會直接通過公用路由,但針對提及的個別元件,您可以主動將其設定為透過虛擬網路整合進行路由。
內容共用
Functions 經常使用自備的內容儲存體,其中內容共用設定為 Functions 應用程式的一部分。
若要透過虛擬網路整合路由傳送內容共用流量,您必須確定已設定路由傳送設定。 了解如何設定內容共用的路由傳送。
除了設定路由傳送之外,您也必須確保子網路流量上設定的任何防火牆或網路安全性群組,都允許流量流向連接埠 443 和 445。
容器映像提取
使用自訂容器時,您可以透過虛擬網路整合提取容器。 若要透過虛擬網路整合路由傳送容器提取流量,您必須確定已設定路由傳送設定。 深入了解如何設定映像提取的路由傳送。
使用 Key Vault 參考的應用程式設定
使用金鑰保存庫參考的應用程式設定會嘗試透過公用路由取得秘密。 如果金鑰保存庫封鎖公用流量,而且應用程式正在使用虛擬網路整合,則會嘗試透過虛擬網路整合取得秘密。
注意
- 目前不支援備份/還原至私人儲存體帳戶。
- 目前不支援從私人 Key Vault 設定 SSL/TLS 憑證。
- 目前不支援對私人儲存體帳戶的 App Service 記錄。 我們建議使用診斷記錄,並允許儲存體帳戶的受信任服務。
網路路由
您可以使用路由表來路由來自應用程式的輸出流量,而不會受到任何限制。 常見的目的地包括防火牆裝置或閘道。 您也可以使用網路安全性群組 (NSG) 來封鎖對您虛擬網路或網際網路中所含資源的輸出流量。 無論套用至整合子網路的路由表為何,套用至整合子網路的 NSG 都會生效。
路由表和網路安全性群組僅適用於透過虛擬網路整合路由的流量。 如需詳細資料,請參閱應用程式路由和設定路由。 路由不適用於來自輸入應用程式要求的回復,NSG 中的輸入規則則不適用於您的應用程式。 虛擬網路整合只會影響來自您應用程式的輸出流量。 若要控制應用程式的輸入流量,請使用 存取限制 功能或 私人端點。
設定適用于輸出流量的網路安全性群組或路由表時,您必須確定您考慮應用程式相依性。 應用程式相依性包括應用程式在執行時間期間所需的端點。 除了應用程式所呼叫的 API 和服務之外,這些端點也可以衍生端點,例如憑證撤銷清單 (CRL) 檢查端點和身分識別/驗證端點,例如 Azure Active Directory。 如果您在 App Service 中使用持續部署,可能也需要根據類型和語言來允許端點。 特別是針對 Linux 持續部署,您必須允許 oryx-cdn.microsoft.io:443
。
當您想要將輸出流量路由傳送至內部部署時,可以使用路由表將輸出流量傳送至您的 Azure ExpressRoute 閘道。 如果您確實將流量路由傳送至閘道,則請在外部網路中設定路由以傳回任何回覆。 邊界閘道協定 (BGP) 路由也會影響您的應用程式流量。 如果您有 BGP 路由來自類似 ExpressRoute 閘道的地方,您的應用程式輸出流量會受到影響。 與使用者定義的路由類似,BGP 路由會根據您的路由範圍設定來影響流量。
服務端點
虛擬網路整合可讓您連線到使用服務端點保護的 Azure 服務。 若要存取服務端點保護的服務,請遵循下列步驟:
- 設定虛擬網路與您的 Web 應用程式整合,以連線到特定子網以進行整合。
- 前往目的地服務,並針對整合子網路設定服務端點。
私人端點
如果您想要對私人端點進行呼叫,則請確定您的 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
或更大區塊的未使用子網路。 - 應用程式和虛擬網路必須位於相同的區域。
- 整合虛擬網路無法定義 IPv6 位址空間。
- 整合子網無法啟用服務端點原則。
- 整合子網路只能供一個 App Service 方案使用。
- 您無法刪除具有整合式應用程式的虛擬網路。 請先移除整合,再刪除虛擬網路。
- 每個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' 仍會指派給您的子網,並防止更新/刪除作業。
若要再次更新/刪除子網或虛擬網路,您需要重新建立虛擬網路整合,然後中斷連線:
- 重新建立App Service方案和應用程式 (必須使用與) 完全相同的 Web 應用程式名稱。
- 流覽至應用程式上的 [網路] Azure 入口網站並設定虛擬網路整合。
- 設定虛擬網路整合之後,請選取 [中斷連線] 按鈕。
- 刪除App Service方案或應用程式。
- 更新/刪除子網路或虛擬網路。
如果您在遵循下列步驟之後仍遇到虛擬網路整合的問題,請連絡Microsoft 支援服務。