Självstudie: Använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för åtkomst till Azure Storage
Hanterade identiteter för Azure-resurser är en funktion i Microsoft Entra-ID. Alla Azure-tjänster som stöder hanterade identiteter för Azure-resurser har sin egen tidslinje. Var noga med att kontrollera tillgänglighetsstatus för hanterade identiteter för din resurs och kända problem innan du börjar.
I den här självstudien lär du dig hur du använder en systemtilldelad hanterad identitet för en virtuell Windows-dator för att få åtkomst till Azure Storage. Du lär dig att:
- Skapa en blobcontainer i ett lagringskonto
- Ge den systemtilldelade hanterade identiteten för din virtuella Windows-dator åtkomst till ett lagringskonto
- Hämta en åtkomsttoken, och använda den och anropa Azure Storage
Kommentar
Microsoft Entra-autentisering för Azure Storage finns i offentlig förhandsversion.
Förutsättningar
- Om du inte känner till funktionen för hanterade identiteter för Azure-resurser kan du läsa igenom den här översikten.
- Om du inte har ett Azure-konto registrerar du dig för ett kostnadsfritt konto innan du fortsätter.
- För att du ska kunna utföra det resursskapande och den rollhantering som krävs måste ditt konto ha behörigheten ”Ägare” på lämpligt omfång (din prenumeration eller resursgrupp). Om du behöver hjälp med rolltilldelning kan du läsa Tilldela Azure-roller för att hantera åtkomst till dina Azure-prenumerationsresurser.
Aktivera
Att aktivera en systemtilldelad hanterad identitet är en upplevelse med ett klick. Du kan antingen aktivera den när en virtuell dator skapas eller i egenskaperna för en befintlig virtuell dator.
Så här aktiverar du en systemtilldelad hanterad identitet på en ny virtuell dator:
Bevilja åtkomst
Skapa lagringskonto
I det här avsnittet skapar du ett lagringskonto.
Välj knappen + Skapa en resurs i det övre vänstra hörnet i Azure-portalen.
Välj Lagring och sedan Lagringskonto – blob, fil, tabell, kö.
Under Namn anger du ett namn för lagringskontot.
Distributionsmodell och Typ av konto ska vara inställda på Resurshanterare respektive Lagring (generell användning v1).
Kontrollera att informationen under Prenumeration och Resursgrupp matchar informationen som du angav när du skapade den virtuella datorn i föregående steg.
Välj Skapa.
Skapa en blobcontainer och ladda upp en fil till lagringskontot
Eftersom filer kräver bloblagring måste du skapa en blobcontainer som du lagrar filen i. Sedan laddar du upp en fil till blobcontainern i det nya lagringskontot.
Gå tillbaka till det lagringskonto du nyss skapade.
Under Blob Service väljer du Containrar.
Välj + Container överst på sidan.
Under Ny containeranger du ett namn för containern och under Offentlig åtkomstnivå behåller du standardvärdet.
Med hjälp av valfritt redigeringsprogram skapar du en fil som heter hello world.txt på den lokala datorn. Öppna filen och lägg till följande text (utan citattecken): ”Hello world! :)”och spara den.
Ladda upp filen till containern du skapade genom att klicka på containernamnet och sedan på Ladda upp
I fönstret Ladda upp blob under Filer väljer du mappikonen och bläddrar till filen hello_world.txt på den lokala datorn, väljer filen och väljer sedan Ladda upp.
Bevilja åtkomst
Det här avsnittet visar hur du beviljar den virtuella datorn åtkomst till en Azure Storage-container. Du kan använda den virtuella datorns systemtilldelade hanterade identitet för att hämta data i Azure Storage Blob.
Gå tillbaka till det lagringskonto du nyss skapade.
Välj Åtkomstkontroll (IAM) .
Klicka på Lägg till>Lägg till rolltilldelning för att öppna sidan Lägg till rolltilldelning.
Tilldela följande roll. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.
Inställning Värde Roll Läsare av lagringsblobdata Tilldela åtkomst till Hanterad identitet Systemtilldelad Virtuell dator Välj <din virtuella dator>
Komma åt data
Azure Storage har inbyggt stöd för Microsoft Entra-autentisering, så att det direkt kan acceptera åtkomsttoken som hämtas med hjälp av en hanterad identitet. Den här metoden använder Azure Storages integrering med Microsoft Entra-ID och skiljer sig från att ange autentiseringsuppgifter på anslutningssträng.
Här är ett .NET-kodexempel på hur du öppnar en anslutning till Azure Storage. Exemplet använder en åtkomsttoken och läser sedan innehållet i filen som du skapade tidigare. Koden måste köras på den virtuella datorn om du vill komma åt slutpunkten för den virtuella datorns hanterade identitet. .NET Framework 4.6 eller senare krävs för att använda metoden för åtkomsttoken. Ersätt värdet för <URI to blob file>
därefter. Du kan hämta värdet genom att gå till filen du skapade och laddade upp till bloblagringen, och kopiera URL:en under Egenskaper på sidan Översikt.
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;
}
}
}
}
Svaret innehåller filens innehåll:
Hello world! :)
Inaktivera
Om du vill inaktivera den systemtilldelade identiteten på den virtuella datorn anger du statusen för den systemtilldelade identiteten till Av.
Nästa steg
I den här självstudien har du lärt dig hur du aktiverar en systemtilldelad identitet för en virtuell Windows-dator för att få åtkomst till Azure Storage. Mer information om Azure Storage finns i: