Zelfstudie: Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Data Lake Store

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 een Azure Data Lake Store met een door het systeem toegewezen beheerde identiteit voor een virtuele Windows-machine (VM). Beheerde identiteiten worden automatisch beheerd door Azure. Ze stellen uw toepassing in staat om te verifiëren bij services die Ondersteuning bieden voor Microsoft Entra-verificatie, zonder dat u referenties hoeft in te voegen in uw code.

In dit artikel leert u het volgende:

  • Uw virtuele machine toegang verlenen tot Azure Data Lake Storage
  • Een toegangstoken ophalen met behulp van de identiteit van de virtuele machine en dat token gebruiken om toegang te krijgen tot Azure Data Lake Storage

Vereisten

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.

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

Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuwe VM:

  1. Meld u aan bij Azure Portal

  2. Een virtuele machine maken met door het systeem toegewezen identiteit ingeschakeld

Toegang verlenen

U kunt nu uw virtuele machine toegang tot bestanden en mappen in Azure Data Lake Storage verlenen. Voor deze stap kunt u een bestaande Data Lake Storage gebruiken, of een nieuwe maken. Als u een nieuwe Data Lake Storage wilt maken met behulp van Azure Portal, volgt u deze snelstart voor Azure Data Lake Storage. Er zijn ook snelstarts in de documentatie over Azure Data Lake Storage voor het gebruik van Azure CLI en Azure Powershell.

Maak een nieuwe map in uw Data Lake Store en verleen de door het systeem toegewezen identiteit van uw VM toestemming. De identiteit heeft rechten nodig voor het lezen, schrijven en uitvoeren van bestanden in die map:

  1. Selecteer in Azure Portal Data Lake Store in het linkernavigatievenster.
  2. Selecteer de Data Lake Store die u wilt gebruiken voor deze zelfstudie.
  3. Selecteer Data Explorer in de opdrachtbalk.
  4. De hoofdmap van de Data Lake Storage is geselecteerd. Selecteer Toegang in de opdrachtbalk.
  5. Selecteer Toevoegen. Voer in het veld Selecteren de naam van uw virtuele machine in, bijvoorbeeld DevTestVM. Selecteer uw virtuele machine in de zoekresultaten om deze te selecteren, en selecteer vervolgens Selecteren.
  6. Selecteer Machtigingen selecteren. Selecteer Lezen en Uitvoeren, voeg deze toe aan Deze map als Alleen een toegangsmachtiging. Selecteer OK. De machtiging wordt toegevoegd.
  7. Sluit de blade Toegang.
  8. Voor deze zelfstudie maakt u een nieuwe map. Klik op Nieuwe map in de opdrachtbalk en geef een naam voor de nieuwe map op, bijvoorbeeld TestFolder. Selecteer OK.
  9. Selecteer de map die u hebt gemaakt en selecteer vervolgens Toegang in de opdrachtbalk.
  10. Selecteer, net zoals bij stap 5, Toevoegen, voer de naam van uw virtuele machine in het veld Selecteren in, selecteer deze, en selecteer Selecteren.
  11. Selecteer, net zoals bij stap 6, Machtigingen selecteren, selecteer Lezen, Schrijven en Uitvoeren, voeg deze toe aan Deze map als Een vermelding van een toegangsmachtiging en een vermelding van een standaardmachtiging. Selecteer OK. De machtiging wordt toegevoegd.

De door het systeem toegewezen beheerde identiteit van uw virtuele machine kan nu alle bewerkingen uitvoeren op bestanden in de map die u hebt gemaakt. Lees dit artikel over toegangsbeheer in Data Lake Storage voor meer informatie over het beheren van de toegang tot Data Lake Storage.

Toegang tot gegevens

Azure Data Lake Store biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat toegangstokens die zijn verkregen met behulp van beheerde identiteiten voor Azure-resources, rechtstreeks kunnen worden geaccepteerd. Als u wilt verifiëren bij het Data Lake Store-bestandssysteem, verzendt u een toegangstoken dat is uitgegeven door Microsoft Entra-id naar het eindpunt van uw Data Lake Store-bestandssysteem in een autorisatieheader. De koptekst heeft de indeling 'Bearer <ACCESS_TOKEN_VALUE>'. Lees verificatie met Data Lake Store met behulp van Microsoft Entra-id voor meer informatie over data lake store-ondersteuning voor Microsoft Entra-verificatie

Notitie

Beheerde identiteiten voor Azure-resources worden nog niet ondersteund in de client-SDK's van het Data Lake Storage-bestandssysteem. Deze zelfstudie wordt bijgewerkt zodra ondersteuning voor MSI wordt toegevoegd aan de SDK.

In deze zelfstudie gebruikt u PowerShell voor het maken van REST-aanvragen om te verifiëren bij de REST-API van het Data Lake Storage-bestandssysteem. Als u de door het systeem toegewezen beheerde identiteit van de virtuele machine wilt gebruiken voor verificatie, moet u de aanvragen verzenden vanaf de virtuele machine.

  1. Navigeer in de portal naar Virtuele machines, ga naar uw virtuele Windows-machine, en selecteer op de pagina OverzichtVerbinden.

  2. Voer uw referenties (gebruikersnaam en wachtwoord) in die u hebt toegevoegd bij het maken van de virtuele Windows-machine.

  3. Nu u een Verbinding met extern bureaublad met de virtuele machine hebt gemaakt, opent u PowerShell in de externe sessie.

  4. Gebruik de cmdlet Invoke-WebRequest van Powershell om een aanvraag te versturen naar de lokale beheerde identiteiten om een toegangstoken voor Azure Data Lake Store op te halen voor het Azure-resources-eindpunt. De resource-id voor Data Lake Storage is https://datalake.azure.net/. Voor Data Lake moet u een exact overeenkomende resource-id opgeven, met de schuine streep op het einde.

    $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"}
    

    Converteer de reactie van een JSON-object naar een PowerShell-object.

    $content = $response.Content | ConvertFrom-Json
    

    Extraheer het toegangstoken uit de reactie.

    $AccessToken = $content.access_token
    
  5. Controleer of alles correct is geconfigureerd. Gebruik in PowerShell de Invoke-WebRequest-opdracht om een aanvraag te verzenden naar het REST-eindpunt van Data Lake Storage om de mappen in de hoofdmap weer te geven. Het is belangrijk dat de tekenreeks 'Bearer' in de autorisatie-header begint met de hoofdletter 'B'. U vindt de naam van uw Data Lake Store in de sectie Overzicht van uw Data Lake Store.

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

    Een geslaagde reactie ziet er als volgt uit:

    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 kunt u proberen een bestand te uploaden naar uw Data Lake Storage. Maak eerst een bestand om te uploaden.

    echo "Test file." > Test1.txt
    
  7. Verzend met behulp van Invoke-WebRequest in PowerShell een aanvraag naar het REST-eindpunt van uw Data Lake Storage voor het uploaden van het bestand naar de map die u eerder hebt gemaakt. Deze aanvraag bestaat uit twee stappen. In de eerste stap verzendt u een aanvraag haalt u omleidingsgegevens op zodat u weet waarnaar het bestand moet worden geüpload. In de tweede stap uploadt u het bestand. Vergeet niet de naam van de map en het bestand aan te passen als u andere waarden gebruikt dan die in deze zelfstudie.

    $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
    

    Als u de waarde van $HdfsRedirectResponse inspecteert, ziet het er ongeveer als volgt uit:

    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
    

    Voltooi het uploaden door een aanvraag te verzenden naar het omleidingseindpunt:

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

    Een geslaagde reactie ziet er ongeveer als volgt uit:

    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
    

Met andere API's van het Data Lake Storage-bestandssysteem kunt u toevoegen aan bestanden, bestanden downloaden, en nog veel meer.

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.

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

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u toegang krijgt tot een Azure Data Lake Store met behulp van een door het systeem toegewezen beheerde identiteit voor een virtuele Windows-machine. Zie voor meer informatie over Azure Data Lake Store: