Как управляемые удостоверения для ресурсов Azure работают с виртуальными машинами Azure

Управляемые удостоверения для ресурсов Azure предоставляют службам Azure автоматически управляемое удостоверение, которое хранится в Microsoft Entra ID. Это удостоверение можно использовать для проверки подлинности в любой службе, которая поддерживает аутентификацию Microsoft Entra, без использования учетных данных в коде.

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

Как это работает

На внутреннем уровне управляемые удостоверения — это субъекты-службы особого типа, которые можно использовать только с ресурсами Azure. При удалении управляемого удостоверения соответствующий субъект-служба автоматически удаляется. Кроме того, при создании удостоверения, назначаемого пользователем или системой, для него поставщик ресурсов управляемых удостоверений (MSRP) на внутреннем уровне выдает сертификат.

Код может использовать управляемое удостоверение для запроса маркеров доступа для служб, поддерживающих проверку подлинности Microsoft Entra. Azure выполняет развертывание учетных данных, используемых экземпляром службы.

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

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

В следующей таблице показаны различия между назначаемыми системой и назначаемыми пользователем управляемыми удостоверениями:

Свойство Управляемое удостоверение, назначаемое системой Управляемое удостоверение, назначаемое пользователем
Создание Создано как часть ресурса Azure (например, виртуальная машина Azure или Служба приложений Azure). Создано в качестве автономного ресурса Azure.
Жизненный цикл Жизненный цикл в общем доступе с ресурсом Azure, указанным при создании управляемого удостоверения.
При удалении родительского ресурса управляемое удостоверение также удаляется.
Независимый жизненный цикл.
Должен быть явно удален.
Совместное использование ресурсов Azure Не может использоваться совместно.
Может быть связано только с одним ресурсом Azure.
Может быть в общем доступе.
Одно и то же назначаемое пользователем управляемое удостоверение может быть связано с несколькими ресурсами Azure.
Распространенные варианты использования Рабочие нагрузки, которые содержатся в одном ресурсе Azure.
Рабочие нагрузки, для которых требуются независимые удостоверения.
Например, приложение, выполняющееся на одной виртуальной машине.
Рабочие нагрузки, которые выполняются на нескольких ресурсах и могут совместно использовать одно удостоверение.
Рабочие нагрузки, требующие предварительную авторизацию к защищенному ресурсу, как часть потока подготовки.
Рабочие нагрузки, где ресурсы перезапускаются часто, но разрешения должны быть согласованными.
Например, рабочая нагрузка, где нескольким виртуальным машинам требуется доступ к одному и тому же ресурсу.

Управляемое удостоверение, назначаемое системой

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

  2. Azure Resource Manager создает субъект-службу в идентификаторе Microsoft Entra для удостоверения виртуальной машины. Субъект-служба создается в клиенте Microsoft Entra, доверенном подпиской.

  3. Azure Resource Manager обновляет удостоверение виртуальной машины с помощью конечной точки удостоверения службы метаданных экземпляра Azure (для Windows и Linux), предоставляя конечную точку с идентификатором клиента и сертификатом субъекта-службы.

  4. После того как виртуальной машине было назначено удостоверение, для предоставления доступа виртуальной машины к ресурсам Azure используются сведения о субъекте-службе. Чтобы вызвать Azure Resource Manager, используйте контроль доступа на основе ролей Azure (Azure RBAC), чтобы назначить соответствующую роль субъекту-службе виртуальной машины. Для вызова Key Vault следует предоставить доступ к определенному секрету или ключу в Key Vault.

  5. Код, выполняющийся на виртуальной машине, может запросить маркер из конечной точки службы метаданных экземпляров Azure, доступной только на виртуальной машине: http://169.254.169.254/metadata/identity/oauth2/token

    • Параметр ресурса указывает службу, в которую отправляется маркер. Для проверки подлинности в Azure Resource Manager необходимо использовать resource=https://management.azure.com/.
    • Параметр версии API указывает версию IMDS. Используйте api-version=2018-02-01 или более позднюю версию.

    В следующем примере показано, как использовать CURL для выполнения запроса к локальной конечной точке управляемого удостоверения для получения маркера доступа для службы метаданных экземпляра 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
    
  6. Вызов идентификатора Microsoft Entra для запроса маркера доступа (как указано на шаге 5) с помощью идентификатора клиента и сертификата, настроенного на шаге 3. Идентификатор Microsoft Entra возвращает маркер доступа к веб-маркеру JSON (JWT).

  7. Код отправляет маркер доступа при вызове службы, поддерживающей проверку подлинности Microsoft Entra.

Управляемое удостоверение, назначаемое пользователем

  1. Azure Resource Manager получает запрос на создание назначаемого пользователем управляемого удостоверения.

  2. Azure Resource Manager создает субъект-службу в идентификаторе Microsoft Entra для управляемого удостоверения, назначаемого пользователем. Субъект-служба создается в клиенте Microsoft Entra, доверенном подпиской.

  3. Azure Resource Manager получает запрос на настройку назначаемого пользователем управляемого удостоверения на виртуальной машине и обновляет конечную точку удостоверения Службы метаданных экземпляра Azure, используя назначенный пользователем идентификатор клиента и сертификат субъекта-службы управляемого удостоверения.

  4. Создав назначаемое пользователем управляемое удостоверение, примените сведения о субъекте-службе, чтобы предоставить этому удостоверению доступ к ресурсам Azure. Для вызова Azure Resource Manager используйте Azure RBAC, чтобы назначить соответствующую роль субъекту-службе назначаемого пользователем удостоверения. Для вызова Key Vault следует предоставить доступ к определенному секрету или ключу в Key Vault.

    Примечание.

    Также данное действие можно выполнить перед шагом 3.

  5. Код, выполняющийся на виртуальной машине, может запросить маркер из конечной точки Службы метаданных экземпляров Azure, доступной только на виртуальной машине: http://169.254.169.254/metadata/identity/oauth2/token

    • Параметр ресурса указывает службу, в которую отправляется маркер. Для проверки подлинности в Azure Resource Manager необходимо использовать resource=https://management.azure.com/.

    • Параметр client_id задает удостоверение, для которого запрашивается маркер. Это значение необходимо для устранения неоднозначности, когда на одной виртуальной машине доступны несколько назначаемых пользователем удостоверений. Идентификатор клиента можно найти в обзоре управляемого удостоверения:

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

    • Параметры версии API указывают версию Службы метаданных экземпляров Azure. Используйте api-version=2018-02-01 или более поздней версии.

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

      curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F&client_id=12345678-0000-0000-0000-000000000000' -H Metadata:true
      
  6. Вызов идентификатора Microsoft Entra для запроса маркера доступа (как указано на шаге 5) с помощью идентификатора клиента и сертификата, настроенного на шаге 3. Идентификатор Microsoft Entra возвращает маркер доступа к веб-маркеру JSON (JWT).

  7. Код отправляет маркер доступа при вызове службы, поддерживающей проверку подлинности Microsoft Entra.

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

Чтобы использовать управляемые удостоверения для ресурсов Azure, ознакомьтесь со следующими краткими руководствами: