Configurare le restrizioni di accesso al Servizio app di Azure
Nota
A partire dal 1° giugno 2024, tutte le app del servizio app appena create avranno la possibilità di generare un nome host predefinito univoco usando la convenzione di denominazione <app-name>-<random-hash>.<region>.azurewebsites.net
. I nomi delle app esistenti rimarranno invariati.
Esempio: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Per altri dettagli, fare riferimento a Nome host predefinito univoco per la risorsa del servizio app.
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. In presenza di una o più voci, alla fine dell'elenco è presente un'istruzione di tipo rifiuta tutto 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 per Microsoft.Web
, la subnet di origine viene confrontata con le regole di rete virtuale nell'elenco delle restrizioni dell'accesso. Se all'indirizzo non viene consentito l'accesso in base alle regole nell'elenco, il servizio replica con un codice di stato HTTP 403.
La funzionalità di restrizione dell'accesso viene implementata nei ruoli front-end del servizio app, che si trovano a valle rispetto agli host ruolo di lavoro in cui viene eseguito il codice. Pertanto, le restrizioni di accesso sono elenchi di controllo di accesso (ACL) di rete.
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 vengono abilitati. Per un elenco di servizi di Azure che supportano gli endpoint di servizio, vedere gli endpoint di servizio della rete virtuale.
Gestire le regole di restrizione dell'accesso nel portale
Per aggiungere una regola di restrizione di accesso all'app, seguire questa procedura:
Accedere al portale di Azure.
Selezionare l'app a cui si desidera aggiungere restrizioni di accesso.
Nel menu a sinistra selezionare Rete.
Nella pagina Rete, in Configurazione del traffico in ingressoselezionare l'impostazione Accesso alla rete pubblica.
Nella pagina Restrizioni di accesso esaminare l'elenco delle regole di restrizione di accesso definite per l'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 senza corrispondenza non è impostata su Nega, l'app è accessibile da qualsiasi posizione.
Autorizzazioni
Per configurare le restrizioni di accesso tramite il 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 come un account di archiviazione o un database SQL a una subnet |
Microsoft.Web/sites/write** | Aggiorna le impostazioni dell'app Web |
*necessaria solo quando si aggiunge una regola di rete virtuale (endpoint servizio).
**necessaria solo se si aggiornano le restrizioni di accesso tramite il portale di Azure.
Se si aggiunge una regola basata su un endpoint 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 provider di risorse Microsoft.Web
. È possibile registrare in modo esplicito il provider seguendo questa documentazione, ma la registrazione viene eseguita automaticamente anche durante la creazione della prima app Web in una sottoscrizione.
Aggiungere una regola di restrizione dell'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, dopo l'aggiunta di una sola regola viene applicata un'istruzione di tipo rifiuta tutto implicita.
Nel riquadro Aggiungi restrizione di accesso, quando si crea una regola, eseguire le operazioni seguenti:
In Azioneselezionare Consenti o Nega.
Facoltativamente, immettere un nome e una descrizione per la regola.
Nella casella Priorità immettere un valore per la priorità.
Nell'elenco a discesa Tipo selezionare il tipo di regola. I diversi tipi di regole sono descritti nelle sezioni seguenti.
Selezionare Aggiungi regola dopo aver digitato l'input specifico della regola per aggiungere la regola all'elenco.
Selezionare infine Salva nella pagina Restrizioni di accesso.
Nota
- Esiste un limite di 512 regole di restrizione dell'accesso. Se sono necessarie più di 512 regole di restrizioni dell'accesso, è consigliabile prendere in considerazione l'installazione di un prodotto di sicurezza autonomo, ad esempio Frontdoor di Azure, un gateway applicazione di Azure 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 indirizzi IP nella notazione CIDR (Classless Inter-Domain Routing) per gli indirizzi IPv4 e IPv6. Per specificare un indirizzo, è possibile usare un indirizzo simile a 1.2.3.4/32, dove i primi quattro otteti rappresentano l'indirizzo IP e /32 è la maschera. La notazione CIDR IPv4 per tutti gli indirizzi è 0.0.0.0/0. Per ulteriori informazioni sulla notazione CIDR, vedere Classless Inter-Domain Routing.
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 servizio per limitare il traffico per selezionare le subnet nella rete virtuale.
Impostare una regola basata su endpoint servizio
Per il passaggio 4, nell'elenco a discesa Tipo selezionare Rete virtuale.
Specificare gli elenchi a discesa Sottoscrizione, Rete virtuale e Subnet, in base a ciò a cui si desidera limitare l'accesso.
Usando gli endpoint servizio, è possibile limitare l'accesso alle subnet di rete virtuale di Azure selezionate. Se gli endpoint 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 Microsoft.Web
mancanti. 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 controllarne l'accesso applicando le regole di accesso IP.
Con gli endpoint 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 Integrazione del gateway applicazione con gli endpoint servizio.
Nota
- Gli endpoint 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 del servizio.
Tutti i tag di servizio disponibili pubblicamente sono supportati nelle regole di restrizione dell'accesso. Ogni tag del servizio rappresenta un elenco di intervalli IP dei 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 come le regole con ambito a livello di area.
Nota
Quando si creano regole basate su tag del servizio tramite portale di Azure o l'interfaccia della riga di comando di Azure, sarà necessario l'accesso in lettura a livello di sottoscrizione per ottenere l'elenco completo dei tag di servizio per la selezione/convalida. Inoltre, il Microsoft.Network
provider di risorse deve essere registrato nella sottoscrizione.
Modificare una regola
Per iniziare a modificare una regola di restrizione dell'accesso esistente, nella pagina Restrizioni di accesso selezionare la regola da modificare.
Nel riquadro Modifica restrizione di accesso apportare le modifiche necessarie e quindi selezionare Aggiorna regola.
Seleziona Salva per salvare le modifiche.
Nota
Quando si modifica una regola, non è possibile passare da un tipo di regola all'altro.
Eliminare una regola
Per eliminare una regola, nella pagina Restrizioni di accesso selezionare la regola o le regole da eliminare e quindi selezionare Elimina.
Seleziona Salva per salvare le modifiche.
Scenari avanzati di restrizione dell'accesso
Le sezioni seguenti descrivono alcuni scenari avanzati che usano le 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. Le regole multi-origine vengono usate se sono presenti più di 512 intervalli IP o se si vogliono creare regole logiche. Le regole logiche potrebbero essere quelle 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 le 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 della regola senza corrispondenza su Consenti.
Limitare l'accesso a un sito SCM
Oltre a poter controllare l'accesso all'app, è possibile 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 Usare le 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.
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 servizio AzureFrontDoor.Backend
. Usando una regola di restrizione del tag del servizio, è possibile limitare il traffico solo a quello che ha origine 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.
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 sono disponibili esempi di come aggiungere regole alle restrizioni di accesso e come modificare l'Azione regola senza corrispondenza sia per il Sito principale che per il Sito dello 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 comando az webapp config access-restriction
, vedere 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 dello strumento avanzato
È possibile aggiungere regole di restrizioni di accesso per il Sito dello strumento avanzato a livello di codice scegliendo una delle opzioni seguenti:
È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul comando az webapp config access-restriction
, vedere 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 senza corrispondenza 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 comando az resource
, vedere 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 senza corrispondenza per il sito dello strumento avanzato
È possibile modificare l'Azione regola senza corrispondenza per il Sito dello strumento avanzato a livello di codice scegliendo una delle opzioni seguenti:
È possibile eseguire il comando seguente in Cloud Shell. Per altre informazioni sul comando az resource
, vedere 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 le restrizioni di accesso di Funzioni di Azure
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 del portale di Azure per gli indirizzi IP non consentiti.
Passaggi successivi
Restrizioni di accesso per Funzioni di Azure
Integrazione del gateway applicazione con gli endpoint servizio
Scenari avanzati di restrizione dell'accesso in Servizio app di Azure - post di blog