Руководство. Использование назначаемого системой управляемого удостоверения на виртуальной машине Linux для доступа к службе хранилища Azure

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

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

  • Создание учетной записи хранилища
  • создать контейнер больших двоичных объектов в учетной записи хранения;
  • предоставить доступ управляемому удостоверению виртуальной машины Linux к контейнеру службы хранилища Azure.
  • Получение маркера доступа и его использование для вызова службы хранилища Azure

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

Запустить примеры сценариев CLI в этом руководстве можно двумя способами:

Создание учетной записи хранилища

В этом разделе вы создадите учетную запись хранения.

  1. Нажмите кнопку + Создать ресурс в верхнем левом углу окна портала Azure.

  2. Щелкните Хранилище, а затем — Учетная запись хранения — BLOB-объект, файл, таблица, очередь.

  3. В поле Имя введите имя учетной записи хранения.

  4. Для параметра Модель развертывания выберите Resource Manager, а для поля Тип учетной записиХранилище (версия 1, общего назначения).

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

  6. Нажмите кнопку создания.

    Снимок экрана: экран создания новой учетной записи хранения.

Создание контейнера больших двоичных объектов и передача файла в учетную запись хранения

Так как файлам необходимо хранилище BLOB-объектов, нужно создать контейнер больших двоичных объектов, в котором будет храниться файл. Затем файл отправляется в контейнер больших двоичных объектов в новой учетной записи хранения.

  1. Вернитесь к только что созданной учетной записи хранения.

  2. В разделе Служба BLOB-объектов выберите Контейнеры.

  3. Выберите + Контейнер в верхней части страницы.

  4. В разделе Создание контейнера введите имя контейнера, а в разделе Общедоступный уровень доступа оставьте значение по умолчанию.

    Снимок экрана: экран создания контейнера хранилища.

  5. С помощью редактора по своему усмотрению создайте на локальном компьютере файл с именем hello world.txt. Откройте его и добавьте текст (без кавычек) "Hello world! :)", а затем сохраните его.

  6. Передайте файл в только что созданный контейнер. Для этого щелкните имя контейнера, а затем нажмите кнопку Отправить.

  7. В области Отправить 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.

  1. В портал Azure перейдите к Виртуальные машины, перейдите на виртуальную машину Linux, а затем на странице обзора выберите Подключение. Скопируйте строку подключения к виртуальной машине.

  2. Подключитесь к виртуальной машине с помощью выбранного клиента SSH.

  3. В окне терминала с помощью 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
    
  4. Теперь для получения доступа к службе хранилища 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 см. в статье ниже.