Руководство. Получение доступа к Azure Data Lake Storage с помощью назначаемого системой управляемого удостоверения на виртуальной машине Windows

Управляемые удостоверения для ресурсов Azure — это функция идентификатора Microsoft Entra. Каждая служба Azure, которая поддерживает управляемые удостоверения для ресурсов Azure, используется в соответствии с собственной временной шкалой. Прежде чем начать работу, обязательно проверьте состояние доступности управляемых удостоверений для своего ресурса и ознакомьтесь с известными проблемами.

В этом руководстве описано, как получить доступ к Azure Data Lake Storage с помощью назначаемого системой управляемого удостоверения на виртуальной машине Windows. Управляемые удостоверения автоматически управляются платформой Azure. Они позволяют приложению проходить проверку подлинности в службах, поддерживающих проверку подлинности Microsoft Entra, без необходимости вставлять учетные данные в код.

В этой статье раскрываются следующие темы:

  • Предоставление виртуальной машине доступа к Azure Data Lake Store.
  • Получение маркера доступа с использованием удостоверения виртуальной машины и получение доступа к Azure Data Lake Store с его помощью.

Необходимые компоненты

Enable

Включить управляемое удостоверение, назначаемое системой, можно одним щелчком мыши. Это можно сделать при создании виртуальной машины или в свойствах существующей виртуальной машины.

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

Чтобы включить управляемое удостоверение, назначаемое системой, для новой виртуальной машины, сделайте следующее:

  1. Войдите на портал Azure

  2. Создайте виртуальную машину с включенным удостоверением, назначенным системой.

Предоставление доступа

Теперь можно предоставить виртуальной машине доступ к файлам и папкам в Azure Data Lake Store. Для выполнения этого шага можно использовать имеющееся хранилище Azure Data Lake Store или создать новое. Чтобы создать новое хранилище Data Lake Store с помощью портала Azure, следуйте этому краткому руководству по Azure Data Lake Store. В документации по Azure Data Lake Store также есть краткие руководства, описывающие использование Azure CLI и Azure PowerShell.

В Azure Data Lake Store создайте новую папку и предоставьте ей разрешение для назначаемого системой удостоверения виртуальной машины. Удостоверению требуются права на чтение, запись и выполнение файлов в этой папке:

  1. На портале Azure щелкните Data Lake Store в области навигации слева.
  2. Выберите хранилище Data Lake Store, которое следует использовать для этого руководства.
  3. Щелкните Обозреватель данных на панели ввода команд.
  4. Выбрана корневая папка Data Lake Store. На панели команд щелкните Доступ.
  5. Выберите Добавить. В поле Выбор введите имя виртуальной машины, например DevTestVM. Выберите свою виртуальную машину в результатах поиска, а затем щелкните Выбрать.
  6. Щелкните Выбрать разрешения. Выберите разрешения Чтение и Выполнение и добавьте их в раздел Эта папка, затем добавьте их в качестве разрешений только для доступа. Щелкните ОК. Разрешения должны быть успешно добавлены.
  7. Закройте колонку Доступ.
  8. В рамках этого руководства мы создадим папку. Щелкните Создать папку в панели команд и введите имя новой папки, например TestFolder. Щелкните ОК.
  9. Щелкните созданную папку, а затем щелкните Доступ на панели команд.
  10. Как и на шаге 5, нажмите кнопку Добавить, в поле Выбор введите имя виртуальной машины, выберите ее и нажмите кнопку Выбрать.
  11. Как и на шаге 6, щелкните Выбор разрешений, выберите разрешения Чтение, Запись и Выполнение, добавьте их в раздел Эта папка, после чего добавьте их в качестве записи разрешения доступа и записи разрешений по умолчанию. Щелкните ОК. Разрешения должны быть успешно добавлены.

Теперь назначаемое системой управляемое удостоверение виртуальной машины сможет выполнять все операции с файлами в созданной папке. Дополнительные сведения об управлении доступом к Data Lake Store см. в статье Контроль доступа в Azure Data Lake Store.

