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

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

В этом руководстве показано, как получить доступ к API Azure Resource Manager с помощью виртуальной машины Windows с включенным управляемым удостоверением, назначаемым системой. Управляемыми удостоверениями для ресурсов Azure автоматически управляет Azure. Они позволяют проходить проверку подлинности в службах, поддерживающих аутентификацию Azure Active Directory, без указания учетных данных в коде. Вы узнаете, как выполнять следующие задачи:

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

Предварительные требования

Предоставление виртуальной машине доступа к группе ресурсов в Resource Manager

С помощью управляемых удостоверений для ресурсов Azure код может получить маркеры доступа, чтобы пройти проверку подлинности и получить доступ к ресурсам, поддерживающим проверку подлинности Azure AD. Azure Resource Manager поддерживает проверку подлинности Azure AD. Нам необходимо предоставить этому назначаемому системой удостоверению виртуальной машины доступ к ресурсу в Resource Manager, в этом случае — к группе ресурсов, в которой создана виртуальная машина. Назначьте роль читателя управляемому удостоверению в области группы ресурсов, созданной для виртуальной машины Windows.

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

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

На этом этапе понадобится использовать PowerShell. Если среда PowerShell не установлена, загрузите ее отсюда.

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

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

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

  4. С помощью командлета Invoke-WebRequest выполните запрос к локальной конечной точке управляемых удостоверений для ресурсов Azure, чтобы получить маркер доступа к Azure Resource Manager.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    

    Примечание

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

    Затем извлеките полный ответ, который хранится в виде форматированной строки JSON в объекте $response.

    $content = $response.Content | ConvertFrom-Json
    

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

    $ArmToken = $content.access_token
    

    Теперь вызовите Azure Resource Manager с использованием маркера доступа. В этом примере также используется командлет Invoke-WebRequest для вызова Azure Resource Manager и включения маркер доступа в заголовок авторизации.

    (Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{ Authorization ="Bearer $ArmToken"}).content
    

    Примечание

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

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

    {"id":"/subscriptions/98f51385-2edc-4b79-bed9-7718de4cb861/resourceGroups/DevTest","name":"DevTest","location":"westus","properties":{"provisioningState":"Succeeded"}}
    

Дальнейшие действия

Из этого краткого руководства вы узнали, как использовать назначаемое системой управляемое удостоверение для доступа к API Azure Resource Manager. Сведения об Azure Resource Manager см. здесь: