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

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.

Skärmbild som visar fliken Systemtilldelat för en virtuell dator där du kan aktivera statusen Systemtilldelat.

Så här aktiverar du en systemtilldelad hanterad identitet på en ny virtuell dator:

  1. Logga in på Azure-portalen

  2. Skapa en virtuell dator med systemtilldelad identitet aktiverat

Bevilja åtkomst

Skapa lagringskonto

I det här avsnittet skapar du ett lagringskonto.

  1. Välj knappen + Skapa en resurs i det övre vänstra hörnet i Azure-portalen.

  2. Välj Lagring och sedan Lagringskonto – blob, fil, tabell, kö.

  3. Under Namn anger du ett namn för lagringskontot.

  4. Distributionsmodell och Typ av konto ska vara inställda på Resurshanterare respektive Lagring (generell användning v1).

  5. Kontrollera att informationen under Prenumeration och Resursgrupp matchar informationen som du angav när du skapade den virtuella datorn i föregående steg.

  6. Välj Skapa.

    Skärmbild som visar hur du skapar ett nytt lagringskonto.

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.

  1. Gå tillbaka till det lagringskonto du nyss skapade.

  2. Under Blob Service väljer du Containrar.

  3. Välj + Container överst på sidan.

  4. Under Ny containeranger du ett namn för containern och under Offentlig åtkomstnivå behåller du standardvärdet.

    Skärmbild som visar hur du skapar lagringscontainer.

  5. 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.

  6. Ladda upp filen till containern du skapade genom att klicka på containernamnet och sedan på Ladda upp

  7. 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. Skärmbild som visar skärmen för uppladdning av textfil.

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.

  1. Gå tillbaka till det lagringskonto du nyss skapade.

  2. Välj Åtkomstkontroll (IAM) .

  3. Klicka på Lägg till>Lägg till rolltilldelning för att öppna sidan Lägg till rolltilldelning.

  4. 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>

    Skärmbild som visar sidan för att lägga till en rolltilldelning.

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.

Skärmbild som visar fliken Systemtilldelat för en virtuell dator där du kan inaktivera statusen Systemtilldelat.

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: