Configurare le restrizioni di accesso al Servizio app di Azure

Configurando le restrizioni dell'accesso, è possibile definire un elenco di elementi consentiti/negati ordinati in base alla priorità che controlla l'accesso di rete all'app. L'elenco può includere indirizzi IP o subnet di Rete virtuale di Azure. Quando sono presenti una o più voci, alla fine dell'elenco esiste una negazione implicita. Per altre informazioni sulle restrizioni di accesso, vedere la panoramica delle restrizioni di accesso.

La funzionalità di restrizione dell'accesso funziona con tutti i carichi di lavoro ospitati nel Servizio app di Azure. I carichi di lavoro possono includere app Web, app per le API, app Linux, contenitori personalizzati Linux e funzioni.

Quando viene effettuata una richiesta all'app, l'indirizzo FROM viene valutato in base alle regole incluse nell'elenco di restrizioni dell'accesso. Se l'indirizzo FROM si trova in una subnet configurata con endpoint di servizio a Microsoft.Web, la subnet di origine viene confrontata con le regole di rete virtuale nell'elenco delle restrizioni di accesso. Se l'indirizzo non è consentito l'accesso in base alle regole nell'elenco, il servizio risponde con un codice di stato HTTP 403 .

La funzionalità di restrizione dell'accesso viene implementata nei ruoli front-end servizio app, che sono upstream degli host di lavoro in cui viene eseguito il codice. Pertanto, le restrizioni di accesso sono elenchi di controllo di accesso di rete (ACL).

La possibilità di limitare l'accesso all'app Web da una rete virtuale di Azure usa gli endpoint di servizio. Grazie agli endpoint di servizio, è possibile limitare l'accesso a un servizio multi-tenant da subnet selezionate. Non consente di limitare il traffico alle app ospitate in un ambiente del servizio app. Se ci si trova in un ambiente del servizio app, è possibile controllare l'accesso all'app applicando le regole degli indirizzi IP.

Nota

Gli endpoint di servizio devono essere abilitati sia sul lato rete che per il servizio di Azure con cui sono abilitati. Per un elenco dei servizi di Azure che supportano gli endpoint di servizio, vedere Rete virtuale endpoint di servizio.

Diagram of the flow of access restrictions.

Gestire le regole di restrizione dell'accesso nel portale

Per aggiungere una regola di restrizione di accesso all'app, seguire questa procedura:

  1. Accedere al portale di Azure.

  2. Selezionare l'app a cui si desidera aggiungere restrizioni di accesso.

  3. Nel menu a sinistra selezionare Rete.

  4. Nella pagina Rete, in Configurazione del traffico in ingresso, selezionare l'impostazione Accesso alla rete pubblica.

    Screenshot of the App Service networking options page in the Azure portal.

  5. Nella pagina Restrizioni di accesso esaminare l'elenco delle regole di restrizione di accesso definite per l'app.

    Screenshot of the Access Restrictions page in the Azure portal, showing the list of access restriction rules defined for the selected app.

    Nell'elenco vengono visualizzate tutte le restrizioni correnti applicate all'app. Se si dispone di una restrizione di rete virtuale per l'app, la tabella indica se gli endpoint di servizio sono abilitati per Microsoft.Web. Se non sono definite restrizioni per l'app e la regola non corrispondente non è impostata su Nega, l'app è accessibile da qualsiasi posizione.

Autorizzazioni

Per configurare direttamente le restrizioni di accesso tramite portale di Azure, l'interfaccia della riga di comando o l'impostazione diretta delle proprietà di configurazione del sito sono necessarie le autorizzazioni di controllo degli accessi in base al ruolo seguenti nella subnet o a un livello superiore:

Azione Descrizione
Microsoft.Web/sites/config/read Ottiene le impostazioni di configurazione delle app Web
Microsoft.Web/sites/config/write Aggiorna le impostazioni di configurazione dell'app Web
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* Aggiunge una risorsa, ad esempio un account di archiviazione o un database SQL a una subnet
Microsoft.Web/sites/write** Aggiornare le impostazioni dell'app Web

*obbligatorio solo quando si aggiunge una regola di rete virtuale (endpoint servizio).

**obbligatorio solo se si aggiornano le restrizioni di accesso tramite portale di Azure.

Se si aggiunge una regola basata su endpoint di servizio e 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 anche automaticamente registrato durante la creazione della prima app Web in una sottoscrizione.

Aggiungere una regola di restrizione di accesso

Per aggiungere una regola di restrizione di accesso all'app, nella pagina Restrizioni di accesso selezionare Aggiungi. La regola è valida solo dopo il salvataggio.

Le regole vengono applicate in ordine di priorità, a partire dal numero più basso nella colonna Priorità . Se non si configura una regola senza corrispondenza, viene applicata una negazione implicita di tutti dopo l'aggiunta di una sola regola.

Nel riquadro Aggiungi restrizione di accesso, quando si crea una regola, eseguire le operazioni seguenti:

  1. In Azione selezionare Consenti o Nega.

    Screenshot of the 'Add Access Restriction' pane.

  2. Facoltativamente, immettere un nome e una descrizione della regola.

  3. Nella casella Priorità immettere un valore di priorità.

  4. Nell'elenco a discesa Tipo selezionare il tipo di regola. I diversi tipi di regole sono descritti nelle sezioni seguenti.

  5. Selezionare Aggiungi regola dopo aver digitato l'input specifico della regola per aggiungere la regola all'elenco.

Infine, selezionare Salva di nuovo nella pagina Restrizioni di accesso.

Nota

  • Esiste un limite di 512 regole di restrizione dell'accesso. Se sono necessarie più di 512 regole di restrizione dell'accesso, è consigliabile installare un prodotto di sicurezza autonomo, ad esempio Frontdoor di Azure, app Azure Gateway o un WAF alternativo.

Impostare una regola basata su indirizzi IP

Seguire la procedura descritta nella sezione precedente, ma con l'aggiunta seguente:

  • Per il passaggio 4, nell'elenco a discesa Tipo selezionare IPv4 o IPv6.

Specificare il blocco di indirizzi IP nella notazione CIDR (Classless Inter-Domain Routing) per gli indirizzi IPv4 e IPv6. Per specificare un indirizzo, è possibile usare qualcosa come 1.2.3.4/32, dove i primi quattro ottetti rappresentano l'indirizzo IP e /32 è la maschera. La notazione CIDR IPv4 per tutti gli indirizzi è 0.0.0.0/0. Per altre informazioni sulla notazione CIDR, vedere Routing interdominio senza classi.

Nota

Le regole di restrizione dell'accesso basato su IP gestiscono solo gli intervalli di indirizzi di rete virtuale quando l'app si trova in un ambiente del servizio app. Se l'app si trova nel servizio multi-tenant, è necessario usare gli endpoint di servizio per limitare il traffico per selezionare le subnet nella rete virtuale.

Impostare una regola basata su endpoint di servizio

  • Per il passaggio 4, nell'elenco a discesa Tipo selezionare Rete virtuale.

    Screenshot of the 'Add Restriction' pane with the Virtual Network type selected.

Specificare gli elenchi a discesa Sottoscrizione, Rete virtuale e Subnet, corrispondenti a ciò a cui si vuole limitare l'accesso.

Usando gli endpoint di servizio, è possibile limitare l'accesso alle subnet di rete virtuale di Azure selezionate. Se gli endpoint di servizio non sono già abilitati con Microsoft.Web per la subnet selezionata, vengono abilitati automaticamente, a meno che non si selezioni la casella di controllo Ignora endpoint servizio mancantiMicrosoft.Web. Lo scenario in cui è possibile abilitare gli endpoint di servizio nell'app, ma non la subnet dipende principalmente dal fatto che si disponga delle autorizzazioni per abilitarle nella subnet.

Se è necessario che un altro utente abiliti gli endpoint di servizio nella subnet, selezionare la casella di controllo Ignora endpoint servizio Microsoft.Web mancanti . L'app è configurata per gli endpoint di servizio in previsione della loro abilitazione in un secondo momento nella subnet.

Non è possibile usare gli endpoint di servizio per limitare l'accesso alle app eseguite in un ambiente del servizio app. Quando l'app si trova in un ambiente del servizio app, è possibile controllare l'accesso applicando le regole di accesso IP.

Con gli endpoint di servizio, è possibile configurare l'app con gateway applicazione o altri dispositivi web application firewall (WAF). È anche possibile configurare applicazioni multilivello con back-end sicuri. Per altre informazioni, vedere Funzionalità di rete e servizio app e gateway applicazione l'integrazione con gli endpoint di servizio.

Nota

  • Gli endpoint di servizio non sono supportati per le app Web che usano associazioni TLS/SSL basate su IP con un indirizzo IP virtuale (VIP).

Impostare una regola basata su tag del servizio

  • Per il passaggio 4, nell'elenco a discesa Tipo selezionare Tag di servizio.

    Screenshot of the 'Add Restriction' pane with the Service Tag type selected.

Tutti i tag di servizio disponibili sono supportati nelle regole di restrizione dell'accesso. Ogni tag di servizio rappresenta un elenco di intervalli IP dai servizi di Azure. Un elenco di questi servizi e collegamenti agli intervalli specifici è disponibile nella documentazione relativa ai tag del servizio. Usare modelli o script di Azure Resource Manager per configurare regole più avanzate, ad esempio regole con ambito a livello di area.

Modificare una regola

  1. Per iniziare a modificare una regola di restrizione di accesso esistente, nella pagina Restrizioni di accesso selezionare la regola da modificare.

  2. Nel riquadro Modifica restrizione di accesso apportare le modifiche e quindi selezionare Aggiorna regola.

  3. Seleziona Salva per salvare le modifiche.

    Screenshot of the 'Edit Access Restriction' pane in the Azure portal, showing the fields for an existing access restriction rule.

    Nota

    Quando si modifica una regola, non è possibile passare da un tipo di regola all'altro.

Eliminare una regola

  1. Per eliminare una regola, nella pagina Restrizioni di accesso selezionare la regola o le regole da eliminare e quindi selezionare Elimina.

  2. Seleziona Salva per salvare le modifiche.

