Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Рабочие нагрузки, развернутые в кластере AKS, требуют учетных данных приложения Microsoft Entra или управляемых удостоверений для доступа к защищенным ресурсам Microsoft Entra, таким как Azure Key Vault и Microsoft Graph. Microsoft Entra Workload ID интегрируется с возможностями, собственными для Kubernetes, для федерации с внешними поставщиками удостоверений, что позволяет назначать идентификаторы рабочим нагрузкам для проверки подлинности и доступа к другим службам и ресурсам.
Идентификатор рабочей нагрузки Microsoft Entra использует проекцию тома токена учетной записи службы (или учетную запись службы), чтобы pod могли использовать идентификацию Kubernetes. Токен Kubernetes выдан и федерация OpenID Connect (OIDC) позволяет приложениям Kubernetes безопасно получать доступ к ресурсам Azure с помощью идентификатора Microsoft Entra, основанного на учетных записях службы с аннотированием.
Можно использовать идентификатор рабочей нагрузки Microsoft Entra с клиентскими библиотеками удостоверений Azure или коллекцией Библиотеки проверки подлинности Microsoft (MSAL) и регистрацией приложения, чтобы легко пройти проверку подлинности и получить доступ к облачным ресурсам Azure.
Примечание.
Вы можете использовать Соединитель служб, чтобы помочь вам автоматически настроить некоторые шаги. Дополнительные сведения см. в разделе "Что такое соединитель службы"?
Предпосылки
- AKS поддерживает Workload ID Microsoft Entra на версии 1.22 и выше.
- Azure CLI версии 2.47.0 или более поздней. Запустите
az --version, чтобы определить версию и запуститеaz upgradeдля обновления версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Ограничения
- Для каждого управляемого удостоверения можно иметь не более 20 федеративных учетных данных.
- Для распространения учетных данных федеративного удостоверения после их первоначального добавления требуется несколько секунд.
- Надстройка "виртуальных узлов", основанная на проекте с открытым исходным кодом "Virtual Kubelet", не поддерживается.
- Создание учетных данных федеративного удостоверения не поддерживается для управляемых удостоверений, назначаемых пользователем, в этих регионах.
Клиентские библиотеки идентификации Azure
В клиентских библиотеках удостоверений Azure выберите один из следующих подходов:
- Используйте
DefaultAzureCredential, который пытается использоватьWorkloadIdentityCredential. - Создайте экземпляр
ChainedTokenCredential, который включает в себяWorkloadIdentityCredential. - Используйте
WorkloadIdentityCredentialнапрямую.
В следующей таблице приведена минимальная версия пакета, необходимая для каждой клиентской библиотеки экосистемы языков:
| Экосистема | Библиотека | Минимальная версия |
|---|---|---|
| .NET | Azure.Identity | 1.9.0 |
| C++ | azure-identity-cpp | 1.6.0 |
| Иди | azidentity | 1.3.0 |
| Java | azure-identity | 1.9.0 |
| Node.js | @azure/identity | 3.2.0 |
| Python | azure-identity | 1.13.0 |
Примеры кода клиентской библиотеки удостоверений Azure
В следующих примерах кода используется DefaultAzureCredential. Этот тип учетных данных использует переменные среды, инъектированные мутацией удостоверения рабочей нагрузки вебхук, для проверки подлинности в Azure Key Vault. Чтобы просмотреть примеры с помощью одного из других подходов, обратитесь к клиентским библиотекам, зависящим от экосистемы.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
string keyVaultUrl = Environment.GetEnvironmentVariable("<key-vault-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 |
Ссылка | Да |
| Иди | Библиотека аутентификации Microsoft для Go | ghcr.io/azure/azure-workload-identity/msal-go:latest |
Ссылка | Да |
| Java | Библиотека проверки подлинности Майкрософт для java | ghcr.io/azure/azure-workload-identity/msal-java:latest |
Ссылка | Нет |
| JavaScript | Библиотека проверки подлинности Майкрософт для js | ghcr.io/azure/azure-workload-identity/msal-node:latest |
Ссылка | Нет |
| Python | Библиотека проверки подлинности Майкрософт для Python | ghcr.io/azure/azure-workload-identity/msal-python:latest |
Ссылка | Нет |
Принцип работы
В этой модели безопасности кластер AKS выступает в качестве издателя маркеров. Microsoft Entra ID использует OIDC для обнаружения открытых ключей подписания и проверки подлинности токена учетной записи службы перед обменом его на токен Microsoft Entra. Рабочая нагрузка может обменять токен учетной записи службы, встроенный в его том, на токен Microsoft Entra с помощью библиотеки Azure Identity или MSAL.
В следующей таблице описаны необходимые конечные точки издателя OIDC для идентификатора рабочей нагрузки Microsoft Entra.
| Конечная точка | Описание |
|---|---|
{IssuerURL}/.well-known/openid-configuration |
Также известен как документ обнаружения OIDC. Эта запись содержит метаданные о конфигурациях эмитента. |
{IssuerURL}/openid/v1/jwks |
Здесь содержатся открытые ключи подписывания, которые Microsoft Entra ID использует для проверки подлинности токена учетной записи службы. |
На следующей схеме показана последовательность проверки подлинности с помощью OIDC:
Автоматическая смена сертификата веб-перехватчика
Аналогично другим надстройкам веб-перехватчика, операция автоматического обновления сертификата кластера обновляет сертификат.
Метки и аннотации учетной записи службы
Microsoft Entra Workload ID поддерживает следующие сопоставления, связанные с сервисной учетной записью:
- Один к одному, где учетная запись службы ссылается на объект Microsoft Entra.
- Многие-к-одному, где несколько учетных записей служб ссылаются на один и тот же объект Microsoft Entra.
- Один ко многим, где учетная запись службы ссылается на несколько объектов Microsoft Entra путем изменения аннотации идентификатора клиента. Дополнительные сведения см. в статье "Как объединить несколько удостоверений с учетной записью Kubernetes".
Примечание.
При обновлении заметок учетной записи службы необходимо перезапустить pod, чтобы изменения вступили в силу.
Если вы использовали управляемое пользователем удостоверение Microsoft Entra pod, то думайте о учетной записи службы как субъекте безопасности Azure, за исключением того, что учетная запись службы является частью основного API Kubernetes, а не пользовательского определения ресурсов (CRD). В следующих разделах описывается список доступных меток и аннотаций, которые можно использовать для настройки поведения при обмене токена учетной записи службы на токен доступа Microsoft Entra.
Аннотации учетной записи службы
Все заметки являются необязательными. Если заметка не указана, используется значение по умолчанию.
| Аннотация | Описание | По умолчанию |
|---|---|---|
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
Примечание.
Для приложений, использующих идентификатор рабочей нагрузки Microsoft Entra, необходимо добавить метку azure.workload.identity/use: "true" в спецификацию pod для AKS, чтобы переместить идентификацию рабочей нагрузки в сценарий Fail Close, обеспечивая согласованное и надежное поведение подов, которые должны использовать идентификацию рабочей нагрузки. В противном случае модули pod завершаются сбоем после перезапуска.
| Метка | Описание | Рекомендуемое значение | Обязательное поле |
|---|---|---|---|
azure.workload.identity/use |
Эта метка требуется в спецификации шаблона пода. Только поды с этой меткой мутируются с помощью мутационного admission webhook azure-workload-identity для инъекции специфичных для Azure переменных окружения и проецируемого тома токена учетной записи службы. | истинно | Да |
Аннотации pod
Все заметки являются необязательными. Если заметка не указана, используется значение по умолчанию.
| Аннотация | Описание | По умолчанию |
|---|---|---|
azure.workload.identity/service-account-token-expiration |
Дополнительные сведения см. в аннотациях учетной записи службы . Аннотации Pod имеют приоритет над аннотациями учетной записи службы. | 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 от имени пользователя с федеративными учетными данными удостоверения. | неправда |
azure.workload.identity/proxy-sidecar-port |
Представляет порт сайдкара прокси-сервера. | 8000 |
Переход на Microsoft Entra Workload ID
Кластеры, уже работающие с управляемой идентификацией Pod, можно настроить для использования Microsoft Entra Workload ID одним из двух способов:
- Используйте ту же конфигурацию, что и для pod-управляемой идентичности. Учетной записи службы в пространстве имен можно добавить аннотацию с идентификатором для включения Microsoft Entra Workload ID и внедрения аннотаций в поды.
- Перепишите ваше приложение, чтобы использовать последнюю версию клиентской библиотеки идентификации Azure.
Чтобы упростить процесс миграции, мы разработали вспомогательный модуль миграции, который преобразует транзакции службы метаданных экземпляров (IMDS), выполняемые вашим приложением, в OIDC. Сайдкар миграции не предназначен для долгосрочных решений, а служит способом быстрого запуска с использованием Microsoft Entra Workload ID. Запуск бокового автомобиля миграции в прокси приложения выполняет транзакции IMDS приложения к OIDC. Альтернативный подход — обновление до поддерживаемой версии клиентской библиотеки удостоверений Azure, которая поддерживает проверку подлинности OIDC.
В следующей таблице приведены рекомендации по миграции или развертыванию для кластера AKS:
| Сценарий | Описание |
|---|---|
| Новое или существующее развертывание кластера запускает поддерживаемую версию клиентской библиотеки удостоверений Azure | Никаких шагов миграции не требуется. Примеры ресурсов развертывания: развертывание и настройка идентификатора рабочей нагрузки Microsoft Entra в новом кластере |
| Новое или существующее развертывание кластера выполняет неподдерживаемую версию клиентской библиотеки идентификационных данных Azure. | Обновите образ контейнера, чтобы использовать поддерживаемую версию пакета SDK для удостоверений Azure или использовать боковику миграции. |
Следующие шаги
- Сведения о настройке модуля pod для проверки подлинности с помощью удостоверения рабочей нагрузки в качестве параметра миграции см. в статье "Модернизация проверки подлинности приложения с помощью идентификатора рабочей нагрузки Microsoft Entra".
- См. раздел "Развертывание и настройка кластера AKS с помощью идентификатора рабочей нагрузки Microsoft Entra", который помогает развернуть кластер и настроить пример приложения для использования идентификатора рабочей нагрузки.