Condividi tramite


Configurare le restrizioni di accesso al Servizio app di Azure

Quando si configurano le restrizioni di accesso, è possibile definire un elenco di elementi consentiti/negati ordinati con 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 ulteriori informazioni, vedere Restrizioni di accesso al servizio Azure App.

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 app di Funzioni di Azure.

Quando un utente invia una richiesta all'app, l'indirizzo FROM viene valutato rispetto alle regole nell'elenco delle restrizioni di accesso. Se l'indirizzo FROM si trova in una subnet configurata con endpoint di servizio su Microsoft.Web, la subnet di origine viene confrontata con le regole di rete virtuale nell'elenco delle restrizioni di 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 monte rispetto agli host di lavoro in cui viene eseguito il codice. Pertanto, le restrizioni di accesso sono elenchi di controllo di accesso alla rete in modo efficace.

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 funziona limitare il traffico alle app ospitate in un App Service Environment. 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 di servizi di Azure che supportano gli endpoint di servizio, vedere gli endpoint di servizio della rete virtuale.

Diagramma che mostra il flusso delle restrizioni di accesso.

Gestire le regole di restrizione dell'accesso nel portale

Per aggiungere una regola di restrizione di accesso all'app:

  1. Accedere al portale di Azure.

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

  3. Nel menu a sinistra selezionare Impostazioni>rete.

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

    Screenshot del riquadro Opzioni di rete del servizio app nel portale di Azure.

  5. Nel riquadro Restrizioni di accesso esaminare l'elenco delle regole di restrizione di accesso definite per l'app.

    Screenshot del riquadro Restrizioni di accesso nel portale di Azure, che mostra l'elenco delle regole di restrizione di accesso definite per l'app selezionata.

    Nell'elenco vengono visualizzate le restrizioni attualmente 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 le restrizioni di accesso tramite il portale di Azure, l'interfaccia della riga di comando o quando si impostano direttamente le site config proprietà, è necessario disporre delle 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 dell'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.

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

**Obbligatorio solo se si aggiornano le restrizioni di accesso tramite il 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, assicurarsi che la sottoscrizione che contiene la rete virtuale sia registrata per il provider di risorse Microsoft.Web. È possibile registrare in modo esplicito il provider, ma viene registrato automaticamente anche quando si crea la prima app Web in una sottoscrizione. Per maggiori informazioni, consultare la sezione Registrare il provider di risorse.

Aggiungere una regola di restrizione dell'accesso

Per aggiungere una regola di restrizione di accesso all'app, nel riquadro Restrizioni di accesso selezionare Aggiungi. La regola è valida solo dopo averlo salvato.

Le regole vengono applicate in ordine di priorità, dal numero più basso nella colonna Priorità . Se non si configura una regola senza corrispondenza, viene applicata implicitamente una regola nega tutto quando si aggiunge una regola.

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

  1. In Azioneselezionare Consenti o Nega.
  2. Immettere un nome e una descrizione della regola (facoltativo).
  3. Nella casella Priorità immettere un valore per la priorità.
  4. Nell'elenco a discesa Tipo, selezionare il tipo di regola. I diversi tipi di regole sono descritti nelle sezioni seguenti.
  5. Inserisci l'input specifico della regola. Selezionare Aggiungi regola per aggiungere la regola all'elenco.
  6. Selezionare Salva nel riquadro Restrizioni di accesso .

Nota

È previsto un limite di 512 regole di restrizione dell'accesso. Se sono necessarie più di 512 regole di restrizione dell'accesso, è consigliabile prendere in considerazione un prodotto di sicurezza autonomo. Si consideri Azure Front Door, Azure Application Gateway, o un altro web application firewall (WAF).

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 ed /32 è la maschera. La notazione CIDR IPv4 per tutti gli indirizzi è 0.0.0.0/0.

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 del servizio

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

    Screenshot del riquadro Aggiungi restrizione con il tipo di rete virtuale selezionato.

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

Usando gli endpoint servizio, è possibile limitare l'accesso alle subnet di rete virtuale di Azure selezionate. Se gli endpoint di servizio non sono già abilitati nella subnet che selezioni con Microsoft.Web, vengono abilitati automaticamente, a meno che tu non selezioni Ignora gli endpoint di servizio Microsoft.Web mancanti. Se si desidera abilitare gli endpoint di servizio nell'app, ma non la subnet, dipende da se si dispone delle autorizzazioni per abilitarle nella subnet.

Se hai bisogno che un altro utente abiliti gli endpoint di servizio nella subnet, seleziona Ignora gli endpoint di servizio Microsoft.Web mancanti. L'app è configurata per gli endpoint di servizio. In un secondo momento possono essere abilitati 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 di servizio, è possibile configurare l'app usando i gateway di applicazione o altri dispositivi di firewall per applicazioni web (WAF). È anche possibile configurare applicazioni multilivello con back-end sicuri. Per altre informazioni, vedere Funzionalità di rete del servizio app e Integrazione del gateway applicazione.

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.

Impostare una regola basata su tag del servizio

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

    Screenshot del riquadro Aggiungi restrizione con il tipo di tag di servizio selezionato.

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 il portale di Azure o l'interfaccia della riga di comando di Azure, è necessario l'accesso in lettura a livello di sottoscrizione per ottenere l'elenco completo dei tag di servizio per la selezione/convalida. Inoltre, il provider di risorse Microsoft.Network deve essere registrato nella sottoscrizione.

Modificare una regola

  1. Per modificare una regola di restrizione dell'accesso esistente, passare al riquadro Restrizioni di accesso e selezionare la regola da modificare.

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

  3. 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

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

  2. Seleziona Salva per salvare le modifiche.

Screenshot del riquadro Restrizioni di accesso che mostra i puntini di sospensione Rimuovi accanto alla regola di restrizione di accesso da eliminare.

Scenari avanzati di restrizione dell'accesso

Le sezioni seguenti descrivono l'uso delle restrizioni di accesso in scenari avanzati.

Filtrare in base all'intestazione HTTP

È possibile aggiungere filtri di intestazione HTTP a qualsiasi regola. Sono supportati i nomi di intestazione HTTP seguenti:

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

++ Per altre informazioni su X-FD-HealthProbe, vedere Filtro delle intestazioni HTTP per le regole di restrizione dell'accesso al sito.

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 source consentono di combinare fino a otto intervalli IP o otto tag di servizio in una singola regola. Usare regole multi-origine se sono presenti più di 512 intervalli IP o se si desidera creare delle regole logiche. Ad esempio, una regola logica può includere più intervalli IP combinati con un singolo filtro di intestazione HTTP.

Le regole multi-origine vengono definite allo stesso modo delle regole a origine singola, ma ogni intervallo è separato da una virgola.

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

Se si vuole bloccare in modo esplicito un singolo indirizzo IP o un blocco di indirizzi IP, ma consentire l'accesso a tutto il resto, è possibile aggiungere una regola Nega per l'indirizzo IP specifico. Configurare quindi l'azione regola senza corrispondenza su Consenti.

Screenshot del riquadro Restrizioni di accesso nel portale di Azure, che mostra un singolo indirizzo IP bloccato.

Limitare l'accesso a un sito SCM

Oltre a poter controllare l'accesso all'app, puoi limitare l'accesso al sito avanzato dello strumento di gestione del codice sorgente (SCM) 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 Usa regole del sito principale, l'elenco delle regole è nascosto. Il sito SCM usa le regole del sito principale. Se si deseleziona la casella di controllo, le impostazioni del sito SCM vengono visualizzate di nuovo.

Screenshot del riquadro Restrizioni di accesso nel portale di Azure, che mostra che non sono state impostate restrizioni di accesso per il sito SCM o l'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 servizio AzureFrontDoor.Backend. 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 del riquadro Restrizioni di accesso nel portale di Azure, che mostra come aggiungere una restrizione 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

È anche possibile gestire le restrizioni di accesso a livello di codice. Negli esempi seguenti viene illustrato come aggiungere regole alle restrizioni di accesso e come modificare l'azione regola non corrispondente per il sito principale e il sito degli strumenti avanzati.

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 Azure Cloud Shell. Per altre informazioni sul comando, vedere az webapp config access-restriction.

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 degli strumenti avanzati a livello di codice. Scegli una delle opzioni seguenti:

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

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, vedere az resource. 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, vedere az resource. 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.