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

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

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

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

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

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

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

Совет

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

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

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

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

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

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

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

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

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

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

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

  8. Выберите Просмотр и создание.

  9. Нажмите кнопку Создать

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

Затем добавьте секрет в хранилище 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 для доступа к целевым службам. Узнайте больше о пакетах Azure SDK и воспользуйтесь библиотекой Azure.Identity.

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

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

  3. В окне терминала выполните запрос к локальным управляемым удостоверениям для конечной точки ресурсов Azure с помощью cURL, чтобы получить маркер доступа для 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
    

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

    Ответ:

    {"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 или ИНТЕРФЕЙСА командной строки.

Следующие шаги

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