Руководство. Получение доступа к 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 с его помощью.
Необходимые компоненты
- Основные сведения об управляемых удостоверениях. См. дополнительные сведения об управляемых удостоверениях для ресурсов Azure.
- Учетная запись Azure. Зарегистрируйте бесплатную учетную запись.
- Разрешения роли "Владелец" в соответствующей области (подписка или группа ресурсов) для выполнения требуемых операций создания ресурсов и управления ролями учетной записи. Если нуждаетесь в помощи с назначением ролей, прочитайте статью Назначение ролей Azure с помощью портала Azure.
- Кроме того, вам потребуется виртуальная машина Windows с включенными управляемыми удостоверениями, назначенными системой.
- Если вам нужно создать виртуальную машину для работы с этим руководством, см. раздел Управляемое удостоверение, назначаемое системой.
Enable
Включить управляемое удостоверение, назначаемое системой, можно одним щелчком мыши. Это можно сделать при создании виртуальной машины или в свойствах существующей виртуальной машины.
Чтобы включить управляемое удостоверение, назначаемое системой, для новой виртуальной машины, сделайте следующее:
Войдите на портал Azure
Создайте виртуальную машину с включенным удостоверением, назначенным системой.
Предоставление доступа
Теперь можно предоставить виртуальной машине доступ к файлам и папкам в 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 создайте новую папку и предоставьте ей разрешение для назначаемого системой удостоверения виртуальной машины. Удостоверению требуются права на чтение, запись и выполнение файлов в этой папке:
- На портале Azure щелкните Data Lake Store в области навигации слева.
- Выберите хранилище Data Lake Store, которое следует использовать для этого руководства.
- Щелкните Обозреватель данных на панели ввода команд.
- Выбрана корневая папка Data Lake Store. На панели команд щелкните Доступ.
- Выберите Добавить. В поле Выбор введите имя виртуальной машины, например DevTestVM. Выберите свою виртуальную машину в результатах поиска, а затем щелкните Выбрать.
- Щелкните Выбрать разрешения. Выберите разрешения Чтение и Выполнение и добавьте их в раздел Эта папка, затем добавьте их в качестве разрешений только для доступа. Щелкните ОК. Разрешения должны быть успешно добавлены.
- Закройте колонку Доступ.
- В рамках этого руководства мы создадим папку. Щелкните Создать папку в панели команд и введите имя новой папки, например TestFolder. Щелкните ОК.
- Щелкните созданную папку, а затем щелкните Доступ на панели команд.
- Как и на шаге 5, нажмите кнопку Добавить, в поле Выбор введите имя виртуальной машины, выберите ее и нажмите кнопку Выбрать.
- Как и на шаге 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. Чтобы использовать назначаемое системой управляемое удостоверение виртуальной машины для проверки подлинности, нужно отправлять запросы с виртуальной машины.
На портале перейдите к разделу Виртуальные машины, выберите свою виртуальную машину Windows и в разделе Обзор щелкните Подключить.
Введите имя пользователя и пароль, добавленные при создании виртуальной машины Windows.
Теперь, когда создано подключение к удаленному рабочему столу с виртуальной машиной, откройте PowerShell в удаленном сеансе.
С помощью командлета 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
Убедитесь, что все настроено правильно. С помощью команды 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
Теперь вы можете попробовать передать файл в Data Lake Store. Сначала создайте файл для передачи.
echo "Test file." > Test1.txt
С помощью команды 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
Чтобы отключить назначенное системой удостоверение на виртуальной машине, задайте значение отключено для состояния назначенного системой удостоверения.
Следующие шаги
Из этого руководства вы узнали, как получить доступ к Azure Data Lake Storage с помощью назначаемого системой управляемого удостоверения на виртуальной машине Windows. Дополнительные сведения об Azure Data Lake Store см. здесь: