Поделиться через


Руководство. Использование виртуальной машины и виртуальной машины Linux для доступа к ресурсам Azure

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

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

Использование назначаемого системой управляемого удостоверения на виртуальной машине Linux для доступа к Azure Data Lake Storage

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

Вы изучите следующие темы:

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

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

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

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

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

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

Получение маркера доступа.

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

Чтобы пройти проверку подлинности в файловой системе Data Lake Store, вы отправляете маркер доступа, выданный идентификатором Microsoft Entra, в конечную точку файловой системы Data Lake Store. Маркер доступа находится в заголовке авторизации в формате Bearer \<ACCESS_TOKEN_VALUE\>. Дополнительные сведения о поддержке Data Lake Store для проверки подлинности Microsoft Entra см. в статье "Проверка подлинности с помощью Data Lake Store с помощью идентификатора Microsoft Entra".

Затем выполните проверку подлинности в REST API для файловой системы Data Lake Store с помощью cURL для выполнения запросов REST.

Примечание.

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

Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь со статьей Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

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

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

  3. В окне терминала с помощью cURL выполните запрос к локальным управляемым удостоверениям Azure для конечной точки ресурсов Azure для получения маркера доступа для файловой системы Data Lake Store. Идентификатор ресурса для Data Lake Store: https://datalake.azure.net/. Очень важно добавить в идентификатор ресурса конечную косую черту.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true   
    

    Успешный ответ содержит маркер доступа, используемый для аутентификации в Data Lake Store.

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. С помощью CURL выполните запрос к конечной точке REST файловой системы Data Lake Store, чтобы вывести список папок в корневой папке. Это лучший способ проверить правильность настройки всего. Скопируйте значение маркера доступа из предыдущего шага. Важно, чтобы строка Bearer в заголовке авторизации содержит заглавную букву B. Имя экземпляра Data Lake Store можно найти в разделе "Обзор" области Data Lake Store в портал Azure.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

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

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. Теперь отправьте файл в экземпляр Data Lake Store. Сначала создайте файл для передачи.

    echo "Test file." > Test1.txt
    
  6. С помощью CURL выполните запрос к конечной точке REST файловой системы Data Lake Store, чтобы передать файл в папку, созданную ранее. Передача подразумевает перенаправление, и CURL выполняет перенаправление автоматически.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

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

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

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

Использование назначаемого системой управляемого удостоверения на виртуальной машине Linux для доступа к службе хранилища 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. Убедитесь, что уровень общедоступного доступа является значением по умолчанию.

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

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

  7. Выберите имя контейнера, а затем отправьте. При этом файл передается в только что созданный контейнер.

  8. В области отправки BLOB-объектов в разделе "Файлы" выберите значок папки и перейдите к файлу hello_world.txt на локальном компьютере.

  9. Выберите файл, а затем нажмите кнопку "Отправить".

    Снимок экрана: раздел

Предоставление виртуальной машине доступа к контейнеру службы хранилища 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. Например, чтобы считывать содержимое примера файла, который вы ранее отправили в контейнер, замените значения , <CONTAINER NAME>а <FILE NAME> также значениями<STORAGE ACCOUNT>, указанными ранее, и <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 с помощью учетных данных SAS

В этом руководстве показано, как использовать управляемое удостоверение, назначаемое системой для виртуальной машины Linux, для получения учетных данных подписанного URL-адреса хранилища (SAS); в частности, учетные данные SAS службы.

Примечание.

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

Подписанный URL-адрес службы предоставляет ограниченный доступ к объектам в учетной записи хранения, не предоставляя ключ доступа к учетной записи. Доступ может быть предоставлен к определенной службе на ограниченный срок. Учетные данные SAS можно использовать как обычно при выполнении операций хранения; например, при использовании пакета SDK службы хранилища. В этом руководстве вы отправите и скачайте большой двоичный объект с помощью служба хранилища Azure CLI.

Вы изучите следующие темы:

  • Создание учетной записи хранилища
  • Создание контейнера
  • предоставлять виртуальной машине доступ к подписанным URL-адресам учетной записи хранения в Resource Manager;
  • получать маркер доступа с помощью удостоверения виртуальной машины и использовать его для извлечения SAS из Resource Manager.

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

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

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

  2. Выберите "Хранилище", а затем появится панель "Создать учетную запись хранения".

  3. Введите имя учетной записи хранения. Помните это имя, так как вам потребуется позже.

  4. Убедитесь, что для модели развертывания задано значение Resource Manager, а тип учетной записи имеет значение "Общего назначения".

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

  6. Нажмите кнопку "Создать ", чтобы завершить создание учетной записи хранения.

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

Создание контейнера

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

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

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

  3. Выберите +Контейнер в верхней части страницы, а затем появится панель нового контейнера .

  4. Присвойте контейнеру имя, выберите уровень доступа, а затем нажмите кнопку ОК. Вам потребуется имя, указанное далее в руководстве.

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

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

служба хранилища Azure изначально поддерживает проверку подлинности Microsoft Entra, чтобы использовать управляемое удостоверение, назначаемое системой виртуальной машины, для получения SAS хранилища из Resource Manager. Затем можно использовать SAS для доступа к хранилищу.

В этом разделе описано, как предоставить управляемому удостоверению, назначенному системой, доступ виртуальной машины к SAS учетной записи хранения. Назначьте роль участника учетной записи хранения управляемому удостоверению в области действия группы ресурсов, где находится ваша учетная запись хранения.

Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

Примечание.

Дополнительные сведения о различных ролях, которые можно использовать для предоставления разрешений на хранение, просмотрите авторизацию доступа к blob-объектам и очередям с помощью идентификатора Microsoft Entra.

Получение маркера доступа с помощью удостоверения виртуальной машины и вызов Azure Resource Manager с его помощью

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

Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей клиента SSH, см. следующие статьи:

После получения клиента SSH выполните следующие действия.

  1. В портал Azure перейдите к Виртуальные машины, а затем перейдите к виртуальной машине Linux.
  2. На странице обзора выберите "Подключиться " в верхней части экрана.
  3. Скопируйте строку подключения к виртуальной машине.
  4. Подключитесь к виртуальной машине c помощью клиента SSH.
  5. Введите пароль, добавленный при создании виртуальной машины Linux. Вы должны без проблем войти в систему.
  6. Используйте cURL для получения маркера доступа для Azure Resource Manager.

Запрос CURL маркера доступа и соответствующий ответ приведены ниже:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    

Примечание.

В предыдущем запросе значение resource параметра должно совпадать с ожидаемым идентификатором Microsoft Entra. Если используется идентификатор ресурса Resource Manager, добавьте косую черту после универсального кода ресурса (URI).

В следующем ответе элемент access_token сокращен для удобства восприятия.

{
  "access_token":"eyJ0eXAiOiJ...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Получение учетных данных SAS из Azure Resource Manager для обращения к хранилищу

Затем используйте CURL для вызова Resource Manager с помощью маркера доступа, полученного в предыдущем разделе. Используйте это для создания учетных данных SAS хранилища. После получения учетных данных SAS можно вызвать операции отправки и скачивания хранилища.

Для этого запроса используйте следующие параметры HTTP-запроса для создания учетных данных SAS:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite.  Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Включите эти параметры в текст запроса POST для учетных данных SAS. Дополнительные сведения о параметрах для создания учетных данных SAS см. в справочнике по выводу SAS службы с использованием REST.

Используйте следующий запрос CURL для получения учетных данных SAS. Не забудьте заменить значения параметров <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> и <EXPIRATION TIME> своими значениями. Замените значение <ACCESS TOKEN> маркером доступа, который вы получили ранее:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Примечание.

Текст в предыдущем URL-адресе учитывает регистр, поэтому убедитесь, что вы используете верхний регистр для групп ресурсов, чтобы отразить его соответствующим образом. Кроме того, важно знать, что это запрос POST, а не ЗАПРОС GET.

Ответ от службы CURL возвращает учетные данные SAS:

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

На виртуальной машине Linux с помощью следующей команды создайте образец файла большого двоичного объекта, чтобы отправить его в контейнер хранилища BLOB-объектов:

echo "This is a test file." > test.txt

Затем выполните проверку подлинности с помощью команды CLI az storage с помощью учетных данных SAS, а затем отправьте файл в контейнер BLOB-объектов. Для выполнения этого шага нужно установить последнюю версию Azure CLI на виртуальной машине, если вы не сделали этого ранее.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Ответ:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Вы также можете скачать файл с помощью Azure CLI и проверки подлинности с помощью учетных данных SAS.

Запрос:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Ответ:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

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

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

Вы изучите следующие темы:

  • предоставлять виртуальной машине доступ к ключам учетной записи хранения в Resource Manager;
  • получать маркер доступа с помощью удостоверения виртуальной машины и использовать его для извлечения ключей доступа к хранилищу из Resource Manager.

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

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

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

  2. Выберите "Хранилище", а затем появится панель "Создать учетную запись хранения".

  3. Введите имя учетной записи хранения. Помните это имя, так как вам потребуется позже.

  4. Убедитесь, что для модели развертывания задано значение Resource Manager, а тип учетной записи имеет значение "Общего назначения".

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

  6. Нажмите кнопку "Создать ", чтобы завершить создание учетной записи хранения.

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

Создание контейнера

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

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

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

  3. Выберите +Контейнер в верхней части страницы, а затем появится панель нового контейнера .

  4. Присвойте контейнеру имя, выберите уровень доступа, а затем нажмите кнопку ОК. Вам потребуется имя, указанное далее в руководстве.

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

Предоставление назначаемому системой управляемому удостоверению виртуальной машины прав на использование ключей доступа для учетных записей хранения

служба хранилища Azure изначально не поддерживает проверку подлинности Microsoft Entra. Вместо этого вы можете использовать назначаемое системой управляемое удостоверение виртуальной машины для получения SAS хранилища из Resource Manager, а затем осуществлять доступ к хранилищу при помощи этого SAS. На этом шаге мы предоставим управляемому удостоверению, назначаемому системой, виртуальной машины доступ к SAS учетной записи хранения. Предоставьте доступ, назначив роль участника учетной записи хранения управляемому удостоверению в области действия группы ресурсов, где находится ваша учетная запись хранения.

Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

Примечание.

Дополнительные сведения о различных ролях, которые можно использовать для предоставления разрешений на хранение, просмотрите авторизацию доступа к blob-объектам и очередям с помощью идентификатора Microsoft Entra.

Получение маркера доступа с помощью удостоверения виртуальной машины и вызов Azure Resource Manager с его помощью

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

Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

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

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

  3. Затем необходимо ввести пароль , добавленный при создании виртуальной машины Linux.

  4. Используйте cURL для получения маркера доступа для Azure Resource Manager.

    Запрос CURL маркера доступа и соответствующий ответ приведены ниже:

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
    

    Примечание.

    В предыдущем запросе значение параметра resource должно совпадать с ожидаемым идентификатором Microsoft Entra. Если используется идентификатор ресурса Resource Manager, добавьте косую черту после универсального кода ресурса (URI). В следующем ответе элемент access_token сокращен для удобства восприятия.

    {
      "access_token": "eyJ0eXAiOiJ...",
      "refresh_token": "",
      "expires_in": "3599",
      "expires_on": "1504130527",
      "not_before": "1504126627",
      "resource": "https://management.azure.com",
      "token_type": "Bearer"
    }
    

Получение ключей учетной записи хранения из Azure Resource Manager для обращения к хранилищу

Теперь мы с помощью CURL обратимся к Resource Manager, используя полученный на предыдущем этапе маркер доступа, и получим ключ доступа к хранилищу. После получения ключа доступа к хранилищу можно вызвать операции отправки или скачивания в хранилище. Не забудьте заменить значения параметров <SUBSCRIPTION ID>, <RESOURCE GROUP> и <STORAGE ACCOUNT NAME> своими значениями. Замените значение <ACCESS TOKEN> маркером доступа, который вы получили ранее:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>" 

Примечание.

Текст в приведенном выше URL-адресе чувствителен к регистру, поэтому используйте строчные и заглавные буквы, как указано в названиях групп ресурсов. Кроме того, убедитесь, что используется запрос POST, а не GET, а также, что вы передали значение для регистрации максимальной длины с помощью параметра -d, который может иметь значение NULL.

В ответе cURL будет содержаться список ключей:

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Создайте образец файла большого двоичного объекта, чтобы отправить его в контейнер хранилища BLOB-объектов. На виртуальной машине Linux это можно сделать с помощью следующей команды.

echo "This is a test file." > test.txt

Теперь выполните аутентификацию с помощью команды CLI az storage, указав в ней ключ доступа к хранилищу. Отправьте файл в контейнер больших двоичных объектов. Для этого шага необходимо установить последнюю версию Azure CLI на виртуальной машине, если вы еще не сделали этого.

az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Ответ:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-12T03:58:56+00:00"
}