Доступ к данным

Azure Data Lake Store изначально поддерживает проверку подлинности Microsoft Entra, поэтому он может напрямую принимать маркеры доступа, полученные с помощью управляемых удостоверений для ресурсов Azure. Чтобы пройти проверку подлинности в файловой системе Data Lake Store, вы отправляете маркер доступа, выданный идентификатором Microsoft Entra, в конечную точку файловой системы Data Lake Store в заголовке авторизации. в формате "Bearer <ЗНАЧЕНИЕ_МАРКЕРА_ДОСТУПА>". Чтобы узнать больше о поддержке Data Lake Store для проверки подлинности Microsoft Entra, ознакомьтесь с проверкой подлинности с помощью Data Lake Store с помощью идентификатора Microsoft Entra

Примечание.

Клиентские пакеты SDK файловой системы Data Lake Storage пока не поддерживают управляемые удостоверения для ресурсов Azure. Это руководство будет обновлено, как только поддержка будет добавлена в пакет SDK.

В этом руководстве выполняется аутентификация в файловой системе Data Lake Store посредством REST API с использованием PowerShell для выполнения запросов REST. Чтобы использовать назначаемое системой управляемое удостоверение виртуальной машины для проверки подлинности, нужно отправлять запросы с виртуальной машины.

  1. На портале перейдите к разделу Виртуальные машины, выберите свою виртуальную машину Windows и в разделе Обзор щелкните Подключить.

  2. Введите имя пользователя и пароль, добавленные при создании виртуальной машины Windows.

  3. Теперь, когда создано подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.

  4. С помощью командлета PowerShell Invoke-WebRequest выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure, чтобы получить маркер доступа к Azure Data Lake Storage. Идентификатор ресурса для Data Lake Store: https://datalake.azure.net/. Data Lake проводит точное сопоставление с идентификатором ресурса, и косая черта в конце важна.

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

    Преобразуйте ответ из объекта JSON в объект PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Извлеките маркер доступа из ответа.

    $AccessToken = $content.access_token
    
  5. Убедитесь, что все настроено правильно. С помощью команды PowerShell Invoke-WebRequest выполните запрос к конечной точке REST Data Lake Store, чтобы вывести список папок в корневой папке. Очень важно, чтобы слово Bearer в заголовке авторизации начиналось с заглавной буквы B. Имя хранилища Data Lake Store можно найти в разделе Обзор области Data Lake Store на портале Azure.

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

    Успешный ответ выглядит следующим образом.

    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. Теперь вы можете попробовать передать файл в Data Lake Store. Сначала создайте файл для передачи.

    echo "Test file." > Test1.txt
    
  7. С помощью команды PowerShell Invoke-WebRequest выполните запрос к конечной точке REST Data Lake Store, чтобы передать файл в папку, созданную ранее. Этот запрос выполняется в два этапа. На первом этапе вы создаете запрос и получаете адрес перенаправления для передачи файла. На втором этапе вы фактически передаете файл. Не забудьте задать имена папки и файла соответствующим образом, если вы использовали значения, отличные от приведенных в этом руководстве.

    $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
    

    Если проверить значение ответа $HdfsRedirectResponse, оно должно иметь следующий вид.

    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
    

    Выполните передачу, отправив запрос к конечной точке перенаправления.

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

    Успешный ответ выглядит следующим образом.

    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
    

С помощью других интерфейсов API файловой системы Data Lake Store можно добавлять содержимое к файлам, скачивать файлы и многое другое.

Disable

Чтобы отключить назначенное системой удостоверение на виртуальной машине, задайте значение отключено для состояния назначенного системой удостоверения.

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

Следующие шаги

Из этого руководства вы узнали, как получить доступ к Azure Data Lake Storage с помощью назначаемого системой управляемого удостоверения на виртуальной машине Windows. Дополнительные сведения об Azure Data Lake Store см. здесь: