Esercitazione: Stabilire l'accesso al sito privato Funzioni di Azure

Questa esercitazione illustra come abilitare l'accesso privato al sito con Funzioni di Azure. Usando l'accesso privato al sito, è possibile richiedere che il codice della funzione venga attivato solo da una rete virtuale specifica.

L'accesso privato al sito è utile negli scenari in cui l'accesso all'app per le funzioni deve essere limitato a una rete virtuale specifica. L'app per le funzioni potrebbe essere applicabile, ad esempio, solo ai dipendenti di un'organizzazione specifica o ai servizi inclusi nella rete virtuale specificata, come un'altra funzione di Azure, una macchina virtuale di Azure o un cluster del servizio Azure Kubernetes.

Se un'app per le funzioni deve accedere a risorse di Azure nella rete virtuale o connesse tramite endpoint servizio, è necessaria l'integrazione con la rete virtuale.

Questa esercitazione illustra come configurare l'accesso privato al sito per l'app per le funzioni:

  • Creare una macchina virtuale
  • Creare un servizio Azure Bastion
  • Creare un'app Funzioni di Azure
  • Configurare un endpoint servizio di rete virtuale
  • Creare e distribuire una funzione di Azure
  • Richiamare la funzione dall'esterno e dall'interno della rete virtuale

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Topologia

Il diagramma seguente illustra l'architettura della soluzione da creare:

High-level architecture diagram for private site access solution

Prerequisiti

Per questa esercitazione è importante comprendere l'indirizzamento IP e la creazione di subnet. Si può iniziare con questo articolo che illustra le nozioni di base dell'indirizzamento e della creazione di subnet. Molti altri articoli e video sono disponibili online.

Accedere al portale di Azure

Accedere al portale di Azure.

Creare una macchina virtuale

Il primo passaggio di questa esercitazione consiste nel creare una nuova macchina virtuale all'interno di una rete virtuale. La macchina virtuale verrà usata per accedere alla funzione dopo aver limitato l'accesso solo all'interno della rete virtuale.

  1. Selezionare il pulsante Crea una risorsa.

  2. Nel campo di ricerca digitare Windows Server e selezionare Windows Server nei risultati della ricerca.

  3. Selezionare Windows Server 2019 Datacenter nell'elenco delle opzioni Windows Server e fare clic sul pulsante Crea.

  4. Nella scheda Informazioni di base usare le impostazioni della VM specificate nella tabella sotto l'immagine:

    Basics tab for a new Windows VM

    Impostazione Valore suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Gruppo di risorse myResourceGroup Scegliere il gruppo di risorse che conterrà tutte le risorse per questa esercitazione. L'uso dello stesso gruppo di risorse semplifica la pulizia delle risorse al termine dell'esercitazione.
    Nome macchina virtuale myVM Il nome della VM deve essere univoco nel gruppo di risorse.
    Area (Stati Uniti) Stati Uniti centro-settentrionali Scegliere un'area nelle vicinanze o vicina alle funzioni a cui si dovrà accedere.
    Porte in ingresso pubbliche None Selezionare Nessuna affinché non sia presente connettività in ingresso da Internet alla VM. L'accesso remoto alla VM verrà configurato tramite il servizio Azure Bastion.
  5. Scegliere la scheda Rete e selezionare Crea nuova per configurare una nuova rete virtuale.

    Screenshot that shows the

  6. In Crea rete virtuale usare le impostazioni della tabella sotto l'immagine:

    Create a new virtual network for the new VM

    Impostazione Valore suggerito Description
    Nome myResourceGroup-vnet Si può usare il nome predefinito generato per la rete virtuale.
    Intervallo di indirizzi 10.10.0.0/16 Usare un singolo intervallo di indirizzi per la rete virtuale.
    Nome della subnet Esercitazione Nome della subnet.
    Intervallo di indirizzi (subnet) 10.10.1.0/24 Le dimensioni della subnet definiscono il numero di interfacce che è possibile aggiungere alla subnet. Questa subnet viene usata dalla VM. Una subnet /24 offre 254 indirizzi host.
  7. Selezionare OK per creare la rete virtuale.

  8. Nella scheda Rete assicurarsi che per IP pubblico sia selezionata l'opzione Nessuno.

  9. Scegliere la scheda Gestione e quindi Crea nuovo in Account di archiviazione di diagnostica per creare un nuovo account di archiviazione.

  10. Lasciare i valori predefiniti per le sezioni Identità, Arresto automatico e Backup.

  11. Selezionare Rivedi e crea. Al termine della convalida selezionare Crea. Il processo di creazione della VM richiederà alcuni minuti.

Configurare Azure Bastion

Azure Bastion è un servizio di Azure completamente gestito che offre un accesso RDP e SSH sicuro alle macchine virtuali direttamente dal portale di Azure. L'uso del servizio Azure Bastion elimina l'esigenza di configurare le impostazioni di rete correlate all'accesso RDP.

  1. Nel portale scegliere Aggiungi nella parte superiore della visualizzazione del gruppo di risorse.

  2. Nel campo di ricerca digitare Bastion.

  3. Selezionare Bastion nei risultati della ricerca.

  4. Selezionare Crea per iniziare il processo di creazione di una nuova risorsa Azure Bastion. Nella sezione Rete virtuale verrà visualizzato un messaggio di errore perché non è ancora presente una subnet AzureBastionSubnet. La subnet verrà creata nei passaggi seguenti. Usare le impostazioni della tabella sotto l'immagine:

    Start of creating Azure Bastion

    Impostazione Valore suggerito Description
    Nome myBastion Nome della nuova risorsa Bastion.
    Area Stati Uniti centro-settentrionali Scegliere un'area nelle vicinanze o vicino ad altri servizi a cui accedono le funzioni.
    Rete virtuale myResourceGroup-vnet Rete virtuale in cui verrà creata la risorsa Bastion.
    Subnet AzureBastionSubnet Subnet della rete virtuale in cui verrà distribuita la nuova risorsa host Bastion. È necessario creare una subnet usando il nome AzureBastionSubnet. Questo valore indica ad Azure la subnet in cui devono essere distribuite le risorse Bastion. È necessario usare una subnet almeno con prefisso /27 o superiore (/27, /26 e così via).

    Nota

    Per una guida dettagliata per la creazione di una risorsa Azure Bastion, vedere l'esercitazione Creare un host Azure Bastion.

  5. Creare una subnet in cui Azure potrà effettuare il provisioning dell'host Azure Bastion. Scegliendo Gestisci configurazione subnet verrà visualizzato un nuovo riquadro in cui è possibile definire una nuova subnet. Scegliere + Subnet per creare una nuova subnet.

  6. Alla subnet deve essere assegnato il nome AzureBastionSubnet e il prefisso deve essere almeno /27. Selezionare OK per creare la subnet.

    Create subnet for Azure Bastion host

  7. Nella pagina Crea un'istanza di Bastion selezionare la subnet AzureBastionSubnet appena creata nell'elenco delle subnet disponibili.

    Create an Azure Bastion host with specific subnet

  8. Selezionare Rivedi e crea. Al termine della convalida selezionare Crea. La creazione della risorsa Azure Bastion richiederà alcuni minuti.

Creare un'app Funzioni di Azure

Il passaggio successivo consiste nel creare un'app per le funzioni in Azure usando il piano a consumo. Più avanti nell'esercitazione si distribuirà il codice della funzione in questa risorsa.

  1. Nel portale scegliere Aggiungi nella parte superiore della visualizzazione del gruppo di risorse.

  2. Selezionare App per le funzioni di > calcolo

  3. Nella sezione Informazioni di base usare le impostazioni dell'app per le funzioni specificate nella tabella seguente.

    Impostazione Valore suggerito Descrizione
    Gruppo di risorse myResourceGroup Scegliere il gruppo di risorse che conterrà tutte le risorse per questa esercitazione. L'uso dello stesso gruppo di risorse per l'app per le funzioni e la VM semplifica la pulizia delle risorse al termine dell'esercitazione.
    Nome dell'app per le funzioni Nome globalmente univoco Nome che identifica la nuova app per le funzioni. I caratteri validi sono a-z (senza distinzione tra maiuscole e minuscole), 0-9 e -.
    Pubblicazione Codice Opzione per la pubblicazione di file di codice o di un contenitore Docker.
    Stack di runtime Lingua preferita Scegliere un runtime che supporti il linguaggio di programmazione della funzione preferito.
    Area Stati Uniti centro-settentrionali Scegliere un'area nelle vicinanze o vicino ad altri servizi a cui accedono le funzioni.

    Selezionare il pulsante Avanti: Hosting > .

  4. Nella sezione Hosting selezionare le impostazioni corrette per Account di archiviazione, Sistema operativo e Piano, come descritto nella tabella seguente.

    Impostazione Valore suggerito Descrizione
    Account di archiviazione Nome globalmente univoco Creare un account di archiviazione usato dall'app per le funzioni. I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e possono contenere solo numeri e lettere minuscole. È anche possibile usare un account esistente, che deve soddisfare i requisiti dell'account di archiviazione.
    Sistema operativo Sistema operativo preferito Viene preselezionato automaticamente un sistema operativo in base alla selezione dello stack di runtime, ma, se necessario, è possibile modificare l'impostazione.
    Piano Consumo Il piano di hosting determina la modalità di scalabilità dell'app per le funzioni e la disponibilità delle risorse per ogni istanza.
  5. Selezionare Rivedi e crea per rivedere le selezioni effettuate per la configurazione dell'app.

  6. Per effettuare il provisioning dell'app per le funzioni e distribuirla, selezionare Crea.

Configurare le restrizioni di accesso

Il passaggio successivo consiste nel configurare le restrizioni di accesso affinché la funzione possa essere richiamata solo dalle risorse nella rete virtuale.

