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


Использование Идентификация рабочей нагрузки Microsoft Entra с Служба Azure Kubernetes (AKS)

Рабочие нагрузки, развернутые в кластере Служба Azure Kubernetes (AKS), требуют учетных данных приложения Microsoft Entra или управляемых удостоверений для доступа к защищенным ресурсам Microsoft Entra, таким как Azure Key Vault и Microsoft Graph. Идентификация рабочей нагрузки Microsoft Entra интегрируется с возможностями, собственными для Kubernetes, для федерации с внешними поставщиками удостоверений.

Идентификация рабочей нагрузки Microsoft Entra использует проекцию тома маркера учетной записи службы (т. е. учетную запись службы), чтобы модули pod могли использовать удостоверение Kubernetes. Токен Kubernetes выдан, а федерация OIDC позволяет приложениям Kubernetes безопасно получать доступ к ресурсам Azure с помощью идентификатора Microsoft Entra, основанного на учетных записях службы с аннотированием.

Идентификация рабочей нагрузки Microsoft Entra работает особенно хорошо с Клиентские библиотеки удостоверений Azure или коллекция библиотеки проверки подлинности Майкрософт (MSAL) вместе с регистрацией приложения. Рабочая нагрузка может использовать любую из этих библиотек, чтобы легко пройти проверку подлинности и получить доступ к облачным ресурсам Azure.

Эта статья поможет вам понять Идентификация рабочей нагрузки Microsoft Entra и просмотреть варианты, доступные для планирования стратегии проекта и потенциальной миграции с управляемого удостоверений Microsoft Entra pod.

Примечание.

Соединитель служб можно использовать для автоматической настройки некоторых шагов. См. также: Что такое соединитель служб?

Зависимости

  • AKS поддерживает Идентификация рабочей нагрузки Microsoft Entra версии 1.22 и выше.
  • Azure CLI версии 2.47.0 или более поздней. Запустите az --version, чтобы определить версию и запустите az upgrade для обновления версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Клиентские библиотеки удостоверений Azure

В клиентских библиотеках удостоверений Azure выберите один из следующих подходов:

  • Используется DefaultAzureCredential, который пытается использовать WorkloadIdentityCredential.
  • Создание экземпляра ChainedTokenCredential , который включает в себя WorkloadIdentityCredential.
  • Используйте WorkloadIdentityCredential напрямую.

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

Экосистема Библиотека Минимальная версия
.NET Azure.Identity 1.9.0
C++ azure-identity-cpp 1.6.0
Go azidentity 1.3.0
Java azure-identity 1.9.0
Node.js @azure/identity 3.2.0
Python azure-identity 1.13.0

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

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

string keyVaultUrl = Environment.GetEnvironmentVariable("KEYVAULT_URL");
string secretName = Environment.GetEnvironmentVariable("SECRET_NAME");

var client = new SecretClient(
    new Uri(keyVaultUrl),
    new DefaultAzureCredential());

KeyVaultSecret secret = await client.GetSecretAsync(secretName);

Библиотека проверки подлинности Майкрософт (MSAL)

Следующие клиентские библиотеки являются минимальной версией.

Экосистема Библиотека Изображения Пример Имеет Windows
.NET Библиотека проверки подлинности Майкрософт для dotnet ghcr.io/azure/azure-workload-identity/msal-net:latest Ссылка Да
Go Библиотека проверки подлинности Майкрософт для использования ghcr.io/azure/azure-workload-identity/msal-go:latest Ссылка Да
Java Библиотека проверки подлинности Майкрософт для java ghcr.io/azure/azure-workload-identity/msal-java:latest Ссылка No
JavaScript Библиотека проверки подлинности Майкрософт для js ghcr.io/azure/azure-workload-identity/msal-node:latest Ссылка No
Python Библиотека проверки подлинности Майкрософт для Python ghcr.io/azure/azure-workload-identity/msal-python:latest Ссылка No

Ограничения

  • Для каждого управляемого удостоверения можно иметь не более 20 федеративных учетных данных.
  • Для распространения учетных данных федеративного удостоверения после первоначального добавления потребуется несколько секунд.
  • Виртуальные узлы, добавленные на основе проекта открытый код Virtual Kubelet, не поддерживаются.
  • Создание учетных данных федеративного удостоверения не поддерживается для управляемых удостоверений, назначаемых пользователем, в этих регионах.

Принцип работы

В этой модели безопасности кластер AKS выступает в качестве издателя маркеров. Идентификатор Microsoft Entra использует OpenID Connect для обнаружения открытых ключей подписывания и проверки подлинности маркера учетной записи службы перед обменом на токен Microsoft Entra. Рабочая нагрузка может обмениваться маркером учетной записи службы, проецируемым на его том, для маркера Microsoft Entra с помощью клиентской библиотеки удостоверений Azure или библиотеки проверки подлинности Майкрософт (MSAL).

Схема модели безопасности удостоверений рабочей нагрузки AKS.

В следующей таблице описаны необходимые конечные точки издателя OIDC для Идентификация рабочей нагрузки Microsoft Entra:

Конечная точка Description
{IssuerURL}/.well-known/openid-configuration Также известен как документ обнаружения OIDC. Это содержит метаданные о конфигурациях издателя.
{IssuerURL}/openid/v1/jwks Это содержит открытые ключи подписывания, которые использует идентификатор Microsoft Entra для проверки подлинности маркера учетной записи службы.

На следующей схеме показана последовательность проверки подлинности с помощью OpenID Connect.

Схема последовательности проверки подлинности удостоверения рабочей нагрузки AKS OIDC.

Автоматическая смена сертификата веб-перехватчика

Аналогично другим надстройкам веб-перехватчика, сертификат поворачивается операцией автоматической смены сертификата кластера.

Метки и заметки учетной записи службы

Идентификация рабочей нагрузки Microsoft Entra поддерживает следующие сопоставления, связанные с учетной записью службы:

  • Один к одному, где учетная запись службы ссылается на объект Microsoft Entra.
  • Многие к одному, где несколько учетных записей служб ссылались на один и тот же объект Microsoft Entra.
  • Один ко многим, где учетная запись службы ссылается на несколько объектов Microsoft Entra путем изменения заметки идентификатора клиента. Дополнительные сведения см. в статье "Как настроить федерацию нескольких удостоверений с учетной записью службы Kubernetes".

Примечание.

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

Если вы использовали управляемое пользователем удостоверение Microsoft Entra pod, то думайте о учетной записи службы как субъекте безопасности Azure, за исключением того, что учетная запись службы является частью основного API Kubernetes, а не пользовательского определения ресурсов (CRD). В следующих разделах описан список доступных меток и заметок, которые можно использовать для настройки поведения при обмене маркером учетной записи службы для маркера доступа Microsoft Entra.

Заметки учетной записи службы

Все заметки являются необязательными. Если заметка не указана, будет использоваться значение по умолчанию.

Номер Description По умолч.
azure.workload.identity/client-id Представляет приложение Microsoft Entra
Идентификатор клиента, используемый с модулем pod.
azure.workload.identity/tenant-id Представляет идентификатор клиента Azure, в котором
Приложение Microsoft Entra зарегистрировано.
извлеченная переменная среды AZURE_TENANT_ID
из azure-wi-webhook-config ConfigMap.
azure.workload.identity/service-account-token-expiration expirationSeconds Представляет поле для поля
проецируемый маркер учетной записи службы. Это необязательное поле, которое вы настраиваете для предотвращения простоя
вызваны ошибками при обновлении маркера учетной записи службы. Срок действия маркера учетной записи службы Kubernetes не связан с токенами Microsoft Entra. Срок действия маркеров Microsoft Entra истекает через 24 часа после их выдачи.
3600
Поддерживаемый диапазон — 3600–86400.

Метки pod

Примечание.

Для приложений, использующих удостоверение рабочей нагрузки, необходимо добавить метку azure.workload.identity/use: "true" в спецификацию pod для AKS для перемещения удостоверения рабочей нагрузки в сценарий fail Close , чтобы обеспечить согласованное и надежное поведение модулей pod, которые должны использовать удостоверение рабочей нагрузки. В противном случае модули pod завершаются сбоем после перезапуска.

Label Description Рекомендуемое значение Обязательное поле
azure.workload.identity/use Эта метка требуется в спецификации шаблона pod. Только модули pod с этой меткой мутируются с помощью удостоверений azure-workload-mutating webhook для внедрения переменных среды Azure и проецируемого тома маркера учетной записи службы. true Да

Заметки pod

Все заметки являются необязательными. Если заметка не указана, будет использоваться значение по умолчанию.

Номер Description По умолч.
azure.workload.identity/service-account-token-expiration expirationSeconds Представляет поле для проецируемого маркера учетной записи службы. Это необязательное поле, которое настраивается для предотвращения простоя, вызванного ошибками при обновлении маркера учетной записи службы. Срок действия маркера учетной записи службы Kubernetes не связан с токенами Microsoft Entra. Срок действия маркеров Microsoft Entra истекает через 24 часа после их выдачи. 1 3600
Поддерживаемый диапазон — 3600–86400.
azure.workload.identity/skip-containers Представляет разделенный точкой с запятой список контейнеров для пропуска добавления проецируемого тома маркера учетной записи службы. Например, container1;container2. По умолчанию том маркера проецируемого маркера учетной записи службы добавляется ко всем контейнерам, если учетная запись службы помечена меткой azure.workload.identity/use: true.
azure.workload.identity/inject-proxy-sidecar Внедряет контейнер инициализацию прокси-сервера и боковую панель прокси-сервера в модуль pod. Прокси-сервер используется для перехвата запросов маркеров в IMDS и получения маркера Microsoft Entra от имени пользователя с федеративными учетными данными удостоверения. true
azure.workload.identity/proxy-sidecar-port Представляет порт прокси-сервера. 8000

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

Переход на Идентификация рабочей нагрузки Microsoft Entra

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

Второй вариант — перезаписать приложение, чтобы использовать последнюю версию клиентской библиотеки удостоверений Azure.

Чтобы упростить процесс миграции и упростить процесс миграции, мы разработали боковик миграции, который преобразует транзакции IMDS, выполняемые приложением, в OpenID Connect (OIDC). Боковой автомобиль миграции не предназначен для долгосрочного решения, но способ быстрого выполнения и быстрого выполнения на удостоверениях рабочей нагрузки. Запуск бокового автомобиля миграции в прокси приложения выполняет транзакции IMDS приложения к OIDC. Альтернативный подход — обновление до поддерживаемой версии клиентской библиотеки удостоверений Azure, которая поддерживает проверку подлинности OIDC.

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

Сценарий Description
Новое или существующее развертывание кластера запускает поддерживаемую версию клиентской библиотеки удостоверений Azure Никаких шагов миграции не требуется.
Пример ресурсов развертывания: развертывание и настройка удостоверения рабочей нагрузки в новом кластере
Новое или существующее развертывание кластера выполняет неподдерживаемую версию клиентской библиотеки удостоверений Azure. Обновите образ контейнера, чтобы использовать поддерживаемую версию пакета SDK для удостоверений Azure или использовать боковику миграции.

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