Руководство. Использование назначаемого системой управляемого удостоверения на виртуальной машине Linux для доступа к службе хранилища Azure
Управляемые удостоверения для ресурсов Azure — это функция идентификатора Microsoft Entra. Каждая служба Azure, которая поддерживает управляемые удостоверения для ресурсов Azure, используется в соответствии с собственной временной шкалой. Прежде чем начать работу, обязательно проверьте состояние доступности управляемых удостоверений для своего ресурса и ознакомьтесь с известными проблемами.
В этом руководстве описывается, как получить доступ к службе хранилища Azure с помощью назначаемого системой управляемого удостоверения для виртуальной машины Linux. Узнайте следующие темы:
- Создание учетной записи хранилища
- создать контейнер больших двоичных объектов в учетной записи хранения;
- предоставить доступ управляемому удостоверению виртуальной машины Linux к контейнеру службы хранилища Azure.
- Получение маркера доступа и его использование для вызова службы хранилища Azure
Необходимые компоненты
- См. дополнительные сведения об управляемых удостоверениях для ресурсов Azure.
- Если у вас нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи, прежде чем продолжить.
- Для выполнения требуемых операций создания ресурсов и управления ролями учетной записи нужно предоставить разрешения роли "Владелец" в соответствующей области (подписка или группа ресурсов). Если нуждаетесь в помощи с назначением ролей, прочитайте статью Назначение ролей Azure с помощью портала Azure.
Запустить примеры сценариев CLI в этом руководстве можно двумя способами:
- Использовать службу Azure Cloud Shell на портале Azure или с помощью кнопки Попробовать, расположенной в правом верхнем углу каждого блока кода.
- Установить последнюю версию интерфейса командной строки (CLI) 2.0 (2.0.23 или более позднюю версию), если вы предпочитаете использовать локальную консоль CLI.
Создание учетной записи хранилища
В этом разделе вы создадите учетную запись хранения.
Нажмите кнопку + Создать ресурс в верхнем левом углу окна портала Azure.
Щелкните Хранилище, а затем — Учетная запись хранения — BLOB-объект, файл, таблица, очередь.
В поле Имя введите имя учетной записи хранения.
Для параметра Модель развертывания выберите Resource Manager, а для поля Тип учетной записи — Хранилище (версия 1, общего назначения).
Убедитесь, что значения подписки и группы ресурсов соответствуют указанным при создании виртуальной машины на предыдущем шаге.
Нажмите кнопку создания.
Создание контейнера больших двоичных объектов и передача файла в учетную запись хранения
Так как файлам необходимо хранилище BLOB-объектов, нужно создать контейнер больших двоичных объектов, в котором будет храниться файл. Затем файл отправляется в контейнер больших двоичных объектов в новой учетной записи хранения.
Вернитесь к только что созданной учетной записи хранения.
В разделе Служба BLOB-объектов выберите Контейнеры.
Выберите + Контейнер в верхней части страницы.
В разделе Создание контейнера введите имя контейнера, а в разделе Общедоступный уровень доступа оставьте значение по умолчанию.
С помощью редактора по своему усмотрению создайте на локальном компьютере файл с именем hello world.txt. Откройте его и добавьте текст (без кавычек) "Hello world! :)", а затем сохраните его.
Передайте файл в только что созданный контейнер. Для этого щелкните имя контейнера, а затем нажмите кнопку Отправить.
В области Отправить BLOB-объект под полем Файлы щелкните значок папки и перейдите к файлу hello_world.txt на локальном компьютере, выберите этот файл и нажмите кнопку Отправить.
Предоставление виртуальной машине доступа к контейнеру службы хранилища Azure
Вы можете использовать управляемое удостоверение виртуальной машины для извлечения данных в большом двоичном объекте службы хранилища Azure. Управляемые удостоверения для ресурсов Azure можно использовать для проверки подлинности в ресурсах, поддерживающих проверку подлинности Microsoft Entra. Предоставьте доступ, назначив роль storage-blob-data-reader управляемому удостоверению в области действия группы ресурсов, где находится ваша учетная запись хранения.
Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Примечание.
Дополнительные сведения о различных ролях, которые можно использовать для предоставления разрешений на хранение для проверки авторизации доступа к большим двоичным объектам и очередям с помощью идентификатора Microsoft Entra
Получение маркера доступа и его использование для вызова службы хранилища Azure
служба хранилища Azure изначально поддерживает проверку подлинности Microsoft Entra, поэтому он может напрямую принимать маркеры доступа, полученные с помощью управляемого удостоверения. Это часть интеграции служба хранилища Azure с идентификатором Microsoft Entra ID и отличается от предоставления учетных данных в строка подключения.
Чтобы выполнить следующие шаги, вам нужно работать с созданной ранее виртуальной машиной, и вам нужен клиент SSH для подключения к ней. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.
В портал Azure перейдите к Виртуальные машины, перейдите на виртуальную машину Linux, а затем на странице обзора выберите Подключение. Скопируйте строку подключения к виртуальной машине.
Подключитесь к виртуальной машине с помощью выбранного клиента SSH.
В окне терминала с помощью cURL выполните запрос к локальной конечной точке MSI, чтобы получить маркер доступа для службы хранилища Azure.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
Теперь для получения доступа к службе хранилища Azure используйте маркер доступа, например, чтобы прочитать содержимое примера файла, предварительно отправленного в контейнер. Замените значения
<STORAGE ACCOUNT>
,<CONTAINER NAME>
и<FILE NAME>
значениями, указанными ранее, а<ACCESS TOKEN>
— маркером, возвращенным на предыдущем шаге.curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
В ответе содержится содержимое файла:
Hello world! :)
Кроме того, можно сохранить маркер в переменной и передать его второй команде, как показано ниже.
# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')
# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
-H "x-ms-version: 2017-11-09" \
-H "Authorization: Bearer $access_token"
Следующие шаги
Из этого руководства вы узнали, как включить назначаемое системой управляемое удостоверение на виртуальной машине Linux для доступа к хранилищу Azure. Дополнительные сведения о службе хранилища Azure см. в статье ниже.