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

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 att komma åt en Azure Data Lake Store med en systemtilldelad hanterad identitet för en virtuell Windows-dator. 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 lär du dig hur du:

  • 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

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.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

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

Nu kan du ge din VM-å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. För att skapa en ny Data Lake Store med hjälp av Azure-portalen följer du den här snabbstarten 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 för att välja den virtuella datorn i sökresultaten och välj sedan Välj.
  6. Välj Välj behörigheter. Välj Läs och Kör, lägg till den här mappen, och lägg till den med endast åtkomstbehörighet. Välj OK. Behörigheten bör nu har lagts till.
  7. Stäng bladet Åtkomst.
  8. Skapa en ny mapp för den här självstudien. Välj Ny mapp i kommandofältet och ge den nya mappen ett namn, till exempel TestFolder. Välj OK.
  9. Välj den mapp som du skapade och välj sedan Åtkomst i kommandofältet.
  10. Precis som i steg 5 väljer du Lägg till. I fältet Välj anger du namnet på den virtuella datorn, väljer den och väljer Välj.
  11. Precis som i steg 6 väljer du Välj behörigheter, väljer Läs, Skriva och Kör, lägger till i den här mappen och lägger till som En åtkomstbehörighetspost och en standardbehörighetspost. Välj OK. Behörigheten bör nu har lagts till.

Den virtuella datorns systemtilldelade hanterade identitet kan nu utföra alla åtgärder på filer i den mapp som du skapade. Mer information om hur du hanterar åtkomst till Data Lake Store finns i den här artikeln om Å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 Stöd för Data Lake Store för Microsoft Entra-autentisering finns i Autentisering med Data Lake Store med hjälp av Microsoft Entra-ID

Kommentar

Data Lake Store-filsystemets klient-SDK:er stöder inte ännu hanterade identiteter för Azure-resurser. Den här självstudien kommer att uppdateras när stöd har lagts till i SDK.

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. I portalen går du till Virtuella datorer, går till den virtuella Windows-datorn och väljer 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 Anslut ion för fjärrskrivbord med den virtuella datorn öppnar du PowerShell i fjärrsessionen.

  4. Använd PowerShells Invoke-WebRequest och skicka en begäran till den lokala slutpunkten för hanterade identiteter för Azure-resurser 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 gör en exakt matchning på resurs-ID, och 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. Med hjälp av PowerShells ”Invoke-WebRequest” skickar du en begäran till REST-slutpunkten för din Data Lake Store för att lista mappar 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. Nu kan du prova att ladda upp en fil till din Data Lake Store. Skapa först en fil som ska laddas upp.

    echo "Test file." > Test1.txt
    
  7. Med hjälp av PowerShells Invoke-WebRequest skickar du en begäran till REST-slutpunkten för din Data Lake Store för att ladda upp filen till den mapp som du skapade förut. Den här begäran kräver två steg. I det första steget skapar du en begäran och får en omdirigering till det ställe där filen ska laddas upp. I det andra steget utför du själva uppladdningen av filen. Kom ihåg att ange namnet på mappen och filen på lämpligt sätt om du har använt andra värden än dem som förekommer 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
    

Genom att använda andra Data Lake Store-API:er kan du lägga till i filer, ladda ned filer med mera.

Disable

Om du vill inaktivera den systemtilldelade identiteten på den virtuella datorn anger du statusen för den systemtilldelade identiteten till Av.

Screenshot shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

Nästa steg

I den här självstudien har du lärt dig att använda en systemtilldelad hanterad identitet för en virtuell Windows-dator för att få åtkomst till Data Lake Store. Mer information om Azure Data Lake Store finns i: