Habilitación de la integración con red virtual en Azure App Service
Mediante la integración con una red virtual de Azure desde la aplicación de Azure App Service, puede acceder a recursos privados desde la aplicación dentro de la red virtual.
Requisitos previos
La característica de integración de red virtual requiere:
- Un plan de tarifa de App Service que admite la integración de red virtual.
- Una red virtual con una subred vacía en la misma región.
La subred se debe delegar a Microsoft.Web/serverFarms. Si la delegación no se realiza antes de la integración, el proceso de aprovisionamiento configura esta delegación. Se debe asignar un bloque IPv4 /28
(16 direcciones) a la subred. Se recomienda tener un mínimo de 64 direcciones (bloque IPv4 /26
) para permitir la escala horizontal máxima.
Si la red virtual se encuentra en una suscripción diferente que la aplicación, debe asegurarse de que la suscripción con la red virtual esté registrada para el proveedor de recursos Microsoft.Web
. Puede registrar explícitamente el proveedor siguiendo esta documentación, pero también se registra automáticamente al crear la primera aplicación web en una suscripción.
Configuración en Azure Portal
Vaya a Redes en el portal de App Service. En Configuración del tráfico saliente, seleccione Integración de red virtual.
Seleccione Añadir integración de red virtual
La lista desplegable contiene todas las redes virtuales de la suscripción en la misma región. Seleccione una subred existente vacía o cree una nueva.
Durante la integración, la aplicación se reinicia. Una vez finalizada la integración, verá los detalles de la red virtual con la que está integrado.
Configuración con la CLI de Azure
También puede configurar la integración de red virtual mediante la CLI de Azure:
az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>
Nota:
El comando comprueba si la subred está delegada en Microsoft.Web/serverFarms y aplica la delegación necesaria si no está configurada. Si ya se configuró y no tiene permisos para comprobarlo o si la red virtual se encuentra en otra suscripción, puede utilizar el parámetro --skip-delegation-check
para omitir la validación.
Configuración con Azure PowerShell
Prepare los parámetros.
$siteName = '<app-name>'
$vNetResourceGroupName = '<group-name>'
$webAppResourceGroupName = '<group-name>'
$vNetName = '<vnet-name>'
$integrationSubnetName = '<subnet-name>'
$vNetSubscriptionId = '<subscription-guid>'
Nota:
Si la red virtual está en otra suscripción distinta de webapp, puede usar el comando Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx-xxxx" para establecer el contexto de suscripción actual. Establezca el contexto de suscripción actual en la suscripción donde se implementó la red virtual.
Compruebe que la subred se delega en Microsoft.Web/serverFarms.
$vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet
Get-AzDelegation -Subnet $subnet
Si la subred no se delega en Microsoft.Web/serverFarms, agregue delegación mediante los comandos siguientes.
$subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet
Set-AzVirtualNetwork -VirtualNetwork $vnet
Configuración de la integración de red virtual.
Nota:
Si la aplicación web está en otra suscripción distinta de la red virtual, puede usar el comando Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" para establecer el contexto de suscripción actual. Establezca el contexto de suscripción actual en la suscripción donde se implementó la aplicación web.
$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