Esercitazione: Accedere ai servizi di Azure da un'app Web .NET

Informazioni su come accedere ai servizi di Azure, ad esempio Archiviazione di Azure, da un'app Web (non un utente connesso) in esecuzione nel servizio app Azure usando identità gestite. Questa esercitazione illustra la connessione a Archiviazione di Azure come esempio.

È possibile accedere in modo sicuro a qualsiasi servizio che supporta l'identità gestita (B nell'immagine seguente) usando questa esercitazione:

  • Archiviazione di Azure
  • Database SQL di Azure
  • Insieme di credenziali chiave di Azure

Diagram that shows how to access storage.

Si vuole aggiungere l'accesso sicuro ai servizi di Azure (Archiviazione di Azure, database SQL di Azure, Azure Key Vault o altri servizi) dall'app Web. È possibile usare una chiave condivisa, ma in questo caso sarebbe necessario preoccuparsi della sicurezza operativa degli utenti che possono creare, distribuire e gestire il segreto. La chiave potrebbe inoltre essere archiviata in GitHub e i pirati informatici potrebbero quindi individuarla facilmente. Un modo più sicuro per concedere all'app Web l'accesso ai dati consiste nell'usare le identità gestite.

Un'identità gestita da Microsoft Entra ID consente servizio app di accedere alle risorse tramite il controllo degli accessi in base al ruolo, senza richiedere le credenziali dell'app. Dopo aver assegnato un'identità gestita all'app Web, Azure si occupa della creazione e della distribuzione di un certificato. Gli utenti non devono preoccuparsi di gestire i segreti o le credenziali dell'app.

In questa esercitazione apprenderai a:

  • Creare un'identità gestita assegnata dal sistema in un'app Web.
  • Creare un account di archiviazione e un contenitore di Archiviazione BLOB di Azure.
  • Accedere all'archiviazione da un'app Web usando identità gestite.

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

Prerequisiti

Abilitare l'identità gestita in un'app

Se si crea e si pubblica l'app Web tramite Visual Studio, l'identità gestita è già stata abilitata automaticamente nell'app. Nel servizio app selezionare Identità nel riquadro sinistro e quindi selezionare Assegnata dal sistema. Verificare che lo Stato sia impostato su . In caso contrario, selezionare e quindi Salva. Selezionare Sì nella finestra di dialogo di conferma per abilitare l'identità gestita assegnata dal sistema. Una volta abilitata l'identità gestita, lo stato è impostato su e l'ID oggetto è disponibile.

Screenshot that shows the System assigned identity option.

Questo passaggio crea un nuovo ID oggetto, diverso dall'ID app creato nel riquadro Autenticazione/Autorizzazione. Copiare l'ID oggetto dell'identità gestita assegnata dal sistema. in quanto sarà necessario più avanti.

Creare un account di archiviazione e un contenitore di Archiviazione BLOB

A questo punto si è pronti per creare un account di archiviazione e un contenitore di Archiviazione BLOB.

Ogni account di archiviazione deve appartenere a un gruppo di risorse di Azure. Un gruppo di risorse è un contenitore logico per raggruppare i servizi di Azure. Quando si crea un account di archiviazione, è possibile creare un nuovo gruppo di risorse o usarne uno esistente. Questo articolo illustra come creare un nuovo gruppo di risorse.

Un account di archiviazione per utilizzo generico v2 consente l'accesso a tutti i servizi di Archiviazione di Azure: BLOB, file, code, tabelle e dischi. La procedura descritta qui crea un account di archiviazione per utilizzo generico v2, ma i passaggi per creare qualsiasi tipo di account di archiviazione sono simili.

I BLOB in Archiviazione di Azure sono organizzati in contenitori. Prima di poter caricare un BLOB più avanti in questa esercitazione, sarà necessario creare un contenitore.

Per creare un account di archiviazione per utilizzo generico v2 nel portale di Azure, seguire questa procedura.

  1. Selezionare Tutti i servizi nel menu del portale di Azure. Nell'elenco delle risorse immettere Account di archiviazione. Quando si inizia a digitare, l'elenco viene filtrato in base all'input. Selezionare Account di archiviazione.

  2. Nella finestra Archiviazione Account visualizzata selezionare Crea.

  3. Selezionare la sottoscrizione in cui creare l'account di archiviazione.

  4. Nel menu a discesa del campo Gruppo di risorse selezionare il gruppo di risorse che contiene l'app Web.

  5. Immettere quindi un nome per l'account di archiviazione. Il nome scelto deve essere univoco in Azure. Anche il nome deve avere una lunghezza compresa tra 3 e 24 caratteri e può includere solo numeri e lettere minuscole.

  6. Selezionare una località (area) per l'account di archiviazione oppure usare il valore predefinito.

  7. Lasciare questi campi impostati sui valori predefiniti:

    Campo Valore
    Modello di distribuzione Gestione risorse
    Prestazioni Standard
    Tipo di account Archiviazione v2 (utilizzo generico v2)
    Replica Archiviazione con ridondanza geografica e accesso in lettura (RA-GRS)
    Livello di accesso Alto
  8. Selezionare Rivedi e crea per rivedere le impostazioni dell'account di archiviazione e creare l'account.

  9. Seleziona Crea.

