Abilitare l'integrazione della rete virtuale in Servizio app di Azure
Grazie all'integrazione con una rete virtuale di Azure dall'app Servizio app di Azure, è possibile raggiungere risorse private dall'app all'interno della rete virtuale.
Prerequisiti
La funzionalità di integrazione della rete virtuale richiede:
- Un piano tariffario servizio app che supporta l'integrazione della rete virtuale.
- Una rete virtuale nella stessa area con una subnet vuota.
La subnet deve essere delegata a Microsoft.Web/serverFarms. Se la delega non viene eseguita prima dell'integrazione, il processo di provisioning configura questa delega. La subnet deve essere allocata da un blocco IPv4 /28
(16 indirizzi). È consigliabile avere almeno 64 indirizzi (blocco IPv4 /26
) per consentire la scalabilità orizzontale massima.
Se la rete virtuale si trova in una sottoscrizione diversa rispetto all'app, è necessario assicurarsi che la sottoscrizione con la rete virtuale sia registrata per il Microsoft.Web
provider di risorse. È possibile registrare in modo esplicito il provider seguendo questa documentazione, ma viene registrato automaticamente quando si crea la prima app Web in una sottoscrizione.
Configurare nel portale di Azure
Passare a Rete nel portale di servizio app. In Configurazione del traffico in uscita selezionare Integrazione della rete virtuale.
Selezionare Aggiungi integrazione della rete virtuale.
L'elenco a discesa contiene tutte le reti virtuali nella sottoscrizione nella stessa area. Selezionare una subnet preesistente vuota o creare una nuova subnet.
Durante l'integrazione, l'app viene riavviata. Al termine dell'integrazione, vengono visualizzati i dettagli della rete virtuale con cui si è integrati.
Configurare con l'interfaccia della riga di comando di Azure
È anche possibile configurare l'integrazione della rete virtuale usando l'interfaccia della riga di comando di Azure:
az webapp vnet-integration add --resource-group <group-name> --name <app-name> --vnet <vnet-name> --subnet <subnet-name>
Nota
Il comando verifica se la subnet è delegata a Microsoft.Web/serverFarms e applica la delega necessaria se non è configurata. Se la subnet è stata configurata e non si dispone delle autorizzazioni per controllarla o se la rete virtuale si trova in un'altra sottoscrizione, è possibile usare il --skip-delegation-check
parametro per ignorare la convalida.
Configurare con Azure PowerShell
Preparare i parametri.
$siteName = '<app-name>'
$vNetResourceGroupName = '<group-name>'
$webAppResourceGroupName = '<group-name>'
$vNetName = '<vnet-name>'
$integrationSubnetName = '<subnet-name>'
$vNetSubscriptionId = '<subscription-guid>'
Nota
Se la rete virtuale si trova in un'altra sottoscrizione di webapp, è possibile usare il comando Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" per impostare il contesto di sottoscrizione corrente. Impostare il contesto di sottoscrizione corrente sulla sottoscrizione in cui è stata distribuita la rete virtuale.
Verificare se la subnet è delegata a Microsoft.Web/serverFarms.
$vnet = Get-AzVirtualNetwork -Name $vNetName -ResourceGroupName $vNetResourceGroupName
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $integrationSubnetName -VirtualNetwork $vnet
Get-AzDelegation -Subnet $subnet
Se la subnet non è delegata a Microsoft.Web/serverFarms, aggiungere la delega usando i comandi seguenti.
$subnet = Add-AzDelegation -Name "myDelegation" -ServiceName "Microsoft.Web/serverFarms" -Subnet $subnet
Set-AzVirtualNetwork -VirtualNetwork $vnet
Configurare l'integrazione della rete virtuale.
Nota
Se l'app Web si trova in un'altra sottoscrizione della rete virtuale, è possibile usare il comando Set-AzContext -Subscription "xxxx-xxxx-xxxx-xxxx" per impostare il contesto di sottoscrizione corrente. Impostare il contesto di sottoscrizione corrente sulla sottoscrizione in cui è stata distribuita l'app 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