Использование kubelogin для проверки подлинности пользователей в службе Azure Kubernetes (AKS)

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

В этой статье приведены общие сведения и примеры использования kubelogin для всех поддерживаемых методов проверки подлинности Microsoft Entra в AKS.

Ограничения проверки подлинности Kubelogin в AKS

  • Группы, созданные в Microsoft Entra, включаются только по значению ObjectID , а не по отображаемого имени. Эта sAMAccountName команда доступна только для групп, синхронизированных из локальной среды Windows Server Active Directory.
  • Метод проверки подлинности служебного принципала работает только с Microsoft Entra и не поддерживается в предыдущей версии Azure Active Directory.
  • Субъект-служба может быть членом не более 200 групп Microsoft Entra. Если у вас более 200 групп, рассмотрите возможность использования ролей приложения.
  • Метод проверки подлинности кода устройства не работает, если политика условного доступа Microsoft Entra устанавливается в клиенте Microsoft Entra. В этом сценарии используйте интерактивную проверку подлинности в веб-браузере.
  • Метод проверки подлинности Azure CLI работает только с Microsoft Entra.

Принцип действия проверки подлинности

Примечание.

Имейте в виду следующие сведения о проверке подлинности kubelogin для кластеров AKS, интегрированных с Microsoft Entra:

  • Кластеры под управлением Kubernetes версии 1.24 или более поздней версии автоматически используют формат kubelogin.
  • Для кластеров под управлением Kubernetes 1.24 или более ранних версий требуется преобразование вручную. Для преобразования файла kubeconfig в использование формата exec-плагина можно использовать метод аутентификации с кодом устройства.

Для большинства взаимодействий с kubelogin используется convert-kubeconfig подкоманда. В подкомандах используется файл kubeconfig, указанный в --kubeconfig переменной среды или в KUBECONFIG переменной среды, для преобразования окончательного файла kubeconfig в формат exec на основе указанного метода проверки подлинности.

Методы аутентификации, которые реализует kubelogin, используют потоки токенов Microsoft Entra OAuth 2.0. В каждом методе проверки подлинности маркер не кэширован в файловой системе.

Проверка подлинности кода устройства

Код устройства — это метод проверки подлинности по умолчанию для подкоманды convert-kubeconfig. Этот метод проверки подлинности запрашивает код устройства, чтобы пользователь мог войти через браузер.

Примечание.

До появления плагинов kubelogin и exec метод аутентификации Azure в kubectl поддерживал только поток кода устройства. Он использовал более раннюю версию библиотеки, которая создает токен с утверждением audience, имеющим префикс spn:. Он не совместим с Microsoft Entra, который использует поток от имени (OBO). При выполнении подкоманды convert-kubeconfig, kubelogin удаляет префикс spn: из поля аудитории.

Параметры проверки подлинности кода устройства

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

Параметр Description
-l devicecode (необязательно) Указывает метод проверки подлинности kubelogin. Этот параметр является необязательным, так как код устройства является методом по умолчанию.
--legacy Использует устаревшее поведение для более ранних версий кластеров Azure Active Directory. Если вы используете файл kubeconfig в более ранней версии кластера Azure Active Directory, kubelogin автоматически добавляет --legacy флаг.
--token-cache-dir Переопределяет путь по умолчанию к каталогу кэша токенов, который равен ${HOME}/.kube/cache/kubelogin.

Проверка подлинности Azure CLI

Метод проверки подлинности Azure CLI (команда -l azurecli) использует контекст, созданный Azure CLI при входе в систему, для получения токена доступа. Маркер выдается в том же клиенте Microsoft Entra, что и az login. kubelogin не записывает маркеры в файл кэша маркеров, так как Azure CLI уже управляет ими.

Параметры проверки подлинности Azure CLI

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

Параметр Description
-l azurecli Указывает метод проверки подлинности kubelogin.
--azure-config-dir Указывает каталог конфигурации Azure CLI. Каталог по умолчанию — ${HOME}/.azure.

Вход в Azure

Войдите в Azure с помощью команды az login.

az login

Интерактивная проверка подлинности в веб-браузере

Интерактивный метод проверки подлинности в веб-браузере (команда:) -l interactiveавтоматически открывает веб-браузер для входа пользователя. После проверки подлинности пользователя браузер перенаправляется на локальный веб-сервер с помощью проверенных учетных данных. Этот метод проверки подлинности соответствует политике условного доступа.

С помощью этого метода проверки подлинности можно использовать маркер носителя или маркер проверки подлинности (PoP).

Параметры проверки подлинности маркера носителя

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

Параметр Description
-l interactive Указывает метод проверки подлинности kubelogin.
--token-cache-dir Переопределяет путь по умолчанию к каталогу кэша токенов, который равен ${HOME}/.kube/cache/kubelogin.

Параметры проверки подлинности маркера PoP

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

Параметр Description
-l interactive Указывает метод проверки подлинности kubelogin.
--pop-enabled Включает проверку подлинности маркера PoP.
--pop-claims Указывает утверждения токена PoP в формате пары "ключ-значение". Например, u=/ARM/ID/OF/CLUSTER.

Аутентификация служебного принципала

Метод аутентификации сервисного принципала (команда -l spn) использует учетную запись службы для входа пользователя. Вы можете предоставить учетные данные, задав переменную среды или используя учетные данные в аргументе командной строки. Поддерживаемые учетные данные, которые можно использовать, являются паролем или сертификатом клиента PFX.

Параметры проверки подлинности служебного принципала

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

Параметр Description
-l spn Указывает метод проверки подлинности kubelogin.
--client-id Идентификатор приложения (client-id) сервисного субъекта.
--client-secret Секрет клиента субъекта-службы.

Аутентификация управляемой идентификации

Используйте метод проверки подлинности управляемого удостоверения (команда: -l msi) для приложений, которые подключаются к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Примеры включают доступ к ресурсам Azure, таким как виртуальная машина Azure, масштабируемый набор виртуальных машин или Azure Cloud Shell.

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

Параметры для проверки подлинности управляемого удостоверения

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

Параметр Description
-l msi Указывает метод проверки подлинности kubelogin.
--client-id Идентификатор приложения (client-id) управляемой идентичности, назначенной пользователем. Если этот параметр не указан, используется управляемое удостоверение по умолчанию.

Аутентификация идентификации рабочей нагрузки

Метод проверки подлинности рабочей нагрузки (команда: -l workloadidentity) использует удостоверяющие учетные данные, которые интегрированы с Microsoft Entra, для аутентификации доступа к кластерам AKS. Этот метод использует встроенную проверку подлинности Microsoft Entra. Он работает, задав следующие переменные среды:

Variable Description
AZURE_CLIENT_ID Идентификатор приложения Microsoft Entra, объединённый с удостоверением рабочей нагрузки.
AZURE_TENANT_ID Идентификатор клиента Microsoft Entra.
AZURE_FEDERATED_TOKEN_FILE Файл, содержащий подписанное утверждение удостоверения рабочей нагрузки, например маркер проецируемой учетной записи службы Kubernetes (JWT).
AZURE_AUTHORITY_HOST Базовый URL-адрес центра Microsoft Entra. Например, https://login.microsoftonline.com/.

Вы можете использовать удостоверение рабочей нагрузки для доступа к кластерам Kubernetes из систем CI/CD, таких как GitHub или ArgoCD, без хранения учетных данных служебного принципала во внешних системах. Сведения о настройке федерации OpenID Connect (OIDC) из GitHub см. в примере федерации OpenID Connect (OIDC).

Параметры проверки подлинности удостоверения рабочей нагрузки

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

Параметр Description
-l workloadidentity Указывает метод проверки подлинности kubelogin.

Экспорт пути к файлу kubeconfig

Перед запуском подкоманды convert-kubeconfig, экспортируйте путь к файлу kubeconfig в переменную среды KUBECONFIG. Рассмотрим пример.

export KUBECONFIG=/path/to/kubeconfig

Преобразование файла kubeconfig

Запустите подкоманду convert-kubeconfig, чтобы преобразовать файл kubeconfig и использовать плагин exec с выбранным методом аутентификации.

kubelogin convert-kubeconfig
kubelogin convert-kubeconfig -l azurecli
# Bearer token authentication
kubelogin convert-kubeconfig -l interactive

# Proof-of-Possession (PoP) token authentication
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
  1. Запустите подкоманду convert-kubeconfig, чтобы преобразовать файл kubeconfig для использования подключаемого модуля exec.

    kubelogin convert-kubeconfig -l spn
    
  2. Задайте переменные среды для идентификатора клиента и секрета клиента или сертификата клиента. Рассмотрим пример.

    export AZURE_CLIENT_ID=<service-principal-client-id>
    export AZURE_CLIENT_SECRET=<service-principal-client-secret>
    
# Default managed identity authentication
kubelogin convert-kubeconfig -l msi

# Specific managed identity authentication
kubelogin convert-kubeconfig -l msi --client-id <managed-identity-client-id>
kubelogin convert-kubeconfig -l workloadidentity

Удаление кэшированных маркеров

Удалите кэшированные маркеры с помощью kubelogin remove-tokens команды.

kubelogin remove-tokens

Получение сведений о узле

Получите сведения об узле с помощью команды kubectl get.

kubectl get nodes

Как использовать kubelogin с AKS

AKS использует пару сторонних приложений Microsoft Entra. Эти идентификаторы приложений одинаковы во всех средах.

Идентификатор приложения сервера Microsoft Entra AKS (server-id), который используется 6dae42f8-4368-4678-94ff-3960e28e3630на стороне сервера. Токен доступа, который получает доступ к кластерам AKS, должен быть выдан для этого приложения. В большинстве методов проверки подлинности kubelogin необходимо использовать --server-id с kubelogin get-token.

Идентификатор клиентского приложения Microsoft Entra AKS (client-id), который kubelogin использует, чтобы выполнять аутентификацию общедоступного клиента от имени пользователя, — это 80faf920-1908-4b52-b5ef-a8e7bedfc67a. Идентификатор клиентского приложения используется в коде устройства и методах интерактивной проверки подлинности в веб-браузере.