Использование kubelogin для проверки подлинности пользователей в Служба Azure Kubernetes
Подключаемый модуль kubelogin в Azure — это подключаемый модуль учетных данных, который реализует проверку подлинности Microsoft Entra. Подключаемый модуль kubelogin предлагает функции, недоступные в средстве командной строки kubectl. Дополнительные сведения см. в введение kubelogin и введение kubectl.
кластеры Служба Azure Kubernetes (AKS), интегрированные с идентификатором Microsoft Entra и работающие под управлением Kubernetes версии 1.24 или более поздней, автоматически используют формат kubelogin.
В этой статье приведены общие сведения и примеры использования kubelogin для всех поддерживаемых методов проверки подлинности Microsoft Entra в AKS.
Ограничения
- Можно включить не более 200 групп в утверждение веб-токена JSON (JWT) Microsoft Entra. Если у вас более 200 групп, рассмотрите возможность использования ролей приложения.
- Группы, созданные в идентификаторе Microsoft Entra, включаются только по значению ObjectID , а не по отображаемого имени. Эта
sAMAccountName
команда доступна только для групп, синхронизированных из локальной среды Windows Server Active Directory. - В AKS метод проверки подлинности субъекта-службы работает только с управляемым идентификатором Microsoft Entra, а не с более ранней версией Azure Active Directory.
- Метод проверки подлинности кода устройства не работает, если политика условного доступа Microsoft Entra устанавливается в клиенте Microsoft Entra. В этом сценарии используйте интерактивную проверку подлинности в веб-браузере.
Принцип действия проверки подлинности
Для большинства взаимодействий с kubelogin используется convert-kubeconfig
подкоманда. В подкомандах используется файл kubeconfig, указанный в --kubeconfig
переменной среды или в KUBECONFIG
переменной среды, для преобразования окончательного файла kubeconfig в формат exec на основе указанного метода проверки подлинности.
Методы проверки подлинности, реализующие kubelogin, являются потоками предоставления маркеров Microsoft Entra OAuth 2.0. Следующие флаги параметров часто используются в подкомандах kubelogin. Как правило, эти флаги готовы использовать при получении файла kubeconfig из AKS.
--tenant-id
: идентификатор клиента Microsoft Entra.--client-id
: идентификатор приложения общедоступного клиентского приложения. Это клиентское приложение используется только в коде устройства, интерактивном веб-браузере и методах входа oAuth 2.0 с учетными данными владельца ресурса (ROPC) (удостоверение рабочего процесса).--server-id
: идентификатор приложения веб-приложения или сервера ресурсов. Маркер выдан этому ресурсу.
Примечание.
В каждом методе проверки подлинности маркер не кэшируется в файловой системе.
методы проверки подлинности;
В следующих разделах описываются поддерживаемые методы проверки подлинности и способы их использования:
- Код устройства
- Azure CLI
- Интерактивный веб-браузер
- Субъект-служба
- Управляемое удостоверение
- Удостоверение рабочей нагрузки
Код устройства
Код устройства — это метод проверки подлинности по умолчанию для convert-kubeconfig
подкоманда. Параметр -l devicecode
является необязательным. Этот метод проверки подлинности запрашивает код устройства для входа пользователя из сеанса браузера.
До появления подключаемых модулей kubelogin и exec метод проверки подлинности Azure в kubectl поддерживал только поток кода устройства. Он использовал более раннюю версию библиотеки, которая создает маркер с audience
утверждением spn:
с префиксом. Он не совместим с управляемым идентификатором Microsoft Entra AKS, который использует поток от имени (OBO). При запуске convert-kubeconfig
подкоманда kubelogin удаляет spn:
префикс из утверждения аудитории.
Если требования включают использование функциональных возможностей из предыдущих версий, добавьте --legacy
этот аргумент. Если вы используете файл kubeconfig в более ранней версии кластера Azure Active Directory, kubelogin автоматически добавляет --legacy
флаг.
В этом методе входа маркер доступа и маркер обновления кэшируются в каталоге ${HOME}/.kube/cache/kubelogin . Чтобы переопределить этот путь, включите --token-cache-dir
параметр.
Если интегрированный кластер AkS Microsoft Entra использует Kubernetes 1.24 или более ранних версий, необходимо вручную преобразовать формат файла kubeconfig, выполнив следующие команды:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Чтобы очистить кэшированные маркеры, выполните следующую команду:
kubelogin remove-tokens
Примечание.
Метод входа в код устройства не работает, если политика условного доступа настроена в клиенте Microsoft Entra. В этом сценарии используйте интерактивный метод веб-браузера.
Azure CLI
Метод проверки подлинности Azure CLI использует контекст входа, который azure CLI устанавливает для получения маркера доступа. Маркер выдается в том же клиенте Microsoft Entra, что и az login
. kubelogin не записывает маркеры в файл кэша маркеров, так как они уже управляются Azure CLI.
Примечание.
Этот метод проверки подлинности работает только с управляемым идентификатором Microsoft Entra AKS.
В следующем примере показано, как использовать метод Azure CLI для проверки подлинности:
az login
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l azurecli
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Если каталог конфигурации Azure CLI находится за пределами каталога ${HOME} , используйте --azure-config-dir
параметр с convert-kubeconfig
подкоманда. Команда создает файл kubeconfig с настроенной переменной среды. Вы можете получить ту же конфигурацию, задав AZURE_CONFIG_DIR
переменную среды этому каталогу при выполнении команды kubectl.
Интерактивный веб-браузер
Интерактивный метод проверки подлинности в веб-браузере автоматически открывает веб-браузер для входа пользователя. После проверки подлинности пользователя браузер перенаправляется на локальный веб-сервер с помощью проверенных учетных данных. Этот метод проверки подлинности соответствует политике условного доступа.
При проверке подлинности с помощью этого метода маркер доступа кэшируется в каталоге ${HOME}/.kube/cache/kubelogin . Этот путь можно переопределить с помощью --token-cache-dir
параметра.
Маркер носителя
В следующем примере показано, как использовать маркер носителя с интерактивным потоком веб-браузера:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l interactive
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Маркер подтверждения владения
В следующем примере показано, как использовать маркер проверки владения (PoP) с интерактивным потоком веб-браузера:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Субъект-служба
Этот метод проверки подлинности использует субъект-службу для входа пользователя. Вы можете предоставить учетные данные, задав переменную среды или используя учетные данные в аргументе командной строки. Поддерживаемые учетные данные, которые можно использовать, являются паролем или сертификатом клиента PFX.
Прежде чем использовать этот метод, рассмотрите следующие ограничения:
- Этот метод работает только с управляемым идентификатором Microsoft Entra.
- Субъект-служба может быть членом не более 200 групп Microsoft Entra.
Переменные среды
В следующем примере показано, как настроить секрет клиента с помощью переменных среды:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn
export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<Service Principal Name (SPN) client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Затем запустите эту команду:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn
export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_SECRET=<SPN secret>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Аргумент командной строки
В следующем примере показано, как настроить секрет клиента в аргументе командной строки:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn --client-id <SPN client ID> --client-secret <SPN client secret>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Предупреждение
Метод аргумента командной строки сохраняет секрет в файле kubeconfig.
Сертификат клиента
В следующем примере показано, как настроить секрет клиента с помощью сертификата клиента:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn
export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE=/path/to/cert.pfx
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE_PASSWORD=<PFX password>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Затем запустите эту команду:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn
export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pfx
export AZURE_CLIENT_CERTIFICATE_PASSWORD=<PFX password>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Переменные маркера и среды PoP
В следующем примере показано, как настроить токен PoP, использующий секрет клиента, который он получает из переменных среды:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Управляемое удостоверение
Используйте метод проверки подлинности управляемого удостоверения для приложений, которые подключаются к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Примеры включают доступ к ресурсам Azure, таким как виртуальная машина Azure, масштабируемый набор виртуальных машин или Azure Cloud Shell.
Управляемое удостоверение по умолчанию
В следующем примере показано, как использовать управляемое удостоверение по умолчанию:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l msi
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Определенное удостоверение
В следующем примере показано, как использовать управляемое удостоверение с определенным удостоверением:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l msi --client-id <msi-client-id>
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Удостоверение рабочей нагрузки
Метод проверки подлинности удостоверений рабочей нагрузки использует учетные данные удостоверения, федеративные с Microsoft Entra, для проверки подлинности доступа к кластерам AKS. Этот метод использует встроенную проверку подлинности Microsoft Entra. Он работает, задав следующие переменные среды:
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 см. в примере федерации OIDC.
В следующем примере показано, как использовать удостоверение рабочей нагрузки:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l workloadidentity
Выполните следующую команду kubectl, чтобы получить сведения о узле:
kubectl get nodes
Использование kubelogin с AKS
AKS использует пару сторонних приложений Microsoft Entra. Эти идентификаторы приложений одинаковы во всех средах.
Идентификатор приложения сервера Microsoft Entra AKS, который использует 6dae42f8-4368-4678-94ff-3960e28e3630
серверная сторона. Маркер доступа, который обращается к кластерам AKS, должен быть выдан для этого приложения. В большинстве методов проверки подлинности kubelogin необходимо использовать --server-id
с kubelogin get-token
.
Идентификатор клиентского приложения Microsoft Entra AKS, который kubelogin использует для проверки подлинности общедоступного клиента от имени пользователя 80faf920-1908-4b52-b5ef-a8e7bedfc67a
. Идентификатор клиентского приложения используется в коде устройства и методах интерактивной проверки подлинности в веб-браузере.
Связанный контент
- Узнайте, как интегрировать AKS с идентификатором Microsoft Entra id в статье об интеграции с идентификатором AkS, управляемой Microsoft Entra ID.
- Сведения о начале работы с управляемыми удостоверениями в AKS см. в статье "Использование управляемого удостоверения в AKS".
- Сведения о начале работы с удостоверениями рабочей нагрузки в AKS см. в статье "Использование удостоверения рабочей нагрузки в AKS".
Azure Kubernetes Service