L'accesso privato al sito viene abilitato creando un endpoint servizio di rete virtuale di Azure tra l'app per le funzioni e la rete virtuale specificata. Le restrizioni di accesso vengono implementate tramite endpoint servizio, che fanno sì che alla risorsa designata possa accedere solo il traffico proveniente dalla rete virtuale specificata. In questo caso, la risorsa designata è la funzione di Azure.

  1. Nell'app per le funzioni selezionare il collegamento Rete nell'intestazione della sezione Impostazioni.

  2. La pagina Rete è il punto di partenza per configurare Frontdoor di Azure, Rete CDN di Azure nonché le restrizioni di accesso.

  3. Selezionare Configura restrizioni di accesso per configurare l'accesso privato al sito.

  4. Nella pagina Restrizioni di accesso risulta presente solo la restrizione predefinita. L'impostazione predefinita non prevede alcuna restrizione per l'accesso all'app per le funzioni. Selezionare Aggiungi regola per creare la configurazione di una restrizione per l'accesso privato al sito.

  5. Nel riquadro Aggiungi restrizione di accesso specificare un valore in Nome, Priorità e Descrizione per la nuova regola.

  6. Selezionare Rete virtuale nella casella a discesa Tipo, selezionare la rete virtuale creata in precedenza e quindi selezionare la subnet Tutorial.

    Nota

    L'abilitazione dell'endpoint servizio potrebbe richiedere alcuni minuti.

  7. Nella pagina Restrizioni di accesso verrà ora visualizzata una nuova restrizione. Il passaggio da Stato endpoint disabilitato a Provisioning abilitato può richiedere alcuni secondi.

    Importante

    Ogni app per le funzioni ha un sito Strumenti avanzati (Kudu) che viene usato per gestire le distribuzioni dell'app per le funzioni. Questo sito è accessibile da un URL come <FUNCTION_APP_NAME>.scm.azurewebsites.net. L'abilitazione delle restrizioni di accesso nel sito Kudu impedisce la distribuzione del codice del progetto da una workstation di sviluppo locale, di conseguenza nella rete virtuale è necessario un agente per eseguire la distribuzione.

Accedere all'app per le funzioni

  1. Tornare all'app per le funzioni creata in precedenza. Nella sezione Panoramica copiare l'URL.

    Get the Function app URL

    Se ora si prova ad accedere all'app per le funzioni da un computer all'esterno della rete virtuale, verrà visualizzata una pagina HTTP 403 che indica che l'accesso non è consentito.

  2. Tornare al gruppo di risorse e selezionare la macchina virtuale creata in precedenza. Per accedere al sito dalla macchina virtuale, sarà necessario connettersi alla macchina virtuale tramite il servizio Azure Bastion.

  3. Selezionare Connetti e quindi scegliere Bastion.

  4. Specificare il nome utente e la password necessari per accedere alla macchina virtuale.

  5. Selezionare Connetti. Verrà visualizzata una nuova finestra del browser che consente di interagire con la macchina virtuale. È possibile accedere al sito dal Web browser nella macchina virtuale perché questa accede al sito tramite la rete virtuale. Anche se il sito è accessibile solo dalla rete virtuale designata, è ancora presente una voce DNS pubblica.

Creare una funzione

Il passaggio successivo di questa esercitazione consiste nel creare una funzione di Azure attivata da HTTP. La chiamata della funzione tramite HTTP GET o POST genererà una risposta "Hello, {nome}".

  1. Seguire una di queste guide di avvio rapido per creare e distribuire l'app Funzioni di Azure:

  2. Quando si pubblica il progetto Funzioni di Azure, scegliere la risorsa app per le funzioni creata in precedenza in questa esercitazione.

  3. Verificare che la funzione sia stata distribuita.

    Deployed function in list of functions

Richiamare direttamente la funzione

  1. Per testare l'accesso alla funzione, è necessario copiare l'URL della funzione. Selezionare la funzione distribuita e quindi Recupera URL della funzione. Fare quindi clic sul pulsante Copia per copiare l'URL negli Appunti.

    Copy the function URL

  2. Incollare l'URL in un Web browser. Provando ora ad accedere all'app per le funzioni da un computer all'esterno della rete virtuale verrà visualizzata una risposta HTTP 403 che indica che l'accesso all'app non è consentito.

Richiamare la funzione dalla rete virtuale

L'accesso alla funzione tramite un Web browser nella VM configurata nella rete virtuale, usando il servizio Azure Bastion, avrà esito positivo.

Access the Azure Function via Azure Bastion

Pulire le risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.

Nel menu del portale di Azure o nella pagina Home selezionare Gruppi di risorse. Quindi, nella pagina Gruppi di risorse selezionare myResourceGroup.

Nella pagina myResourceGroup assicurarsi che le risorse elencate siano quelle da eliminare.

Selezionare Elimina gruppo di risorse, digitare myResourceGroup nella casella di testo per confermare e quindi selezionare Elimina.

Passaggi successivi