Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Рабочие нагрузки, развернутые в кластере Служба Azure Kubernetes (AKS), требуют учетных данных приложения Microsoft Entra или управляемых удостоверений для доступа к защищенным ресурсам Microsoft Entra, таким как Azure Key Vault и Microsoft Graph. Идентификация рабочей нагрузки Microsoft Entra интегрируется с возможностями, собственными для Kubernetes, для федерации с внешними поставщиками удостоверений.
Идентификатор рабочей нагрузки Microsoft Entra использует проекцию тома токена учетной записи службы (т. е. учетную запись службы), чтобы поды могли использовать удостоверение Kubernetes. Токен Kubernetes выдан, и федерация OIDC позволяет приложениям Kubernetes безопасно получать доступ к ресурсам Azure с помощью идентификатора Microsoft Entra ID, при этом доступ основан на аннотированных учетных записях службы.
Идентификатор рабочей нагрузки Microsoft Entra работает особенно хорошо с клиентскими библиотеками Identify Azure или с коллекцией библиотек проверки подлинности Microsoft (MSAL), вместе с регистрацией приложений. Рабочая нагрузка может использовать любую из этих библиотек, чтобы легко пройти проверку подлинности и получить доступ к облачным ресурсам Azure.
Эта статья поможет вам понять идентификатор рабочей нагрузки Microsoft Entra, а также рассмотрение вариантов, доступных для планирования стратегии проекта и потенциальной миграции с удостоверения, управляемого pod в Microsoft Entra.
Примечание.
Вы можете использовать Соединитель служб, чтобы помочь вам автоматически настроить некоторые шаги. См. также: Что такое соединитель служб?
Зависимости
- AKS поддерживает Workload ID 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 |
Иди | azidentity | 1.3.0 |
Java | azure-identity | 1.9.0 |
Node.js | @azure/identity | 3.2.0 |
Python | azure-identity | 1.13.0 |
В следующих примерах DefaultAzureCredential
кода используется. Этот тип учетных данных использует переменные среды, вводимые изменяющим webhook Azure Workload Identity, для аутентификации в 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 |
Ссылка | Да |
Иди | Библиотека аутентификации 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 |
Ссылка | Нет |
Ограничения
- Для каждого управляемого удостоверения можно иметь не более 20 федеративных учетных данных.
- Для распространения учетных данных федеративного удостоверения после первоначального добавления потребуется несколько секунд.
- Виртуальные узлы, добавленные на основе проекта открытый код Virtual Kubelet, не поддерживаются.
- Создание учетных данных федеративного удостоверения не поддерживается для управляемых удостоверений, назначаемых пользователем, в этих регионах.
Принцип работы
В этой модели безопасности кластер AKS выступает в качестве издателя маркеров. Идентификатор Microsoft Entra использует OpenID Connect для обнаружения открытых ключей подписывания и проверки подлинности токена учетной записи службы перед обменом его на токен Microsoft Entra. Рабочая нагрузка может обменять токен служебной учётной записи, проецируемый на его объём, на токен Microsoft Entra с помощью клиентской библиотеки Microsoft Identity или библиотеки аутентификации Microsoft (MSAL).
В следующей таблице описаны необходимые конечные точки издателя OIDC для идентификатора рабочей нагрузки Microsoft Entra.
Конечная точка | Описание |
---|---|
{IssuerURL}/.well-known/openid-configuration |
Также известен как документ обнаружения OIDC. Эта запись содержит метаданные о конфигурациях эмитента. |
{IssuerURL}/openid/v1/jwks |
Здесь содержатся открытые ключи подписывания, которые Microsoft Entra ID использует для проверки подлинности токена учетной записи службы. |
На следующей схеме показана последовательность проверки подлинности с помощью OpenID Connect.
Автоматическая смена сертификата вебхука
Аналогично другим надстройкам вебхуков, сертификат обновляется операцией автоматической смены сертификата в кластере.
Метки и аннотации учетной записи службы
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
Примечание.
Для приложений, использующих удостоверение рабочей нагрузки, необходимо добавить метку azure.workload.identity/use: "true"
в спецификацию pod для AKS, чтобы перевести удостоверение рабочей нагрузки в сценарий fail close и обеспечить согласованное и надежное поведение модулей pod, которым требуется использовать удостоверение рабочей нагрузки. В противном случае pod'ы выходят из строя после перезапуска.
Метка | Описание | Рекомендуемое значение | Обязательное поле |
---|---|---|---|
azure.workload.identity/use |
Эта метка требуется в спецификации шаблона пода. Только поды с этой меткой мутируются с помощью мутационного admission webhook azure-workload-identity для инъекции специфичных для Azure переменных окружения и проецируемого тома токена учетной записи службы. | истинно | Да |
Аннотации pod
Все заметки являются необязательными. Если заметка не указана, будет использоваться значение по умолчанию.
Номер | Описание | По умолчанию |
---|---|---|
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 от имени пользователя с федеративными учетными данными удостоверения. | истинно |
azure.workload.identity/proxy-sidecar-port |
Представляет порт сайдкара прокси-сервера. | 8000 |
1 Имеет приоритет, если учетная запись службы также аннотирована.
Как перейти на Microsoft Entra Workload ID
В кластере, который уже работает с управляемым модулем pod, его можно настроить для использования удостоверения рабочей нагрузки одним из двух способов. Первый вариант позволяет использовать ту же конфигурацию, которую вы реализовали для управляемого pod удостоверения. Учетной записи службы в пространстве имен можно добавить аннотацию с идентификатором для включения Microsoft Entra Workload ID и внедрения аннотаций в поды.
Второй вариант — перезаписать приложение, чтобы использовать последнюю версию клиентской библиотеки удостоверений Azure.
Чтобы упростить процесс миграции и упростить процесс миграции, мы разработали боковик миграции, который преобразует транзакции IMDS, выполняемые приложением, в OpenID Connect (OIDC). Боковой автомобиль миграции не предназначен для долгосрочного решения, но способ быстрого выполнения и быстрого выполнения на удостоверениях рабочей нагрузки. Запуск бокового автомобиля миграции в прокси приложения выполняет транзакции IMDS приложения к OIDC. Альтернативный подход — обновление до поддерживаемой версии клиентской библиотеки удостоверений Azure, которая поддерживает проверку подлинности OIDC.
В следующей таблице приведены рекомендации по миграции или развертыванию для идентификации рабочей нагрузки.
Сценарий | Описание |
---|---|
Новое или существующее развертывание кластера запускает поддерживаемую версию клиентской библиотеки удостоверений Azure | Никаких шагов миграции не требуется. Пример ресурсов развертывания: развертывание и настройка удостоверения рабочей нагрузки в новом кластере |
Новое или существующее развертывание кластера выполняет неподдерживаемую версию клиентской библиотеки идентификационных данных Azure. | Обновите образ контейнера, чтобы использовать поддерживаемую версию пакета SDK для удостоверений Azure или использовать боковику миграции. |
Следующие шаги
- Чтобы узнать, как настроить pod для проверки подлинности с помощью удостоверения рабочей нагрузки в качестве варианта миграции, см. статью "Модернизация проверки подлинности приложения с помощью удостоверения рабочей нагрузки".
- См. раздел «Развертывание и настройка кластера AKS с удостоверением рабочей нагрузки», который поможет вам развернуть кластер Службы Azure Kubernetes и настроить пример приложения для использования удостоверения рабочей нагрузки.
Azure Kubernetes Service