Кроме того, можно скачать файл с помощью Azure CLI и выполнить аутентификацию, используя ключ доступа к хранилищу.

Запрос:

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Ответ:

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Использование назначаемого системой управляемого удостоверения на виртуальной машине Linux для доступа к Azure Key Vault

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

Вы изучите следующие темы:

  • предоставлять виртуальной машине доступ к секрету в Key Vault;
  • Получение маркера доступа с помощью удостоверения виртуальной машины и его использование для получения секрета из Key Vault

Создание Хранилища ключей

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

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

В этом разделе показано, как предоставить виртуальной машине доступ к секрету в Key Vault. С помощью управляемых удостоверений для ресурсов Azure код может получить маркеры доступа для проверки подлинности в ресурсах, поддерживающих проверку подлинности Microsoft Entra.

Однако не все службы Azure поддерживают проверку подлинности Microsoft Entra. Чтобы использовать управляемые удостоверения для ресурсов Azure с такими службами, сохраните учетные данные службы в Azure Key Vault и используйте управляемое удостоверение виртуальной машины для доступа к Key Vault и получения учетных данных.

Сначала необходимо создать Key Vault и предоставить управляемому удостоверению, назначаемого системой, управляемому удостоверению виртуальной машины.

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

  2. В верхней части левой панели навигации нажмите кнопку "Создать ресурс".

  3. В поле Поиск в Marketplace введите Key Vault и нажмите клавишу ВВОД.

  4. В списке результатов выберите Key Vault.

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

  6. Укажите имя нового хранилища ключей.

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

  7. Укажите необходимые сведения, чтобы выбрать подписку и группу ресурсов, в которых была создана виртуальная машина, используемая для работы с этим учебником.

  8. Выберите "Просмотр и создание", а затем нажмите кнопку "Создать".

Создание секрета

Затем необходимо добавить секрет в Key Vault, чтобы получить его позже с помощью кода, выполняемого на виртуальной машине. В этом разделе описано, как использовать PowerShell. Но те же понятия применяются к любому коду, выполняемому на этой виртуальной машине.

  1. Вернитесь к только что созданному экземпляру Key Vault.

  2. Выберите "Секреты", а затем нажмите кнопку "Добавить".

  3. Выберите Создать/импортировать.

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

  5. Введите имя и значение для секрета.  Значение может быть любым. 

  6. Оставьте дату активации и дату окончания срока действия ясно, и убедитесь, что включено значение "Да". 

  7. Щелкните Создать, чтобы создать секрет.

    Снимок экрана: создание секрета.

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

Управляемое удостоверение, используемое виртуальной машиной, должно получить доступ к секрету, хранящейся в Key Vault.

  1. Вернитесь к только что созданному экземпляру Key Vault.

  2. Выберите политику доступа в области навигации слева.

  3. Выберите Добавить политику доступа.

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

  4. В разделе "Добавление политики доступа" в разделе "Настройка из шаблона ( необязательно)" выберите "Управление секретами" в раскрывающемся меню.

  5. Выберите "Выбрать субъект", а затем в поле поиска введите имя созданной ранее виртуальной машины.  Выберите виртуальную машину в списке результатов и выберите ее.

  6. Выберите Добавить.

  7. Выберите Сохранить.

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

Для выполнения этих действий вам потребуется клиент SSH.  Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

Внимание

Все пакеты SDK Azure поддерживают библиотеку Azure.Identity, которая упрощает получение маркеров Microsoft Entra для доступа к целевым службам. Дополнительные сведения о пакетах SDK Azure и доступе к библиотеке Azure.Identity.

  1. На портале перейдите к виртуальной машине Linux и в разделе "Обзор" выберите "Подключиться". 
  2. Подключитесь к виртуальной машине с помощью выбранного клиента SSH. 
  3. В окне терминала используйте cURL, чтобы запросить локальные управляемые удостоверения для конечной точки ресурсов Azure, чтобы получить маркер доступа для Azure Key Vault.   Запрос cURL маркера доступа приведен ниже.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"} 

Этот маркер доступа можно использовать для аутентификации в Azure Key Vault.  В следующем запросе cURL показано, как считать секрет из хранилища Key Vault с помощью cURL и REST API для Key Vault.  Вам нужен URL-адрес хранилища ключей, который находится в разделе "Основные сведения" страницы "Обзор" хранилища ключей.  Вам также нужен маркер доступа, полученный при предыдущем вызове. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

Ответ выглядит следующим образом:

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

После получения секрета из Key Vault его можно использовать для проверки подлинности в службе, требующей имени и пароля.

Очистка ресурсов

Когда вы будете готовы к очистке ресурсов, войдите в портал Azure, выберите группы ресурсов, а затем найдите и выберите группу ресурсов, созданную в процессе этого руководства, напримерmi-test. Вы можете использовать команду "Удалить группу ресурсов" или с помощью PowerShell или CLI.

Использование управляемого удостоверения, назначаемого системой виртуальной машины Linux, для доступа к группе ресурсов в диспетчере ресурсов

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

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

Узнайте следующие темы:

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

  2. Перейдите на вкладку "Группы ресурсов".

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

  4. На левой панели выберите элемент управления доступом (IAM).

  5. Нажмите + Добавить и выберите Добавить назначение ролей.

  6. На вкладке "Роль" выберите "Читатель". Эта роль позволяет просматривать все ресурсы, но не позволяет вносить изменения.

  7. На вкладке "Участники" в параметре "Назначить доступ" выберите "Управляемое удостоверение", а затем нажмите кнопку "Выбрать участников".

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

  9. В раскрывающемся списке "Управление удостоверениями " выберите виртуальную машину.

  10. В раскрывающемся списке выберите виртуальную машину, а затем нажмите кнопку "Сохранить".

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

Получение маркера доступа.

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

Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

  1. В портал Azure перейдите к виртуальной машине Linux.
  2. В разделе "Обзор" выберите "Подключиться".
  3. Подключитесь к виртуальной машине с помощью выбранного клиента SSH.
  4. В окне curlтерминала выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure, чтобы получить маркер доступа для Диспетчера ресурсов Azure.   Запрос curl маркера доступа приведен ниже.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Примечание.

Значение resource параметра должно совпадать с ожидаемым идентификатором Microsoft Entra ID. В случае идентификатора ресурса resource manager необходимо включить конечную косую черту в URI.

Ответ включает маркер доступа, необходимый для доступа к диспетчеру ресурсов Azure.

Ответ:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Используйте этот маркер доступа для доступа к диспетчеру ресурсов Azure. Например, чтобы прочитать сведения о группе ресурсов, к которой вы ранее предоставили доступ к этой виртуальной машине. Замените значения <SUBSCRIPTION-ID>, <RESOURCE-GROUP> и <ACCESS-TOKEN> созданными ранее значениями.

Примечание.

URL-адрес учитывает регистр, поэтому убедитесь, что вы используете точный случай, используемый ранее при именовав группе ресурсов, и в верхнем регистре "G".resourceGroup

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Ответ обратно со сведениями о конкретной группе ресурсов:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Использование управляемого удостоверения, назначаемого пользователем виртуальной машины Linux, для доступа к группе ресурсов в Resource Manager

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

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

Вы изучите следующие темы:

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

Создайте управляемое удостоверение, назначаемое пользователем, с помощью команды az identity create. Параметр -g указывает группу ресурсов, в которой создается управляемое удостоверение, назначаемое пользователем, а параметр -n — его имя. Не забудьте заменить значения параметров <RESOURCE GROUP> и <UAMI NAME> собственными:

Внимание

