Esercitazione: Usare un'identità gestita assegnata dal sistema per una macchina virtuale Windows per accedere ad Archiviazione di Azure
Le identità gestite per le risorse di Azure sono una funzionalità di Microsoft Entra ID. Tutti i servizi di Azure che supportano le identità gestite per le risorse di Azure sono soggetti alla sequenza temporale di tali entità. Prima di iniziare, assicurarsi di esaminare lo stato di disponibilità delle identità gestite per la risorsa e i problemi noti.
Questa esercitazione illustra come usare un'identità gestita assegnata dal sistema per una macchina virtuale Windows per accedere ad Archiviazione di Azure. Scopri come:
- Creare un contenitore BLOB nell'account di archiviazione
- Concedere l'accesso a un account di archiviazione all'identità gestita assegnata dal sistema della macchina virtuale Windows
- Ottenere un accesso e usarlo per chiamare l'archiviazione di Azure
Nota
L'autenticazione di Microsoft Entra per Archiviazione di Azure è disponibile in anteprima pubblica.
Prerequisiti
- Se non si ha familiarità con la funzionalità delle identità gestite per le risorse di Azure, vedere questa panoramica.
- Se non si ha un account Azure, registrarsi per ottenere un account gratuito prima di continuare.
- Per eseguire le attività richieste di creazione delle risorse e gestione dei ruoli, l'account deve disporre delle autorizzazioni "Proprietario" nell'ambito appropriato (sottoscrizione o gruppo di risorse). Se è necessaria assistenza per l'assegnazione di ruolo, vedere Assegnare i ruoli di Azure per gestire l'accesso alle risorse della sottoscrizione di Azure.
Abilitare
L'abilitazione di un'identità gestita assegnata dal sistema si esegue con un semplice clic del mouse. È possibile abilitarla durante la creazione di una macchina virtuale o nelle proprietà di una VM esistente.
Per abilitare l'identità gestita assegnata dal sistema in una nuova VM:
Accedere al portale di Azure
Creare una macchina virtuale con l'identità assegnata dal sistema abilitata
Concedi accesso
Creare un account di archiviazione
In questa sezione, si crea un account di archiviazione.
Selezionare il pulsante + Crea una risorsa nell'angolo superiore sinistro della portale di Azure.
Selezionare Archiviazione, quindi Archiviazione account - BLOB, file, tabella, coda.
In Nome, immettere il nome dell'account di archiviazione.
Modello di distribuzione e Tipologia account devono essere impostati su Gestione di risorse e Archiviazione (utilizzo generico v1).
Verificare che le impostazioni in Sottoscrizione e Gruppo di risorse corrispondano a quelle specificate al momento della creazione della macchina virtuale nel passaggio precedente.
Seleziona Crea.
Creare un contenitore BLOB e caricare un file nell'account di archiviazione
Poiché i file richiedono l'archiviazione BLOB, è necessario creare un contenitore BLOB in cui archiviare il file. Nel contenitore BLOB caricare un file con il nuovo account di archiviazione.
Tornare all'account di archiviazione appena creato.
In Servizio BLOB selezionare Contenitori.
Selezionare + Contenitore nella parte superiore della pagina.
In Nuovo contenitore, immettere il nome del contenitore e in Livello di accesso pubblico mantenere il valore predefinito.
Utilizzando un editor di propria scelta, creare un file denominato hello world.txt nel computer locale. Aprire il file e aggiungere il testo (senza virgolette) "Hello world! :)"e quindi salvare il file.
Per caricare un file nel nuovo contenitore creato, fare clic sul nome del contenitore, quindi fare clic su Carica
Nel riquadro Carica BLOB, in File selezionare l'icona della cartella e passare al file hello_world.txt nel computer locale, selezionare il file e quindi selezionare Carica.
Concedi accesso
Questa sezione illustra come concedere alla macchina virtuale l'accesso a un contenitore di Archiviazione di Azure. È possibile usare l'identità gestita assegnata dal sistema della macchina virtuale per recuperare i dati nel BLOB di archiviazione di Azure.
Tornare all'account di archiviazione appena creato.
Seleziona Controllo di accesso (IAM).
Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.
Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Impostazione Valore Ruolo Lettore dei dati del BLOB di archiviazione Assegna accesso a Identità gestita Assegnata dal sistema Macchina virtuale Seleziona <macchina virtuale>
Accedere ai dati
Archiviazione di Azure supporta in modo nativo l'autenticazione di Microsoft Entra, in modo che possa accettare direttamente i token di accesso ottenuti usando un'identità gestita. Questo approccio usa l'integrazione di Archiviazione di Azure con Microsoft Entra ID ed è diverso dall'inserimento delle credenziali nel stringa di connessione.
Ecco un esempio di codice .NET per aprire una connessione a Archiviazione di Azure. L'esempio usa un token di accesso e quindi legge il contenuto del file creato in precedenza. Questo codice deve essere eseguito nella macchina virtuale per poter accedere all'endpoint dell'identità gestita della macchina virtuale. Per usare il metodo del token di accesso, è necessario .NET Framework 4.6 o versione successiva. Sostituire il valore di <URI to blob file>
di conseguenza. È possibile ottenere questo valore spostandosi sul file creato e caricato in archiviazione BLOB e copiando l'URL in Proprietà nella pagina Panoramica.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
La risposta contiene il contenuto del file:
Hello world! :)
Disabilita
Per disabilitare l'identità assegnata dal sistema nella VM, impostare il relativo stato su Disattivato.
Passaggi successivi
In questa esercitazione si è appreso come abilitare un'identità assegnata dal sistema di una macchina virtuale Windows per accedere ad Archiviazione di Azure. Per altre informazioni sulle Archiviazione di Azure, vedere: