Configurare le restrizioni di accesso al Servizio app di Azure

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

La funzionalità di restrizione dell'accesso funziona con tutti i carichi di lavoro ospitati 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 nell'elenco delle restrizioni di 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 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 di 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 è abilitata dagli endpoint di servizio. Con gli endpoint di servizio, è possibile limitare l'accesso a un servizio multi-tenant da subnet selezionate. Non funziona per 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.

Diagramma del flusso delle restrizioni di accesso.

Gestire le regole di restrizione di 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 non si vuole aggiungere restrizioni di accesso.

  3. Nel riquadro sinistro selezionare Rete.

  4. Nel riquadro Rete , in Restrizioni di accesso, selezionare Configura restrizioni di accesso.

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

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

    Screenshot della pagina Restrizioni di accesso nella portale di Azure, che mostra l'elenco delle regole di restrizione di accesso definite per l'app selezionata.

    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 mostra se gli endpoint di servizio sono abilitati per Microsoft.Web. Se non vengono definite restrizioni per l'app, l'app è accessibile ovunque.

Autorizzazioni

Per configurare le restrizioni di accesso tramite portale di Azure, l'interfaccia della riga di comando o l'impostazione diretta delle proprietà di configurazione del sito, è necessario disporre almeno delle autorizzazioni di controllo degli accessi in base al ruolo seguenti 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

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

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 provider di risorse Microsoft.Web. È possibile registrare in modo esplicito il provider seguendo questa documentazione, ma verrà registrato automaticamente anche 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, nel riquadro Restrizioni di accesso selezionare Aggiungi regola. Dopo aver aggiunto una regola, diventa effettiva immediatamente.

Le regole vengono applicate in ordine di priorità, a partire dal numero più basso nella colonna Priorità . Una negazione implicita è attiva dopo l'aggiunta di una singola regola.

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

  1. In Azione selezionare Consenti o Nega.

    Screenshot del riquadro

  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. Dopo aver digitato l'input specifico della regola, selezionare Salva per salvare le modifiche.

Nota

  • Esiste un limite di 512 regole di restrizione di 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 Inter-Domain classless.

Impostare una regola basata su endpoint di servizio

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

    Screenshot del riquadro

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, verranno 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 verrà 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 attualmente 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 servizio.

    Screenshot del riquadro

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 di Azure Resource Manager o scripting 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 accesso apportare le modifiche e quindi selezionare Aggiorna regola.

  3. Selezionare Salva per salvare le modifiche.

    Screenshot del riquadro

    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 controllare la regola o le regole da eliminare e quindi selezionare Elimina.

  2. Selezionare Salva per salvare le modifiche.

Screenshot della pagina

Scenari avanzati di restrizione di accesso

Le sezioni seguenti descrivono alcuni scenari avanzati usando restrizioni di accesso.

Filtro in base all'intestazione http

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

  • 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 per la regola da applicare.

Regole multi-origine

Le regole multi-origine consentono di combinare fino a otto intervalli IP oppure otto tag del servizio in una singola regola. È possibile usare questa opzione se sono presenti più di 512 intervalli IP o si desidera creare regole logiche in cui più intervalli IP vengono combinati con un singolo filtro di intestazione HTTP.

Le regole multi-origine sono 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 Deny per l'indirizzo IP specifico e configurare l'azione regola non corrispondente su Consenti.

Screenshot della pagina

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 restrizioni di accesso al sito SCM dall'app separatamente o 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 verrà nascosto e userà le regole dal sito principale. Se si deseleziona la casella di controllo, verranno visualizzate di nuovo le impostazioni del sito SCM.

Screenshot della pagina

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

Il traffico da Frontdoor di Azure all'applicazione proviene da un set noto di intervalli IP definiti nel tag del servizio AzureFrontDoor.Back-end. Usando una regola di restrizione dei tag di servizio, è possibile limitare il traffico solo a origine da Frontdoor di Azure. Per garantire che il traffico sia originato solo dall'istanza specifica, sarà necessario filtrare ulteriormente le richieste in ingresso in base all'intestazione http univoca inviata da Frontdoor di Azure.

Screenshot della pagina

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 le regole di restrizione di accesso a livello di codice

È possibile aggiungere restrizioni di accesso a livello di codice eseguendo una delle operazioni seguenti:

  • Usare l'interfaccia della riga di comando di Azure. Ad esempio:

    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
    
  • Usare Azure PowerShell. Ad esempio:

    Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName"
        -Name "Ip example rule" -Priority 100 -Action Allow -IpAddress 122.133.144.0/24
    

È anche possibile impostare i valori manualmente eseguendo una delle operazioni seguenti:

  • Usare un'operazione PUT dell'API REST di Azure nella configurazione dell'app in Azure Resource Manager. Il percorso per queste informazioni in Azure Resource Manager è:

    management.azure.com/subscriptions/ subscription ID/resourceGroups/resource groups/providers/Microsoft.Web/sites/web app name/config/web?api-version=2020-06-01

  • Usare un modello di Resource Manager. Come esempio, è possibile usare resources.azure.com e modificare il blocco ipSecurityRestrictions per aggiungere il JSON necessario.

    La sintassi JSON per l'esempio precedente è:

    {
      "properties": {
        "ipSecurityRestrictions": [
          {
            "ipAddress": "122.133.144.0/24",
            "action": "Allow",
            "priority": 100,
            "name": "IP example rule"
          }
        ]
      }
    }
    

    La sintassi JSON per un esempio avanzato usando il tag di servizio e la restrizione dell'intestazione HTTP è:

    {
      "properties": {
        "ipSecurityRestrictions": [
          {
            "ipAddress": "AzureFrontDoor.Backend",
            "tag": "ServiceTag",
            "action": "Allow",
            "priority": 100,
            "name": "Azure Front Door example",
            "headers": {
              "x-azure-fdid": [
                "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
              ]
            }
          }
        ]
      }
    }
    

Configurare restrizioni di accesso Funzioni di Azure

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

Passaggi successivi

Restrizioni di accesso per Funzioni di Azure
gateway applicazione integrazione con gli endpoint di servizio