При создании управляемых удостоверений, назначаемых пользователем, имя должно начинаться с буквы или числа, а также может включать сочетание буквенно-цифровых символов, дефисов (-) и символов подчеркивания (_). Для корректной работы назначения для виртуальной машины или масштабируемого набора виртуальных машин имя должно содержать не более 24 символов. Дополнительные сведения см. в разделе Часто задаваемые вопросы и известные проблемы.

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

Ответ содержит подробные сведения о созданном назначаемом пользователем управляемом удостоверении, как в примере ниже. Запишите значение id для назначаемого пользователем управляемого удостоверения, так как оно будет использоваться на следующем шаге.

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Назначение удостоверения виртуальной машине Linux

Клиенты могут использовать назначаемое пользователем управляемое удостоверение для многих ресурсов Azure. Чтобы назначить назначаемое пользователем управляемое удостоверение одной виртуальной машине, используйте следующие команды. Используйте свойство Id, возвращенное на предыдущем шаге, для параметра -IdentityID.

Назначьте назначаемое пользователем управляемое удостоверение виртуальной машине Linux с помощью команды az vm identity assign. Не забудьте заменить значения параметров <RESOURCE GROUP> и <VM NAME> собственными. Используйте свойство id, возвращенное на предыдущем шаге, в качестве значения параметра --identities.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Предоставление доступа к группе ресурсов в Azure Resource Manager

Управляемые удостоверения — это удостоверения, которые код может использовать для запроса маркеров доступа для проверки подлинности в API ресурсов, поддерживающих проверку подлинности Microsoft Entra. В этом руководстве код получит доступ к API Azure Resource Manager.

Чтобы ваш код мог получить доступ к API, необходимо сначала предоставить удостоверению доступ к ресурсу в Azure Resource Manager. В этом случае группа ресурсов, в которой находится виртуальная машина. Обновите <SUBSCRIPTION ID> и <RESOURCE GROUP> значениями, соответствующими вашей среде. Также замените <UAMI PRINCIPALID> свойством principalId, возвращенным командой az identity create при создании назначаемого пользователем управляемого удостоверения:

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

Ответ содержит подробные сведения о созданном назначении роли, подобные следующему примеру.

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

Получение маркера доступа с помощью удостоверения виртуальной машины и вызов Resource Manager с его помощью

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

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

Для выполнения этих действий вам потребуется клиент SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux.

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

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

  3. Подключитесь к виртуальной машине с помощью выбранного клиента SSH. Если вы используете Windows, можно использовать клиент SSH в подсистеме Windows для Linux. Если вам нужна помощь в настройке ключей SSH-клиента, ознакомьтесь с разделом Использование ключей SSH с Windows в Azure или Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

  4. В окне терминала с помощью cURL выполните запрос к конечной точке Службы метаданных экземпляров (IMDS) Azure, чтобы получить маркер доступа для Azure Resource Manager.

    В следующем примере показан запрос CURL для получения маркера доступа. Не забудьте заменить <CLIENT ID> свойством clientId, возвращенным командой az identity create при создании назначаемого пользователем управляемого удостоверения:

    curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
    

    Примечание.

    Значение resource параметра должно совпадать с ожидаемым идентификатором Microsoft Entra ID. Если используется идентификатор ресурса Resource Manager, добавьте косую черту после универсального кода ресурса (URI).

    Ответ включает маркер доступа, необходимый для доступа к Azure Resource Manager.

    Пример ответа:

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Используйте маркер доступа для доступа к Azure Resource Manager и считывает свойства группы ресурсов, к которой вы ранее предоставили доступ к управляемому удостоверению, назначаемому пользователем. Не забудьте заменить <SUBSCRIPTION ID>, <RESOURCE GROUP> значениями, указанными ранее, а <ACCESS TOKEN> — маркером, возвращенным на предыдущем шаге.

    Примечание.

    URL-адрес учитывает регистр, поэтому не забудьте использовать тот же случай, который использовался ранее при именовав группе ресурсов, и в верхнем регистре "G".resourceGroups

    curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    Ответ содержит сведения о конкретной группе ресурсов, как показано в следующем примере:

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

Подробнее