Per creare un contenitore di Archiviazione BLOB in Archiviazione di Azure, seguire questa procedura.

  1. Passare al nuovo account di archiviazione nel portale di Azure.

  2. Nel menu a sinistra per l'account di archiviazione scorrere fino alla sezione Archiviazione dati e quindi selezionare Contenitori.

  3. Selezionare il pulsante + Contenitore.

  4. Digitare un nome per il nuovo contenitore. Il nome del contenitore deve essere scritto tutto minuscolo, deve iniziare con una lettera o un numero e può contenere solo lettere, numeri e il trattino (-).

  5. Impostare il livello di accesso pubblico al contenitore. Il livello predefinito è Privato (nessun accesso anonimo).

  6. Seleziona OK per creare il contenitore.

Concedere l'accesso all'account di archiviazione

Prima di poter creare, leggere o eliminare i BLOB, è necessario concedere all'app Web l'accesso all'account di archiviazione. In un passaggio precedente è stata configurata l'app Web in esecuzione nel servizio app con un'identità gestita. Usando il Controllo degli accessi in base al ruolo di Azure è possibile concedere all'identità gestita l'accesso a un'altra risorsa, come per qualsiasi entità di sicurezza. Il ruolo Collaboratore ai dati dei BLOB di archiviazione fornisce all'app Web, rappresentata dall'identità gestita assegnata dal sistema, l'accesso in lettura, scrittura ed eliminazione ai dati e al contenitore BLOB.

Nota

Alcune operazioni sui contenitori BLOB privati non sono supportate dal controllo degli accessi in base al ruolo di Azure, ad esempio la visualizzazione di BLOB o la copia di BLOB tra account. Un contenitore BLOB con livello di accesso privato richiede un token di firma di accesso condiviso per qualsiasi operazione non autorizzata dal controllo degli accessi in base al ruolo di Azure. Per altre informazioni, vedere Quando usare una firma di accesso condiviso.

Nel portale di Azure passare all'account di archiviazione per concedere l'accesso all'app Web. Selezionare Controllo di accesso (IAM) e quindi Assegnazioni di ruolo. Verrà visualizzato un elenco di utenti che hanno accesso all'account di archiviazione. A questo punto si aggiungerà un'assegnazione di ruolo a un robot, il servizio app deve accedere all'account di archiviazione. Selezionare Aggiungi aggiungi>assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.

Assegnare il ruolo Collaboratore dati BLOB Archiviazione all'servizio app nell'ambito della sottoscrizione. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

L'app Web può ora accedere all'account di archiviazione.

Access Blob Archiviazione

La classe DefaultAzureCredential viene usata per ottenere le credenziali del token affinché il codice autorizzi le richieste al servizio di archiviazione di Azure. Creare un'istanza della classe DefaultAzureCredential, che usa l'identità gestita per recuperare i token e collegarli al client del servizio. L'esempio di codice seguente ottiene le credenziali del token autenticato e le usa per creare un oggetto client del servizio, che carica un nuovo BLOB.

Per vedere questo codice come parte di un'applicazione di esempio, vedere l'esempio in GitHub.

Installare i pacchetti della libreria client

Installare il pacchetto NuGet blob Archiviazione per usare i Archiviazione BLOB e la libreria client di Identità di Azure per il pacchetto NuGet .NET per l'autenticazione con le credenziali di Microsoft Entra. Installare le librerie client usando l'interfaccia della riga di comando di .NET Core o la console di Gestione pacchetti in Visual Studio.

Riga di comando di .NET Core

  1. Aprire una riga di comando e passare alla directory che contiene il file di progetto.

  2. Eseguire i comandi di installazione.

    dotnet add package Azure.Storage.Blobs
    
    dotnet add package Azure.Identity
    

Console di gestione pacchetti

  1. Aprire il progetto o la soluzione in Visual Studio, quindi aprire la console selezionando Strumenti>Gestione pacchetti NuGet>Console di Gestione pacchetti.

  2. Eseguire i comandi di installazione.

    Install-Package Azure.Storage.Blobs
    
    Install-Package Azure.Identity
    

Esempio .NET

using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;

// Some code omitted for brevity.

static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a credential and create a client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                    new DefaultAzureCredential());

    try
    {
        // Create the container if it does not exist.
        await containerClient.CreateIfNotExistsAsync();

        // Upload text to a new block blob.
        byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

        using (MemoryStream stream = new MemoryStream(byteArray))
        {
            await containerClient.UploadBlobAsync(blobName, stream);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

Pulire le risorse

Se l'esercitazione è stata completata e l'app Web o le risorse associate non sono più necessarie, pulire le risorse create.

Eliminare il gruppo di risorse

Nel portale di Azure selezionare Gruppi di risorse dal menu del portale e selezionare il gruppo di risorse contenente il servizio app e il piano di servizio app.

Fare clic su Elimina gruppo di risorse per eliminare il gruppo e tutte le risorse al suo interno.

Screenshot that shows deleting the resource group.

L'esecuzione di questo comando potrebbe richiedere diversi minuti.

Passaggi successivi

Questa esercitazione ha descritto come:

  • Creare un'identità gestita assegnata dal sistema.
  • Creare un account di archiviazione e un contenitore di Archiviazione BLOB.
  • Accedere all'archiviazione da un'app Web usando identità gestite.