Включение проверки подлинности идентификатора Microsoft Entra для плоскости управления AKS

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

Администраторы кластера могут настроить управление доступом на основе ролей (RBAC) для Kubernetes в зависимости от членства в группе каталогов или удостоверения пользователей.

Дополнительные сведения о потоке интеграции Microsoft Entra см. в документации по Microsoft Entra.

Ограничения

Интеграция Microsoft Entra не может быть отключена после включения в кластере.

Перед тем как начать

Чтобы установить надстройку AKS, убедитесь, что у вас есть следующие элементы:

  • Вы установили и настроили Azure CLI версии 2.29.0 или более поздней. Чтобы найти версию, выполните команду az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI.
  • Вам требуется kubectl с минимальной версией 1.18.1 или kubelogin. С помощью Azure CLI и модуля Azure PowerShell эти две команды включаются и автоматически управляются. Это означает, что они обновляются по умолчанию, и выполнение az aks install-cli не обязательно и не рекомендуется. Если вы используете автоматизированный конвейер, необходимо управлять обновлениями для правильной или последней версии. Разница между дополнительными версиями Kubernetes и kubectl не должна быть более одной версии. В противном случае проблемы проверки подлинности возникают в неправильной версии.
  • Для этой конфигурации требуется группа Microsoft Entra для кластера. Эта группа зарегистрирована в качестве группы администрирования в кластере для предоставления разрешений администратора. Если у вас нет существующей группы Microsoft Entra, ее можно создать с помощью az ad group create команды.

Включение интеграции в кластере AKS

Сначала задайте переменные среды для группы ресурсов, имени кластера, идентификаторов объектов группы администрирования Microsoft Entra и идентификатора клиента. Повторно используйте эти переменные в следующих командах.

export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myManagedCluster"
export AAD_ADMIN_GROUP_OBJECT_IDS="<group-object-id>"  # comma-separated for multiple groups
export AAD_TENANT_ID="<tenant-id>"
export LOCATION="centralus"

Создание нового кластера

  1. Создайте группу ресурсов Azure с помощью команды az group create.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. Создайте кластер AKS и включите доступ администрирования для группы Microsoft Entra с помощью az aks create команды.

    az aks create \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --enable-aad \
      --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
      --aad-tenant-id $AAD_TENANT_ID \
      --generate-ssh-keys
    

    Успешное создание кластера Microsoft Entra ID содержит следующий раздел в тексте ответа.

    "AADProfile": {
      "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
      ],
      "clientAppId": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    }
    

Использование имеющегося кластера

Включите интеграцию Microsoft Entra в ваш существующий кластер с поддержкой Kubernetes RBAC, используя команду az aks update. Не забудьте задать группу администраторов, чтобы сохранить доступ к кластеру.

az aks update \
  --resource-group $RESOURCE_GROUP \
  --name $CLUSTER_NAME \
  --enable-aad \
  --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
  --aad-tenant-id $AAD_TENANT_ID

Успешная активация кластера идентификатора Microsoft Entra имеет следующий раздел в тексте ответа:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Перемещение старого кластера для интеграции

Если кластер использует устаревшую интеграцию Microsoft Entra, можно выполнить обновление до интеграции Microsoft Entra с помощью az aks update команды.

Предупреждение

Кластеры уровня "Бесплатный" могут столкнуться с простоем сервера API во время обновления. Мы рекомендуем выполнить обновление в нерабочие часы. После обновления содержимое kubeconfig изменяется. Необходимо выполнить az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name> для слияния новых учетных данных в kubeconfig файл.

az aks update \
  --resource-group $RESOURCE_GROUP \
  --name $CLUSTER_NAME \
  --enable-aad \
  --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
  --aad-tenant-id $AAD_TENANT_ID

Успешная миграция кластера идентификатора Microsoft Entra id содержит следующий раздел в тексте ответа:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Доступ к включенному кластеру

  1. Получите учетные данные пользователя с помощью команды az aks get-credentials, чтобы получить доступ к вашему кластеру.

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Следуйте инструкциям по входу.

  3. Просмотрите узлы в кластере kubectl get nodes с помощью команды.

    kubectl get nodes
    

Кластеры, работающие под управлением Kubernetes версии 1.24 и более поздней, автоматически используют формат подключаемого модуля exec kubelogin, поэтому не требуется никакого ручного преобразования для интерактивного входа в Azure CLI kubeconfig. Для неинтерактивных сценариев, таких как конвейеры CI, или для использования метода другой проверки подлинности (служебный принципал, управляемое удостоверение, удостоверение рабочей нагрузки или код устройства), см. статью "Использование kubelogin для проверки подлинности пользователей в AKS".

Доступ с разрывом

В редких случаях, когда вход с использованием идентификатора Microsoft Entra в сервер API Kubernetes вашего кластера не работает (например, из-за более масштабного сбоя в службе Microsoft Entra), вы можете временно использовать локальную учетную запись администратора кластера, чтобы поддерживать его работу до восстановления входа с использованием Entra.

Note

Эта резервная мера необходима только в том случае, если вход на основе Entra недоступен. Если проблема связана с неправильно настроенной группой администрирования (например, группа была удалена или задан неправильный идентификатор объекта), вам не нужна она — обновите группу администраторов непосредственно с az aks update --aad-admin-group-object-ids помощью учетной записи с Microsoft.ContainerService/managedClusters/write разрешением.

Important

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

Чтобы использовать путь с разрывом, вам потребуется роль участника службы Azure Kubernetes в ресурсе кластера. Эта роль предоставляет разрешение, необходимое Microsoft.ContainerService/managedClusters/write для повторного включения локальных учетных записей, а также доступа к учетным данным локального администратора кластера. Она оценивается Azure Resource Manager, поэтому она работает независимо от пути входа Microsoft Entra к серверу API Kubernetes.

  1. Если локальные учетные записи отключены в кластере, повторно включите их временно.

    az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-local-accounts
    
  2. Получите учетные данные локального администратора кластера с помощью az aks get-credentials команды с флагом --admin . Эти учетные данные представляют собой kubeconfig на основе сертификата, который обходит Microsoft Entra.

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --admin
    
  3. Используется kubectl для управления кластером, пока Microsoft Entra недоступен. Как только возможность входа в Microsoft Entra будет восстановлена, отключите локальные учетные записи, чтобы вернуть кластер к его безопасному состоянию.

    az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-local-accounts
    

Дальнейшие действия