Zelfstudie: een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Storage
Beheerde identiteiten voor Azure-resources is een functie van Microsoft Entra ID. Voor alle Azure-services die beheerde identiteiten voor Azure-resources ondersteunen, geldt een eigen tijdlijn. Controleer de beschikbaarheidsstatus van beheerde identiteiten voor uw resource en eventuele bekende problemen voordat u begint.
Deze zelfstudie laat zien hoe u toegang krijgt tot Azure Storage met een door het systeem toegewezen beheerde identiteit voor een virtuele Windows-machine (VM). U leert het volgende:
- Een blobcontainer in een opslagaccount maken
- Door het systeem toegewezen beheerde entiteit van de virtuele Windows-machine toegang verlenen tot een opslagaccount
- Een toegangstoken ophalen en daarmee Azure Storage aanroepen
Notitie
Microsoft Entra-verificatie voor Azure Storage is beschikbaar als openbare preview.
Vereisten
- Als u niet bekend bent met de functie voor beheerde identiteiten voor Azure-resources, raadpleegt u dit overzicht.
- Als u geen Azure-account hebt, registreert u zich voor een gratis account voordat u verder gaat.
- Om de vereiste resources en het rolbeheer te maken, moet uw account 'Eigenaar'-machtigingen hebben voor het juiste bereik (uw abonnement of resourcegroep). Voor hulp bij roltoewijzing gaat u naar Azure-rollen toewijzen om de toegang te beheren tot de resources van uw Azure-abonnement.
Inschakelen
Het inschakelen van een door het systeem toegewezen beheerde identiteit gebeurt met één klik. U kunt deze inschakelen tijdens het maken van een VM of in de eigenschappen van een bestaande VM.
Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuwe VM:
Meld u aan bij Azure Portal
Een virtuele machine maken met door het systeem toegewezen identiteit ingeschakeld
Toegang verlenen
Een opslagaccount maken
In deze sectie maakt u een opslagaccount.
Selecteer de knop + Een resource maken in de linkerbovenhoek van Azure Portal.
Selecteer Opslag en vervolgens Opslagaccount - blob, bestand, tabel, wachtrij.
Geef onder Naam een naam voor het opslagaccount op.
Implementatiemodel en Soort account moeten respectievelijk worden ingesteld op Resource Manager en Storage (algemeen gebruik v1).
Zorg ervoor dat de waarden van Abonnement en Resourcegroep overeenkomen met de waarden die u hebt opgegeven bij het maken van de virtuele machine in de vorige stap.
Selecteer Maken.
Een blobcontainer maken en een bestand naar het opslagaccount uploaden
Voor bestanden is blobopslag nodig, dus moeten we een blobcontainer maken waarin het bestand kan worden opgeslagen. Vervolgens uploadt u een bestand naar de blobcontainer in het nieuwe opslagaccount.
Navigeer terug naar het zojuist gemaakte opslagaccount.
Selecteer Containers onder Blob service.
Selecteer + Container boven aan de pagina.
Voer onder Nieuwe container een naam in voor de container en laat Openbaar toegangsniveau ingesteld staan op de standaardwaarde.
Maak met behulp van een editor naar keuze een bestand met de naam hello_world.txt op uw lokale computer. Open het bestand en voeg de tekst ‘Hello world! :)’ toe (zonder de aanhalingstekens) en sla het bestand vervolgens op.
Upload het bestand naar de zojuist gemaakte container door op de naam van de container te klikken, en vervolgens op Uploaden
In het deelvenster Blob uploaden onder Bestanden selecteert u het mappictogram en bladert u naar het bestand hello_world.txt op uw lokale computer. Selecteer het bestand en klik vervolgens op Uploaden.
Toegang verlenen
In deze sectie leert u hoe u uw VM toegang kunt verlenen tot een Azure Storage-container. U kunt de door het systeem toegewezen beheerde identiteit van de virtuele machine gebruiken om de gegevens in de Azure Storage-blob op te halen.
Navigeer terug naar het zojuist gemaakte opslagaccount.
Klik op Toegangsbeheer (IAM) .
Selecteer Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.
Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.
Instelling Weergegeven als Role Lezer voor opslagblobgegevens Toegang toewijzen aan Beheerde identiteit Door het systeem toegewezen Virtuele machine Select <uw virtuele machine>
Toegang tot gegevens
Azure Storage biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat toegangstokens die zijn verkregen via een beheerde identiteit, rechtstreeks kunnen worden geaccepteerd. Deze benadering maakt gebruik van de integratie van Azure Storage met Microsoft Entra ID en verschilt van het opgeven van referenties in de verbindingsreeks.
Hier volgt een voorbeeld van .NET-code voor het openen van een verbinding met Azure Storage. In het voorbeeld wordt een toegangstoken gebruikt en wordt de inhoud gelezen van het bestand dat u eerder hebt gemaakt. Deze code moet worden uitgevoerd op de virtuele machine om toegang te krijgen tot het eindpunt van de beheerde identiteit van de virtuele machine. .NET framework 4.6 of hoger is vereist voor het gebruik van de toegangsmethode met een toegangstoken. Vervang de waarde van <URI to blob file>
dienovereenkomstig. U kunt deze waarde verkrijgen door te navigeren naar het bestand dat u hebt gemaakt en geüpload naar de blobopslag en de URL onder Eigenschappen op de pagina Overzicht te kopiëren.
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;
}
}
}
}
Het antwoord bevat de inhoud van het bestand:
Hello world! :)
Uitschakelen
Als u de door het systeem toegewezen identiteit op uw VM wilt uitschakelen, stelt u de status van de door het systeem toegewezen identiteit in op Uit.
Volgende stappen
In deze zelfstudie hebt u geleerd een door het Windows-VM-systeem toegewezen identiteit in te schakelen om toegang tot Azure Storage te krijgen. Raadpleeg voor meer informatie over Azure Storage: