Dela via


Självstudie: Använda en virtuell Windows-dator/VMSS för att få åtkomst till Azure-resurser

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.

Förutsättningar

Använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för åtkomst till Azure Data Lake Store

Den här självstudien visar hur du använder en systemtilldelad hanterad identitet för en virtuell Windows-dator (VM) för att få åtkomst till en Azure Data Lake Store. Hanterade identiteter hanteras automatiskt av Azure. De gör det möjligt för ditt program att autentisera till tjänster som stöder Microsoft Entra-autentisering, utan att behöva infoga autentiseringsuppgifter i koden.

I den här artikeln får du lära dig att:

  • Bevilja din virtuella dator åtkomst till en Azure Data Lake Store
  • Hämta en åtkomsttoken med hjälp av en identitet för en virtuell dator och använd den för att få åtkomst till en Azure Data Lake Store

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

Bevilja åtkomst

Du kan ge den virtuella datorn åtkomst till filer och mappar i en Azure Data Lake Store. Du kan använda en befintlig Data Lake Store eller skapa en ny för det här steget.

Information om hur du skapar en ny Data Lake Store med hjälp av Azure-portalen finns i Snabbstart för Azure Data Lake Store. Det finns även snabbstarter som använder Azure CLI och Azure PowerShell i dokumentationen om Azure Data Lake Store.

I Data Lake Store skapar du en ny mapp och beviljar den virtuella datorns systemtilldelade identitetsbehörighet. Identiteten behöver behörighet att läsa, skriva och köra filer i den mappen:

  1. I Azure-portalen väljer du Data Lake Store i det vänstra navigeringsfältet.
  2. Välj den Data Lake Store som du vill använda för den här självstudien.
  3. Välj Datautforskaren i kommandofältet.
  4. Rotmappen för Data Lake Store har valts. Välj Åtkomst i kommandofältet.
  5. Markera Lägga till. I fältet Välj anger du namnet på den virtuella datorn, till exempel DevTestVM. Välj den virtuella datorn i sökresultaten och välj sedan Välj.
  6. Välj Välj behörigheter och sedan Läs och kör. Lägg till i den här mappen och välj sedan Endast åtkomstbehörighet.
  7. Välj Ok och stäng sedan bladet Åtkomst . Behörigheten bör nu har lagts till.
  8. Skapa sedan en ny mapp. Välj Ny mapp i kommandofältet och ge den nya mappen ett namn. Till exempel TestFolder och välj sedan Ok.
  9. Välj mappen som du skapade och välj sedan Åtkomst i kommandofältet.
  10. Välj Lägg till, i fältet Välj anger du namnet på den virtuella datorn och väljer Välj.
  11. Välj Välj behörigheter och sedan Läs, Skriv och Kör. Lägg till i den här mappen och lägg sedan till som en åtkomstbehörighetspost och en standardbehörighetspost.
  12. Välj OK. Behörigheten bör läggas till.

Den virtuella datorns systemtilldelade hanterade identitet kan nu utföra alla åtgärder på filer i den mapp som du skapade. Information om hur du hanterar åtkomst till Data Lake Store finns i Åtkomstkontroll i Data Lake Store.

Åtkomst till data

Azure Data Lake Store har inbyggt stöd för Microsoft Entra-autentisering, så att det direkt kan acceptera åtkomsttoken som hämtas med hanterade identiteter för Azure-resurser. Om du vill autentisera till Data Lake Store-filsystemet skickar du en åtkomsttoken utfärdad av Microsoft Entra-ID till data Lake Store-filsystemslutpunkten i ett auktoriseringshuvud. Rubriken har formatet Bearer <ACCESS_TOKEN_VALUE>.

Mer information om Data Lake Store-stöd för Microsoft Entra-autentisering finns i Autentisering med Data Lake Store med Microsoft Entra-ID.

Kommentar

Data Lake Store-filsystemets klient-SDK:er stöder inte ännu hanterade identiteter för Azure-resurser.

I den här självstudien autentiserar du till Lake Store-filsystemets REST API med hjälp av PowerShell för att göra REST-begäranden. Om du vill använda den virtuella datorns systemtilldelade hanterade identitet för autentisering behöver du göra begäranden från den virtuella datorn.

  1. Gå till Virtuella datorer i portalen och gå till den virtuella Windows-datorn. Välj sedan Anslut i Översikt.

  2. Ange ditt användarnamn och lösenord som du lade till när du skapade den virtuella Windows-datorn.

  3. Nu när du har skapat en anslutning till fjärrskrivbord med den virtuella datorn öppnar du PowerShell i fjärrsessionen.

  4. Använd PowerShell-cmdleten Invoke-WebRequest och gör en begäran till de lokala hanterade identiteterna för Azure-resursers slutpunkt för att hämta en åtkomsttoken för Azure Data Lake Store. Resursidentifieraren för Data Lake Store är https://datalake.azure.net/. Data Lake matchar resursidentifieraren exakt, så det avslutande snedstrecket är viktigt.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Konvertera svaret från ett JSON-objekt till ett PowerShell-objekt.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahera åtkomsttoken från svaret.

    $AccessToken = $content.access_token
    
  5. Kontrollera att allt är korrekt konfigurerat. Använd PowerShell-cmdleten Invoke-WebRequest och gör en begäran till data lakebutikens REST-slutpunkt för att visa en lista över mapparna i rotmappen. Det är viktigt att strängen Bearer i auktoriseringshuvudet har versalt "B". Du hittar namnet på din Data Lake Store i avsnittet Översikt i Data Lake Store.

    Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
    

    Ett lyckat svar ut så här:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..."
    RawContent        : HTTP/1.1 200 OK
                        Pragma: no-cache
                        x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict-Transport-Security: ma...
    Forms             : {}
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528],
                        [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 556
    
  6. Prova nu att ladda upp en fil till Data Lake Store. Skapa först en fil som ska laddas upp.

    echo "Test file." > Test1.txt
    
  7. Använd PowerShell-cmdleten Invoke-WebRequest och gör en begäran till Data Lake Store REST-slutpunkten för att ladda upp filen till den mapp som du skapade tidigare. Den här begäran kräver två steg.

    1. Gör en begäran och få en omdirigering till den plats där filen ska laddas upp.
    2. Ladda upp -filen. Kom ihåg att ange namnet på mappen och filen på rätt sätt om du använde andra värden än vad som anges i den här självstudien.
    $HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Om du inspekterar värdet för $HdfsRedirectResponsebör det se ut som följande svar:

    PS C:\> $HdfsRedirectResponse
    
    StatusCode        : 307
    StatusDescription : Temporary Redirect
    Content           : {}
    RawContent        : HTTP/1.1 307 Temporary Redirect
                        Pragma: no-cache
                        x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosn...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], 
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

    Slutför uppladdningen genom att skicka en begäran till omdirigeringsslutpunkten:

    Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Ett lyckat svar ut så här:

    StatusCode        : 201
    StatusDescription : Created
    Content           : {}
    RawContent        : HTTP/1.1 201 Created
                        Pragma: no-cache
                        x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307],
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

Slutligen kan du använda andra API:er för Data Lake Store-filsystem för att lägga till och ladda ned filer med mera.

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.

Använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för åtkomst till Azure Storage

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

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

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. I fältet 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å till ditt nyligen skapade lagringskonto.

  2. I avsnittet Blob Service väljer du Containrar.

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

  4. I fältet Ny container anger du ett namn för containern och behåller sedan standardvärdet i alternativet Offentlig åtkomstnivå .

    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 texten Hello world!och spara den sedan.

  6. Välj containernamnet för att ladda upp filen till den nyligen skapade containern och välj sedan Ladda upp.

  7. I fönstret Ladda upp blob i avsnittet Filer väljer du mappikonen och bläddrar till filen hello_world.txt på den lokala datorn. Välj sedan filen och 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å till ditt nyligen skapade lagringskonto.

  2. Välj Åtkomstkontroll (IAM) .

  3. Välj 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å niska veze.

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.

Använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för åtkomst till Azure Storage via en SAS-autentiseringsuppgift

Den här självstudien visar hur du använder en systemtilldelad identitet för en virtuell Windows-dator (VM) för att hämta en SAS-autentiseringsuppgift (Storage Shared Access Signature).

En tjänst-SAS ger möjlighet att bevilja begränsad åtkomst till objekt i ett lagringskonto under begränsad tid och för en specifik tjänst (i det här fallet en blobtjänst). SAS gör detta utan att exponera en kontoåtkomstnyckel. Du kan använda en SAS-autentiseringsuppgift som vanligt för lagringsåtgärder. till exempel när du använder ett lagrings-SDK. Den här självstudien visar hur du laddar upp och laddar ned en blob med Hjälp av Azure Storage PowerShell.

Du lär dig att:

  • Skapa ett lagringskonto
  • Ge den virtuella datorn åtkomst till en SAS för lagringskonton i Resource Manager
  • Hämta en åtkomsttoken med hjälp av den virtuella datorns identitet och använde den när du hämtar SAS:en från Resource Manager

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Skapa ett lagringskonto

Om du inte redan har ett måste du skapa ett lagringskonto. Annars följer du de här stegen för att ge den virtuella datorns systemtilldelade hanterade identitet åtkomst till SAS-autentiseringsuppgifterna för ett befintligt lagringskonto.

  1. Välj Lagring och sedan Lagringskonto.

  2. I panelen Skapa lagringskonto anger du ett namn för lagringskontot.

  3. Se till att distributionsmodellen och kontotypen är inställda på Resource Manager och Generell användning.

  4. Kontrollera att prenumerationen och resursgruppen matchar de objekt som du angav när du skapade den virtuella datorn i föregående steg.

  5. Välj Skapa för att skapa ditt lagringskonto.

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

Skapa en blob-container i lagringskontot

Senare i självstudien laddar du upp och laddar ned en fil till det nya lagringskontot. Eftersom filer kräver bloblagring måste du skapa en blobcontainer för att lagra filen i.

  1. Gå till ditt nyligen skapade lagringskonto.

  2. Välj länken Containrar i den vänstra panelen under Blob-tjänsten.

  3. Välj + Container överst på sidan. Sedan ska en ny containerpanel visas.

  4. Ge containern ett namn, bestäm åtkomstnivån och välj sedan OK. Namnet du anger här används senare i självstudien.

    Skärmbild som visar hur du skapar en lagringscontainer.

Ge den virtuella datorns systemtilldelade hanterade identitet åtkomst till att använda lagrings-SAS

Azure Storage stöder inte Microsoft Entra-autentisering internt. Du kan dock använda en hanterad identitet för att hämta en lagrings-SAS från Resource Manager och sedan använda SAS för att komma åt lagringen. I det här steget ger du den virtuella datorns systemtilldelade hanterade identitet åtkomst till SAS för lagringskontot.

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

  2. Välj Åtkomstkontroll (IAM) .

  3. Välj 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 Lagringskontodeltagare
    Tilldela åtkomst till Hanterad identitet
    Systemtilldelad Virtuell maskin
    Välj <din virtuella Windows-dator>

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

Hämta en åtkomsttoken med hjälp av den virtuella datorns identitet och använd den för att anropa Azure Resource Manager

Under resten av den här självstudien arbetar du från den virtuella datorn. Du måste använda Azure Resource Manager PowerShell-cmdletar i den här delen. Om du inte har PowerShell installerat laddar du ned den senaste versionen innan du fortsätter.

  1. I Azure-portalen går du till Virtuella datorer, går till din virtuella Windows-dator och går sedan till sidan Översikt Välj Anslut överst.

  2. Ange ditt användarnamn och lösenord som du lade till när du skapade den virtuella Windows-datorn.

  3. Upprätta en anslutning till fjärrskrivbord med den virtuella datorn.

  4. Öppna PowerShell i fjärrsessionen och använd sedan PowerShell-cmdleten Invoke-WebRequest för att hämta en Azure Resource Manager-token från den lokala hanterade identiteten för Azure-resursers slutpunkt.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
    

    Kommentar

    Värdet för parametern resource måste vara en exakt matchning för vad som förväntas av Microsoft Entra-ID. När du använder Azure Resource Manager-resurs-ID:t måste du ta med det avslutande snedstrecket i URI:n.

    Extrahera sedan elementet content , som lagras som en JSON-formaterad sträng (JavaScript Object Notation) i $response objektet.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahera sedan åtkomsttoken från svaret.

    $ArmToken = $content.access_token
    

Hämta en SAS-autentiseringsuppgift från Azure Resource Manager om du vill göra lagringsanrop

Slutligen använder du PowerShell för att anropa Resource Manager med hjälp av den åtkomsttoken som du hämtade i föregående avsnitt. Du använder den här token för att skapa en SAS-autentiseringsuppgift för lagring. När du har SAS-autentiseringsuppgifterna kan du anropa andra lagringsåtgärder.

För den här begäran använder du följande HTTP-begäransparametrar för att skapa SAS-autentiseringsuppgifterna:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Parametrarna här ingår i POST-brödtexten i begäran för SAS-autentiseringsuppgifterna. Mer information om parametrar för att skapa en SAS-autentiseringsuppgift finns i LIST Service SAS REST-referensen.

  1. Konvertera parametrarna till JSON och anropa sedan lagringsslutpunkten listServiceSas för att skapa SAS-autentiseringsuppgifterna:

    $params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"}
    $jsonParams = $params | ConvertTo-Json
    
    $sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
    

    Kommentar

    URL:en är skiftlägeskänslig, så se till att du använder exakt samma skiftläge som användes när du namngav resursgruppen, inklusive versaler "G" i resourceGroups.

  2. Extrahera sedan SAS-autentiseringsuppgifterna från svaret:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. Om du inspekterar SAS-autentiseringsuppgifterna bör du se ungefär så här:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. Skapa en fil med namnet test.txt. Använd sedan SAS-autentiseringsuppgifterna för att autentisera med cmdleten New-AzStorageContent , ladda upp filen till blobcontainern och ladda sedan ned filen.

    echo "This is a test text file." > test.txt
    
  5. Se till att installera alla Azure Storage-cmdlets först med hjälp av Install-Module Azure.Storage. Ladda sedan upp den blob som du nyss skapade med hjälp av PowerShell-cmdleten Set-AzStorageBlobContent :

    $ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred
    Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
    

    Svar:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    
  6. Du kan också ladda ned bloben som du laddade upp med hjälp av PowerShell-cmdleten Get-AzStorageBlobContent :

    Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
    

    Svar:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    

Använda en systemtilldelad hanterad identitet för virtuell Windows-dator för att få åtkomst till Azure SQL Database

Den här självstudien visar hur du använder en systemtilldelad identitet för en virtuell Windows-dator (VM) för att få åtkomst till Azure SQL Database. Hanterade tjänstidentiteter hanteras automatiskt av Azure och gör att du kan autentisera till tjänster som stöder Microsoft Entra-autentisering, utan att behöva infoga autentiseringsuppgifter i koden.

Du lär dig att:

  • Ge den virtuella datorn åtkomst till Azure SQL Database
  • Aktivera Microsoft Entra-autentisering
  • Skapa en innesluten användare i databasen som representerar den virtuella datorns systemtilldelade identitet
  • Hämta en åtkomsttoken med hjälp av den virtuella datoridentiteten och använd den för att fråga Azure SQL Database

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

Bevilja åtkomst

Om du vill ge den virtuella datorn åtkomst till en databas i Azure SQL Database använder du en befintlig logisk SQL-server eller skapar en ny. Om du vill skapa en ny server och databas med hjälp av Azure-portalen följer du snabbstarten för Azure SQL. Det finns även snabbstarter som använder Azure CLI och Azure PowerShell i Azure SQL-dokumentationen.

Följ dessa steg för att ge den virtuella datorn åtkomst till en databas:

  1. Aktivera Microsoft Entra-autentisering för servern.
  2. Skapa en innesluten användare i databasen som representerar den virtuella datorns systemtilldelade identitet.

Aktivera Microsoft Entra-autentisering

Så här konfigurerar du Microsoft Entra-autentisering:

  1. I Azure-portalen väljer du SQL Server i det vänstra navigeringsfältet.
  2. Välj den SQL-server som du vill aktivera för Microsoft Entra-autentisering.
  3. I avsnittet Inställningar på bladet väljer du Active Directory-administratör.
  4. I kommandofältet väljer du Ange administratör.
  5. Välj ett Microsoft Entra-användarkonto som ska göras till administratör för servern och välj Välj.
  6. I kommandofältet väljer du Spara.

Skapa innesluten användare

Det här avsnittet visar hur du skapar en innesluten användare i databasen som representerar den virtuella datorns systemtilldelade identitet. För det här steget behöver du Microsoft SQL Server Management Studio (SSMS) installerat. Innan du börjar kan det vara bra att granska följande artiklar för bakgrund om Microsoft Entra-integrering:

SQL-databaser kräver unika Microsoft Entra-ID-visningsnamn. Med detta måste Microsoft Entra-konton, till exempel användare, grupper och tjänstens huvudnamn (program) och VM-namn som är aktiverade för hanterad identitet definieras unikt i Microsoft Entra-ID som är specifikt för deras motsvarande visningsnamn. SQL kontrollerar Microsoft Entra-ID:ts visningsnamn när T-SQL skapas av sådana användare. Om visningsnamnen inte är unika misslyckas kommandot och du uppmanas att ange ett unikt Microsoft Entra-ID-visningsnamn för varje specifikt konto.

Skapa en innesluten användare

  1. Öppna SQL Server Management Studio.

  2. I dialogrutan Anslut till server anger du servernamnet i fältet Servernamn.

  3. I fältet Autentisering väljer du Active Directory – Universell med stöd för MFA.

  4. I fältet Användarnamn anger du namnet på det Microsoft Entra-konto som du angav som serveradministratör, cjensen@fabrikam.comtill exempel .

  5. Välj alternativ

  6. I fältet Anslut till databas anger du namnet på den icke-systembaserade databas som du vill konfigurera.

  7. Välj Anslut och slutför sedan inloggningsprocessen.

  8. I Object Explorer expanderar du mappen Databaser.

  9. Högerklicka på en användardatabas och välj sedan Ny fråga.

  10. I frågefönstret anger du följande rad och väljer Kör i verktygsfältet:

    Kommentar

    VMName i följande kommando är namnet på den virtuella datorn som du har aktiverat systemtilldelad identitet på i avsnittet om förutsättningar.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Kommandot bör slutföras genom att skapa den inneslutna användaren för den virtuella datorns systemtilldelade identitet.

  11. Rensa frågefönstret, ange följande rad och välj Kör i verktygsfältet:

    Kommentar

    VMName i följande kommando är namnet på den virtuella dator som du aktiverade systemtilldelad identitet på i avsnittet förutsättningar.

    Om du stöter på felet "Huvudkontot VMName har ett duplicerat visningsnamn" lägger du till instruktionen CREATE USER med WITH OBJECT_ID='xxx'.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Kommandot bör slutföras genom att ge den inneslutna användaren möjlighet att läsa hela databasen.

Kod som körs på den virtuella datorn kan nu hämta en token med hjälp av sin systemtilldelade hanterade identitet och använda token för att autentisera till servern.

Åtkomst till data

Det här avsnittet visar hur du hämtar en åtkomsttoken med hjälp av den virtuella datorns systemtilldelade hanterade identitet och använder den för att anropa Azure SQL. Azure SQL har inbyggt stöd för Microsoft Entra-autentisering, så att det direkt kan acceptera åtkomsttoken som hämtas med hanterade identiteter för Azure-resurser. Den här metoden kräver inte att du anger autentiseringsuppgifter för niska veze.

Här är ett .NET-kodexempel på hur du öppnar en anslutning till SQL med active directory-hanterad identitetsautentisering. Koden måste köras på den virtuella datorn för att kunna komma åt den virtuella datorns systemtilldelade hanterade identitetsslutpunkt.

.NET Framework 4.6.2 eller senare eller .NET Core 3.1 eller senare krävs för att använda den här metoden. Ersätt värdena för AZURE-SQL-SERVERNAME och DATABASE i enlighet med detta och lägg till en NuGet-referens i biblioteket Microsoft.Data.SqlClient.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Kommentar

Du kan använda hanterade identiteter när du arbetar med andra programmeringsalternativ med hjälp av våra SDK:er.

Du kan också använda PowerShell för att testa installationen från slutpunkt till slutpunkt utan att behöva skriva och distribuera en app på den virtuella datorn.

  1. I portalen navigerar du till Virtuella datorer, går till den virtuella Windows-datorn och väljer sedan Anslut i Översikt.

  2. Ange autentiseringsuppgifterna för den virtuella datorns administratör som du lade till när du skapade den virtuella Windows-datorn.

  3. Nu när du har skapat en anslutning till fjärrskrivbord med den virtuella datorn öppnar du PowerShell i en fjärrsession.

  4. Använd PowerShell-cmdleten Invoke-WebRequest och gör en begäran till den lokala hanterade identitetens slutpunkt för att hämta en åtkomsttoken för Azure SQL.

        $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Konvertera svaret från ett JSON-objekt till ett PowerShell-objekt.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahera åtkomsttoken från svaret.

    $AccessToken = $content.access_token
    
  5. Öppna en anslutning till servern. Kom ihåg att ersätta värdena för AZURE-SQL-SERVERNAME och DATABASE.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Sedan skapar du och skickar en fråga till servern. Kom ihåg att ersätta värdet för TABLE.

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "SELECT * from <TABLE>;"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    

Granska slutligen värdet $DataSet.Tables[0] för för att visa resultatet av frågan.

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.

Använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för åtkomst till Azure Key Vault

Den här självstudien visar hur en virtuell Windows-dator (VM) kan använda en systemtilldelad hanterad identitet för att få åtkomst till Azure Key Vault. Key Vault gör det möjligt för klientprogrammet att använda en hemlighet för att komma åt resurser som inte skyddas av Microsoft Entra-ID. Hanterade identiteter hanteras automatiskt av Azure. De gör att du kan autentisera till tjänster som stöder Microsoft Entra-autentisering, utan att inkludera autentiseringsinformation i koden.

Du lär dig att:

  • Ge din virtuella dator åtkomst till en hemlighet som lagras i Key Vault
  • Få ett åtkomsttoken med hjälp av den virtuella datorns identitet och använd den när du hämtar hemligheten från Key Vault

Skapa ett Nyckelvalv

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Det här avsnittet visar hur du beviljar den virtuella datorn åtkomst till en hemlighet som lagras i ett Key Vault. När du använder hanterade identiteter för Azure-resurser kan koden få åtkomsttoken för att autentisera mot resurser som stöder Microsoft Entra-autentisering. 

Alla Azure-tjänster stöder dock inte Microsoft Entra-autentisering. Om du vill använda hanterade identiteter för Azure-resurser med dessa tjänster lagrar du autentiseringsuppgifterna för tjänsten i Azure Key Vault och får åtkomst till Key Vault och hämtar autentiseringsuppgifterna med hjälp av den virtuella datorns hanterade identitet.

Först måste du skapa ett Key Vault och ge den virtuella datorns systemtilldelade hanterade identitet åtkomst till Key Vault.

  1. Logga in på Azure-portalen.

  2. Längst upp i det vänstra navigeringsfältet väljer du Skapa en resurs.

  3. I rutan Sök på Marketplace skriver du in Key Vault och trycker på Retur.

  4. Välj Key Vault i resultatet och välj sedan Skapa.

  5. Ange ett namn för det nya nyckelvalvet.

    Skärmbild av skärmen Skapa ett nyckelvalv.

  6. Fyll i all nödvändig information. Se till att du väljer den prenumeration och resursgrupp som du använder för den här självstudien.

  7. Välj Granska+ skapa.

  8. Välj Skapa.

Skapa en hemlighet

Därefter måste du lägga till en hemlighet i Key Vault, så att du kan hämta den senare med hjälp av kod som körs på den virtuella datorn. I det här avsnittet använder du PowerShell, men samma begrepp gäller för all kod som du kör på den virtuella datorn.

  1. Navigera till ditt nyligen skapade Key Vault.

  2. Välj Hemligheter och välj sedan Lägg till.

  3. Välj Generera/Importera.

  4. På skärmen Skapa en hemlighet går du till uppladdningsalternativen och låter Manuell vara markerad.

  5. Ange ett namn och värde för hemligheten. Värdet kan vara vad du vill. 

  6. Låt aktiveringsdatum och förfallodatum vara tomt och sätt Aktiverad som Ja

  7. Välj Skapa för att skapa hemligheten.

    Skärmbild som visar hur du skapar en hemlighet.

Bevilja åtkomst

Den hanterade identitet som används av den virtuella datorn måste beviljas åtkomst för att läsa hemligheten som Key Vault lagrar.

  1. Navigera till ditt nyligen skapade Key Vault.

  2. Välj Åtkomstprincip på menyn till vänster.

  3. Välj Lägg till åtkomstprincip.

    Skärmbild som visar skärmen Åtkomstprincip för Nyckelvalv.

  4. I avsnittet Lägg till åtkomstprincip går du till Konfigurera från mall (valfritt) och väljer Hemlig hantering på den nedrullningsbara menyn.

  5. Välj Välj huvudnamn och ange sedan namnet på den virtuella dator som du skapade tidigare i sökfältet. 

  6. Välj den virtuella datorn i resultatlistan och välj sedan Välj.

  7. Markera Lägg till.

  8. Välj Spara.

Åtkomst till data

Det här avsnittet visar hur du hämtar en åtkomsttoken med hjälp av den virtuella datoridentiteten och använder den för att hämta hemligheten från Key Vault. Om du inte har PowerShell 4.3.1 eller senaste installerat måste du ladda ned och installera den senaste versionen.

Kommentar

Metoden att använda PowerShell för att autentisera och hämta hemligheten är att föredra i scenarier där hanterade identiteter krävs specifikt, eller när processen bäddas in i ett programs kod.

Använd först den virtuella datorns systemtilldelade hanterade identitet för att hämta en åtkomsttoken för att autentisera till Key Vault:

  1. I portalen går du till Virtuella datorer och går till den virtuella Windows-datorn och väljer sedan Anslut i Översikt.
  2. Ange ditt användarnamn och lösenord som du lade till när du skapade den virtuella Windows-datorn.
  3. Nu när du har skapat en anslutning till fjärrskrivbord med den virtuella datorn öppnar du PowerShell i en fjärrsession.
  4. I PowerShell anropar du webbegäran för klientorganisationen om du vill få en token för den lokala värden i porten för den virtuella datorn.

Kommentar

Om du använder ett nationellt moln, till exempel GCC-H, använder du slutpunkten vault.usgovcloudapi.net i stället för vault.azure.net i PowerShell-cmdleten.

Exempel på PowerShell-begäran:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Kommentar

När du arbetar med nationella moln måste du göra justeringar i slutpunkten som anges i slutet av cmdleten.

Du bör till exempel vault.usgovcloudapi.net använda när du arbetar med Azure Government Cloud, där det här är slutresultatet:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"

Om du vill bekräfta att suffixet matchar din miljö läser du artikeln Säkerhetsöversikt för Azure Key Vault.

Svaret ska se ut så här:

Skärmbild som visar en begäran med tokensvar.

Extrahera sedan åtkomsttoken från svaret.

   $KeyVaultToken = $Response.access_token

Använd slutligen PowerShell-cmdleten Invoke-WebRequest för att hämta hemligheten som du skapade tidigare i Key Vault och skicka åtkomsttoken i auktoriseringshuvudet. Du behöver URL:en till ditt Key Vault, som finns i avsnittet Essentials på Key Vault-sidan Översikt.

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

Svaret bör se ut så här:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

När du har hämtat hemligheten från Key Vault kan du använda den och autentisera mot en tjänst som kräver ett namn och lösenord.

Rensa resurser

När du vill rensa resurser loggar du slutligen in på Azure-portalen, väljer Resursgrupper och letar sedan upp och väljer den resursgrupp som skapades under den här självstudien (till exempel mi-test). Använd sedan kommandot Ta bort resursgrupp .

Du kan också rensa resurser med hjälp av PowerShell eller CLI.

Använda en systemtilldelad hanterad identitet för virtuell Windows-dator för att få åtkomst till resurshanteraren

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

I den här självstudien beskrivs hur du skapar en systemtilldelad identitet, tilldelar den till en virtuell Windows-dator (VM) och sedan använder den identiteten för att komma åt Azure Resource Manager-API:et. Hanterade tjänstidentiteter hanteras automatiskt av Azure. De möjliggör autentisering till tjänster som stöder Microsoft Entra-autentisering, utan att behöva bädda in autentiseringsuppgifter i koden.

Du lär dig att:

  • Ge den virtuella datorn åtkomst till Azure Resource Manager.
  • Hämta en åtkomsttoken med hjälp av den virtuella datorns systemtilldelade hanterade identitet för att få åtkomst till Resource Manager.
  1. Logga in på Azure-portalen med ditt administratörskonto.

  2. Gå till fliken Resursgrupper .

  3. Välj den resursgrupp som du vill bevilja den virtuella datorns hanterade identitetsåtkomst.

  4. Välj Åtkomstkontroll (IAM) i den vänstra panelen.

  5. Välj Lägg till och sedan Lägg till rolltilldelning.

  6. På fliken Roll väljer du Läsare. Med den här rollen kan du visa alla resurser, men du kan inte göra några ändringar.

  7. På fliken Medlemmar för alternativet Tilldela åtkomst till väljer du Hanterad identitet och sedan + Välj medlemmar.

  8. Kontrollera att rätt prenumeration visas i listrutan Prenumeration . För Resursgrupp väljer du Alla resursgrupper.

  9. I listrutan Hantera identitet väljer du Virtuell dator.

  10. För Välj väljer du den virtuella datorn i listrutan och väljer sedan Spara.

    Skärmbild som visar hur du lägger till läsarrollen i den hanterade identiteten.

Hämta en åtkomsttoken

Använd den virtuella datorns systemtilldelade hanterade identitet och anropa Resource Manager för att hämta en åtkomsttoken.

För att slutföra de här stegen behöver du en SSH-klient. Om du använder Windows kan du använda SSH-klienten i Windows podsistem za Linux. Om du behöver hjälp att konfigurera SSH-klientens nycklar läser du Använda SSH-nycklar med Windows i Azure eller How to create and use an SSH public and private key pair for Linux VMs in Azure (Skapa och använda SSH-nyckelpar med privata och offentliga nycklar för virtuella Linux-datorer i Azure).

  1. Gå till den virtuella Linux-datorn i portalen och välj Anslut i Översikt.
  2. Anslut till den virtuella datorn med valfri SSH-klient.
  3. I terminalfönstret med hjälp av curlgör du en begäran till de lokala hanterade identiteterna för Azure-resursers slutpunkt för att hämta en åtkomsttoken för Azure Resource Manager.   curl-begäran för åtkomsttoken visas nedan.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Kommentar

Värdet för parametern resource måste vara en exakt matchning för vad som förväntas av Microsoft Entra-ID. När det gäller Resurshanterarens resurs-ID måste du inkludera det avslutande snedstrecket på URI:n.

Svaret innehåller den åtkomsttoken som du behöver för att komma åt Azure Resource Manager.

Svar:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Använd den här åtkomsttoken för att få åtkomst till Azure Resource Manager. om du till exempel vill läsa information om resursgruppen som du tidigare gav den här virtuella datorn åtkomst till. Ersätt värdena <SUBSCRIPTION-ID>för , <RESOURCE-GROUP>och <ACCESS-TOKEN> med de som du skapade tidigare.

Kommentar

URL:en är skiftlägeskänslig, så se till att om du använder det exakta fallet som du använde tidigare när du namngav resursgruppen och versaler "G" i "resourceGroup".

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Svaret tillbaka med den specifika resursgruppsinformationen:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Använda en användartilldelad hanterad identitet på en virtuell Windows-dator för att få åtkomst till Azure Resource Manager

I den här självstudien beskrivs hur du skapar en användartilldelad identitet, tilldelar den till en virtuell Windows-dator (VM) och sedan använder den identiteten för att komma åt Azure Resource Manager-API:et. Hanterade tjänstidentiteter hanteras automatiskt av Azure. De möjliggör autentisering till tjänster som stöder Microsoft Entra-autentisering, utan att behöva bädda in autentiseringsuppgifter i koden.

Du lär dig att:

  • Skapa en användartilldelad hanterad identitet
  • Tilldela en användartilldelad identitet till din virtuella Windows-dator
  • Ge den användartilldelade identiteten åtkomst till en resursgrupp i Azure Resource Manager
  • Hämta en åtkomsttoken med hjälp av den användartilldelade identiteten och använd den för att anropa Azure Resource Manager
  • Läsa egenskaper för en resursgrupp

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Konfigurera Azure PowerShell lokalt

