在 Azure App Service 中啟用虛擬網路整合
透過從 Azure App Service 應用程式與 Azure 虛擬網路整合,您可以從虛擬網路內的應用程式觸達私人資源。
必要條件
虛擬網路整合功能需要:
- 支援虛擬網路整合的 App Service 定價層。
- 相同區域中具有空白子網路的虛擬網路。
必須委派子網路給 Microsoft.Web/serverFarms。 如果您未在整合之前委派,布建程式會設定此委派。 子網路必須配置 IPv4 /28
區塊 (16 個位址)。 我們建議您至少要有 64 個位址 (IPv4 /26
區塊),以允許最大水平縮放。
如果虛擬網路與應用程式位於不同的訂用帳戶中,請確定已向資源提供者註冊具有虛擬網路的 Microsoft.Web
訂用帳戶。 當您在訂用帳戶中建立第一個 Web 應用程式時,會註冊提供者。 若要明確註冊提供者,請參閱 註冊資源提供者。
在 Azure 入口網站中設定
在 Azure 入口網站 中移至您的應用程式。 選取 [設定]>[網路]。 在 [ 輸出流量設定] 底下 ,選取 [虛擬網络整合] 旁的 [ 未設定 ] 連結。
選取 [新增虛擬網路整合]。
選取訂用帳戶和虛擬網路。
在 [ 子網] 下,下拉式清單包含相同區域中訂用帳戶中的所有虛擬網路。 選取空的預先存在子網或建立新的子網。 選取 Connect。
整合期間,會重新啟動您的應用程式。 整合完成時,您會看到與整合之虛擬網路的詳細數據。
使用 Azure CLI 進行設定
您也可以使用 Azure CLI 來設定虛擬網路整合:
az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>
注意
此命令會檢查子網是否委派給 Microsoft.Web/serverFarms。 如果未設定,命令會套用必要的委派。 如果子網已設定且您沒有檢查它的許可權,或虛擬網路位於另一個訂用帳戶中,您可以使用 --skip-delegation-check
參數略過驗證。
使用 Azure PowerShell 進行設定
準備參數。
$siteName = '<app-name>' $vNetResourceGroupName = '<group-name>' $webAppResourceGroupName = '<group-name>' $vNetName = '<vnet-name>' $integrationSubnetName = '<subnet-name>' $vNetSubscriptionId = '<subscription-guid>'
注意
如果虛擬網路位於 webapp 以外的另一個訂用帳戶中,您可以使用
Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx"
命令來設定目前的訂用帳戶內容。 將目前的訂用帳戶內容設定為部署虛擬網路的訂用帳戶。檢查子網路是否委派給 Microsoft.Web/serverFarms。
$vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName $subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet Get-AzDelegation -Subnet $subnet
如果您的子網未委派給 Microsoft.Web/serverFarms,請使用這些命令新增委派。
$subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet Set-AzVirtualNetwork -VirtualNetwork $vnet
設定虛擬網路整合。
$subnetResourceId = "/subscriptions/$vNetSubscriptionId/resourceGroups/$vNetResourceGroupName/providers/Microsoft.Network/virtualNetworks/$vNetName/subnets/$integrationSubnetName" $webApp = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $webAppResourceGroupName -ResourceName $siteName $webApp.Properties.virtualNetworkSubnetId = $subnetResourceId $webApp.Properties.vnetRouteAllEnabled = 'true' $webApp | Set-AzResource -Force
注意
如果 webapp 位於虛擬網路以外的另一個訂用帳戶中,您可以使用
Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx"
命令來設定目前的訂用帳戶內容。 將目前的訂用帳戶內容設定為部署 Web 應用程式的訂用帳戶。