通过从 Azure 应用服务应用与 Azure 虚拟网络进行集成,你可以从虚拟网络中的应用访问专用资源。
先决条件
虚拟网络集成功能需要:
- 支持虚拟网络集成的应用服务定价层。
- 同一区域中包含空子网的虚拟网络。
子网必须委派给 Microsoft.Web/serverFarms。 如果未在集成之前完成委派,预配过程将会配置此委派。 必须为子网分配一个 IPv4 /28
块(16 个地址)。 建议至少分配 64 个地址(IPv4 /26
块)以实现最大程度的横向缩放。
如果虚拟网络与应用位于不同的订阅中,请确保为 Microsoft.Web
资源提供程序注册使用虚拟网络的订阅。 在订阅中创建第一个 Web 应用时会注册提供程序。 若要显式注册提供程序,请参阅注册资源提供程序。
在 Azure 门户中配置
在 Azure 门户中转到你的应用。 选择“设置”>“网络”。 在“出站流量配置”下的“虚拟网络集成”旁边,选择“未配置”链接。
选择“Azure 虚拟网络集成”。
选择订阅和虚拟网络。
“子网”下的下拉列表包含同一区域中的订阅内的所有虚拟网络。 选择预先存在的空子网,或创建新子网。 选择“连接” 。
在集成期间,应用会重启。 完成集成后,系统将显示你所集成的虚拟网络的详细信息。
使用 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 应用的订阅。