Om du vill köra skript i det här exemplet har du två alternativ:

  • Använd Azure Cloud Shell, som du kan öppna med hjälp av knappen Prova i det övre högra hörnet av kodblock.
  • Kör skript lokalt med Azure PowerShell enligt beskrivningen i nästa avsnitt.

Utför följande steg för att använda Azure PowerShell lokalt för den här självstudien (i stället för att använda Cloud Shell):

  1. Installera den senaste versionen av Azure PowerShell, om du inte redan har gjort det.

  2. Logga in på Azure:

    Connect-AzAccount
    
  3. Installera den senaste versionen av PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Du kan behöva Exit avsluta den aktuella PowerShell-sessionen när du har kört det här kommandot för nästa steg.

  4. Installera den utgivna versionen av modulen Az.ManagedServiceIdentity . Du behöver detta för att utföra de användartilldelade hanterade identitetsåtgärderna i den här självstudien:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Aktivera

För scenarier som baseras på en användartilldelad identitet måste du utföra följande steg i det här avsnittet:

  1. Skapa en identitet.
  2. Tilldela den nyligen skapade identiteten.

Skapa identitet

Det här avsnittet visar hur du skapar en användartilldelad identitet som skapas som en fristående Azure-resurs. Med cmdleten New-AzUserAssignedIdentity skapar Azure en identitet i din Microsoft Entra-klientorganisation som du kan tilldela till en eller flera Azure-tjänstinstanser.

Viktigt!

När du skapar användartilldelade hanterade identiteter måste namnet börja med en bokstav eller siffra och kan innehålla en kombination av alfanumeriska tecken, bindestreck (-) och understreck (_). För att tilldelningen till en virtuell dator eller vm-skalningsuppsättning ska fungera korrekt är namnet begränsat till 24 tecken. Mer information finns i Vanliga frågor och kända problem.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Svaret innehåller information om den skapade användartilldelade identiteten, ungefär som i följande exempel. Id Definiera värdena och ClientId för din användartilldelade identitet, eftersom de används i följande steg:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-bbbb-cccc-1111-222222222222&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Tilldela identitet

Det här avsnittet visar hur du tilldelar den användartilldelade identiteten till en virtuell Windows-dator. En användartilldelad identitet kan användas av klienter på flera Azure-resurser. Använd följande kommandon för att tilldela den användartilldelade identiteten till en enskild virtuell dator. Använd egenskapen Id som returnerades i föregående steg för -IdentityID-parametern.

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"

Bevilja åtkomst

Det här avsnittet visar hur du beviljar din användartilldelade identitet åtkomst till en resursgrupp i Azure Resource Manager. Hanterade identiteter för Azure-resurser tillhandahåller identiteter som din kod kan använda för att begära åtkomsttoken för att autentisera mot resurs-API:er som stöder Microsoft Entra-autentisering. I den här självstudiekursen använder koden Azure Resource Manager-API:et.

Innan koden kan komma åt API:et måste du ge identiteten åtkomst till en resurs i Azure Resource Manager. I det här fallet får du åtkomst till resursgruppen som den virtuella datorn finns i. Uppdatera värdet för <SUBSCRIPTIONID> baserat på din miljö.

$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"

Svaret innehåller information om rolltilldelningen som skapats, liknande den i följande exempel:

RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False

Åtkomst till data

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Hämta en åtkomsttoken

Under resten av självstudien arbetar du från den virtuella dator som du skapade tidigare.

  1. Logga in på Azure-portalen.

  2. I portalen går du till Virtuella datorer och går till den virtuella Windows-datorn. I Översikt väljer du Anslut.

  3. Ange användarnamnet och lösenordet som du använde när du skapade den virtuella Windows-datorn.

  4. Nu när du har skapat en anslutning till fjärrskrivbord med den virtuella datorn öppnar du PowerShell i en fjärrsession.

  5. Använd PowerShell-cmdleten Invoke-WebRequest och gör en begäran till de lokala hanterade identiteterna för Azure-resursers slutpunkt för att hämta en åtkomsttoken för Azure Resource Manager. Värdet client_id är det värde som returnerades när du skapade den användartilldelade hanterade identiteten.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Läsegenskaper

Slutligen använder du åtkomsttoken som hämtades i föregående steg för att komma åt Azure Resource Manager och läser sedan egenskaperna för den resursgrupp som du gav din användartilldelade identitetsåtkomst. Ersätt <SUBSCRIPTION ID> med prenumerations-ID för din miljö.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Svaret innehåller information om den specifika resursgruppen, liknande den i följande exempel:

{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}

Läs mer