Screenshot of the 'Access Restrictions' page, showing the 'Remove' ellipsis next to the access restriction rule to be deleted.

Scenari avanzati di restrizione di accesso

Le sezioni seguenti descrivono alcuni scenari avanzati che usano restrizioni di accesso.

Filtrare in base all'intestazione HTTP

Come parte di qualsiasi regola, è possibile aggiungere filtri di intestazione HTTP. Sono supportati i nomi di intestazione HTTP seguenti:

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

Per ogni nome di intestazione, è possibile aggiungere fino a otto valori separati da virgole. I filtri di intestazione HTTP vengono valutati dopo la regola stessa e entrambe le condizioni devono essere vere affinché la regola venga applicata.

Regole multi-origine

Le regole multi-origine consentono di combinare fino a otto intervalli IP oppure otto tag del servizio in una singola regola. Si usano regole multi source se sono presenti più di 512 intervalli IP o si vogliono creare regole logiche. Le regole logiche possono essere la posizione in cui più intervalli IP vengono combinati con un singolo filtro di intestazione HTTP.

Le regole multi-origine vengono definite allo stesso modo in cui si definiscono regole a origine singola, ma con ogni intervallo separato da virgole.

Esempio di PowerShell:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
  -Priority 100 -Action Allow

Bloccare un singolo indirizzo IP

Per uno scenario in cui si vuole bloccare in modo esplicito un singolo indirizzo IP o un blocco di indirizzi IP, ma consentire l'accesso a tutto il resto, aggiungere una regola Nega per l'indirizzo IP specifico e configurare l'azione regola non corrispondente su Consenti.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing a single blocked IP address.

Limitare l'accesso a un sito SCM

Oltre a poter controllare l'accesso all'app, puoi limitare l'accesso al sito SCM (strumento avanzato) usato dall'app. Il sito SCM è sia l'endpoint di distribuzione Web che la console Kudu. È possibile assegnare le restrizioni di accesso al sito SCM dall'app separatamente oppure usare lo stesso set di restrizioni per l'app e il sito SCM. Quando si seleziona la casella di controllo Usa regole del sito principale, l'elenco delle regole è nascosto e usa le regole del sito principale. Se si deseleziona la casella di controllo, le impostazioni del sito SCM vengono visualizzate di nuovo.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing that no access restrictions are set for the SCM site or the app.

Limitare l'accesso a un'istanza specifica di Frontdoor di Azure

Il traffico da Frontdoor di Azure all'applicazione ha origine da un set noto di intervalli IP definiti nel tag del AzureFrontDoor.Backend servizio. Usando una regola di restrizione dei tag di servizio, è possibile limitare il traffico solo da Frontdoor di Azure. Per garantire che il traffico provenga solo dall'istanza specifica, è necessario filtrare ulteriormente le richieste in ingresso in base all'intestazione HTTP univoca inviata da Frontdoor di Azure.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing how to add Azure Front Door restriction.

Esempio di PowerShell:

$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
  -HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}

Gestire la restrizione di accesso a livello di codice

È possibile gestire la restrizione di accesso a livello di codice, di seguito è possibile trovare esempi di come aggiungere regole alle restrizioni di accesso e come modificare l'azione regola senza corrispondenza per il sito principale e lo strumento avanzato.

Aggiungere regole di restrizioni di accesso per il sito principale

È possibile aggiungere regole di restrizioni di accesso per il sito principale a livello di codice scegliendo una delle opzioni seguenti:

È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul az webapp config access-restriction comando, visitare questa pagina.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
  --http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Aggiungere regole di restrizioni di accesso per il sito degli strumenti avanzati

È possibile aggiungere regole di restrizioni di accesso per il sito degli strumenti avanzati a livello di codice scegliendo una delle opzioni seguenti:

È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul az webapp config access-restriction comando, visitare questa pagina.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true

Modificare l'azione regola non corrispondente per il sito principale

È possibile modificare l'azione regola senza corrispondenza per il sito principale a livello di codice scegliendo una delle opzioni seguenti:

È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul az resource comando, visitare questa pagina. I valori accettati per ipSecurityRestrictionsDefaultAction sono Allow o Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

Modificare l'azione regola non corrispondente per il sito degli strumenti avanzati

È possibile modificare l'azione regola senza corrispondenza per il sito degli strumenti avanzati a livello di codice scegliendo una delle opzioni seguenti:

È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul az resource comando, visitare questa pagina. I valori accettati per scmIpSecurityRestrictionsDefaultAction sono Allow o Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

Configurare Funzioni di Azure restrizioni di accesso

Le restrizioni di accesso sono disponibili anche per le app per le funzioni con le stesse funzionalità dei piani di servizio app. Quando si abilitano le restrizioni di accesso, si disabilita anche l'editor di codice portale di Azure per eventuali indirizzi IP non consentiti.

Passaggi successivi

Restrizioni di accesso per Funzioni di Azure
gateway applicazione l'integrazione con gli endpoint di servizio
Scenari avanzati di restrizione dell'accesso nel servizio app Azure - post di blog