Samouczek: używanie przypisanej przez system tożsamości zarządzanej na maszynie wirtualnej z systemem Windows do uzyskiwania dostępu do usługi Azure Data Lake Store

Zarządzane tożsamości dla zasobów platformy Azure to funkcja usługi Azure Active Directory. Każda usługa platformy Azure obsługująca tożsamości zarządzane dla zasobów platformy Azure ma własną oś czasu. Pamiętaj, aby przed rozpoczęciem sprawdzić stan dostępności tożsamości zarządzanych dla swojego zasobu i znane problemy.

W tym samouczku przedstawiono sposób używania tożsamości zarządzanej przypisanej przez system dla maszyny wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure Data Lake Store. Tożsamości zarządzane są automatycznie zarządzane przez platformę Azure. Umożliwiają one aplikacji uwierzytelnianie w usługach obsługujących uwierzytelnianie usługi Azure AD bez konieczności wstawiania poświadczeń do kodu.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Udzielanie maszynie wirtualnej praw dostępu do usługi Azure Data Lake Store
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do uzyskiwania dostępu do usługi Azure Data Lake Store

Wymagania wstępne

Włącz

Włączenie tożsamości zarządzanej przypisanej przez system jest jednym kliknięciem. Można ją włączyć podczas tworzenia maszyny wirtualnej lub we właściwościach istniejącej maszyny wirtualnej.

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

Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:

  1. Zaloguj się do Azure Portal

  2. Create a virtual machine with system-assigned identity enabled (Tworzenie maszyny wirtualnej z tożsamością przypisaną przez system)

Udzielanie dostępu

Teraz możesz udzielić maszynie wirtualnej praw dostępu do plików i folderów w usłudze Azure Data Lake Store. W tym kroku możesz użyć istniejącej usługi Data Lake Store lub utworzyć nową. Aby utworzyć nową usługę Data Lake Store przy użyciu witryny Azure Portal, wykonaj czynności opisane w przewodniku Szybki start dotyczącym usługi Azure Data Lake Store. W dokumentacji usługi Azure Data Lake Store są również dostępne przewodniki Szybki start, które używają interfejsu wiersza polecenia platformy Azure oraz programu Azure PowerShell.

W usłudze Data Lake Store utwórz nowy folder i przyznaj uprawnienia tożsamości przypisanej przez system maszyny wirtualnej. Tożsamość musi mieć uprawnienia do odczytu, zapisu i wykonywania plików w tym folderze:

  1. W Azure Portal wybierz pozycję Data Lake Store w obszarze nawigacji po lewej stronie.
  2. Wybierz usługę Data Lake Store, której chcesz użyć w tym samouczku.
  3. Wybierz pozycję Data Explorer na pasku poleceń.
  4. Zostanie zaznaczony folder główny usługi Data Lake Store. Wybierz pozycję Dostęp na pasku poleceń.
  5. Wybierz pozycję Dodaj. W polu Wybierz wprowadź nazwę maszyny wirtualnej, na przykład DevTestVM. Wybierz maszynę wirtualną z wyników wyszukiwania, a następnie wybierz pozycję Wybierz.
  6. Wybierz pozycję Wybierz uprawnienia. Wybierz pozycje Odczyt i Wykonywanie, dodaj do pozycji Ten folder i dodaj jako Tylko uprawnienie dostępu. Wybierz przycisk OK. Dodawanie uprawnienia powinno zakończyć się pomyślnie.
  7. Zamknij blok Dostęp.
  8. W tym samouczku utworzymy nowy folder. Wybierz pozycję Nowy folder na pasku poleceń i nadaj nowemu folderowi nazwę, na przykład TestFolder. Wybierz przycisk OK.
  9. Wybierz utworzony folder, a następnie wybierz pozycję Dostęp na pasku poleceń.
  10. Podobnie jak w kroku 5, wybierz pozycję Dodaj, w polu Wybierz wprowadź nazwę maszyny wirtualnej, wybierz ją i wybierz pozycję Wybierz.
  11. Podobnie jak w kroku 6, wybierz pozycję Wybierz uprawnienia, wybierz pozycję Odczyt, Zapis i Wykonaj, dodaj do tego folderu i dodaj jako wpis uprawnień dostępu i domyślny wpis uprawnień. Wybierz przycisk OK. Dodawanie uprawnienia powinno zakończyć się pomyślnie.

Przypisana przez system tożsamość usługi zarządzanej maszyny wirtualnej może teraz wykonywać wszystkie operacje na plikach w utworzonym folderze. Aby uzyskać więcej informacji na temat zarządzania dostępem do usługi Data Lake Store, przeczytaj ten artykuł w sekcji Kontrola dostępu w usłudze Data Lake Store.

Uzyskiwanie dostępu do danych

Usługa Azure Data Lake Store natywnie obsługuje uwierzytelnianie usługi Azure AD, więc może bezpośrednio akceptować tokeny dostępu pozyskane przy użyciu tożsamości zarządzanych dla zasobów platformy Azure. Aby uwierzytelnić się w systemie plików usługi Data Lake Store, należy wysłać token dostępu wystawiony przez usługę Azure AD do punktu końcowego systemu plików usługi Data Lake Store w nagłówku Autoryzacja. Nagłówek ma format "Bearer <ACCESS_TOKEN_VALUE>". Aby dowiedzieć się więcej na temat obsługi usługi Data Lake Store na potrzeby uwierzytelniania usługi Azure AD, przeczytaj Authentication with Data Lake Store using Azure Active Directory (Uwierzytelnianie w usłudze Data Lake Store za pomocą usługi Azure Active Directory)

Uwaga

Zestawy SDK klientów systemu plików usługi Data Lake Store jeszcze nie obsługują przypisanej przez system tożsamości zarządzanej dla zasobów platformy Azure. Ten samouczek zostanie zaktualizowany po dodaniu obsługi do zestawów SDK.

W tym samouczku uwierzytelniasz się w interfejsie REST API dla systemu plików usługi Data Lake Store przy użyciu programu PowerShell w celu wysłania żądań REST. Aby użyć przypisanej przez system tożsamości zarządzanej maszyny wirtualnej na potrzeby uwierzytelniania, musisz wysłać żądania z maszyny wirtualnej.

  1. W portalu przejdź do Virtual Machines, przejdź do maszyny wirtualnej Windows, a następnie w obszarze Przegląd wybierz pozycję Połączenie.

  2. Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.

  3. Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.

  4. Używając polecenia Invoke-WebRequest programu PowerShell, wyślij żądanie do lokalnego punktu końcowego tożsamości zarządzanych dla zasobów platformy Azure, aby uzyskać token dostępu na potrzeby usługi Azure Data Lake Store. Identyfikator zasobu usługi Data Lake Store to https://datalake.azure.net/. Usługa Data Lake wykonuje dokładne dopasowanie identyfikatora zasobu — końcowy ukośnik jest ważny.

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

    Skonwertuj odpowiedź z obiektu JSON do obiektu PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Wyodrębnij token dostępu z odpowiedzi.

    $AccessToken = $content.access_token
    
  5. Sprawdź, czy wszystko jest poprawnie skonfigurowane. Za pomocą polecenia „Invoke-WebRequest” programu PowerShell wyślij żądanie do punktu końcowego REST usługi Data Lake Store, aby wyświetlić listę folderów w folderze głównym. Ważne jest, aby ciąg "Bearer" w nagłówku Autoryzacja miał literę "B". Nazwę usługi Data Lake Store można znaleźć w sekcji Przegląd usługi Data Lake Store.

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

    Odpowiedź oznaczająca powodzenie wygląda następująco:

    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. Teraz możesz spróbować przekazać plik do usługi Data Lake Store. Najpierw utwórz plik do przekazania.

    echo "Test file." > Test1.txt
    
  7. Za pomocą polecenia Invoke-WebRequest programu PowerShell wyślij żądanie do punktu końcowego REST usługi Data Lake Store, aby przekazać plik do utworzonego wcześniej folderu. To żądanie ma dwa kroki. W pierwszym kroku tworzy się żądanie i uzyskuje przekierowanie do lokalizacji, do której należy przekazać plik. W drugim kroku plik zostaje faktycznie przekazany. Pamiętaj, aby odpowiednio ustawić nazwę folderu i pliku, jeżeli użyto innych wartości niż stosowanych w tym samouczku.

    $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
    

    Jeśli sprawdzisz wartość elementu $HdfsRedirectResponse, powinna ona wyglądać podobnie do następującej odpowiedzi:

    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
    

    Zakończ przekazywanie, wysyłając żądanie do punktu końcowego przekierowania:

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

    Odpowiedź oznaczająca powodzenie wygląda następująco:

    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
    

Za pomocą innych interfejsów API systemu plików usługi Data Lake Store można dołączać dane do plików, pobierać pliki i wykonywać inne operacje.

Wyłącz

Aby wyłączyć tożsamość przypisaną przez system na maszynie wirtualnej, ustaw stan tożsamości przypisanej przez system na wartość Wyłączone.

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

Następne kroki

W tym samouczku przedstawiono sposób użycia przypisanej przez system tożsamości zarządzanej na maszynie wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure Data Lake Store. Aby dowiedzieć się więcej o usłudze Azure Data Lake Store, zobacz: