Поделиться через


Использование Azure RBAC для кластеров AKS (предварительная версия, выход из эксплуатации)

Область применения: AKS в Azure Local 22H2, AKS на Windows Server

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

Эта предварительная версия отключена и не поддерживается начиная с 7.15.2024. Корпорация Майкрософт не рекомендует использовать эту предварительную версию Azure RBAC в рабочей среде.

В этой статье описывается настройка Azure RBAC в кластере AKS для использования идентификатора Microsoft Entra и назначений ролей Azure для авторизации. Действия по созданию кластера рассматриваются в предварительных требованиях.

Общие сведения об использовании Azure RBAC с кластерами Kubernetes с поддержкой Azure Arc см. в статье Azure RBAC в Kubernetes с поддержкой Azure Arc.

Необходимые компоненты

Перед развертыванием кластера Kubernetes с поддержкой Azure Arc необходимо выполнить следующие предварительные требования.

Установка расширения Azure CLI

Предварительная версия расширения Kubernetes Azure CLI с поддержкой Azure Arc является единственной совместимой версией этой предварительной версии AKS в Azure Local 22H2. Использование более высокой версии может привести к проблемам несовместимости с Azure RBAC и AKS Arc. Чтобы установить расширение, выполните следующую команду:

az extension add -n connectedk8s --version 1.5.4

Подготовка сети

Настройте следующие параметры сети, прокси-сервера и брандмауэра:

  • Настройте конечные точки, которые должны быть доступны для подключения кластера к Azure Arc. Список см. в разделе "Соответствие требованиям к сети".

  • Разрешить конечную точку Graph в прокси-сервере или брандмауэре.

    Сведения о настройке прокси-сервера см. в разделе "Параметры прокси-сервера".

Серверные и клиентские приложения

Azure RBAC использует клиентские и серверные приложения Microsoft Entra для различных целей. Клиентское приложение используется для получения маркера пользователя после проверки подлинности пользователя с помощью идентификатора Microsoft Entra с помощью интерактивного входа; например, с помощью потока кода устройства. Клиентское приложение является общедоступным клиентом, а также поддерживает неинтерактивный поток для получения маркера для субъектов-служб.

Серверное приложение является конфиденциальным клиентом и используется для получения сведений о группе безопасности вошедшего пользователя для пользователей с превышением прав доступа, а также для проверки запросов доступа, возвращающих результат авторизации, который субъект (пользователь или имя участника-службы) имеет в кластере AKS.

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

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

Зарегистрируйте серверные приложения и секрет, а также клиентское приложение и секрет, выполнив следующие действия:

Примечание.

Эти действия помогут вам выполнить ключевые задачи в использовании Azure RBAC для кластеров Kubernetes с поддержкой Azure Arc, которые необходимы для подготовки к настройке Azure RBAC в AKS Arc.

Для выполнения этих действий необходимо иметь встроенную роль администратора приложений в идентификаторе Microsoft Entra ID. Инструкции см. в разделе "Назначение ролей Microsoft Entra пользователям".

  1. Создайте серверное приложение и общий секрет.
  2. Создайте назначение ролей для серверного приложения.
  3. Создайте клиентское приложение. Вы ссылаетесь на клиентское приложение при подключении kubectl в сети.

Предоставление разрешений пользователям в кластере

Назначьте роли для предоставления разрешений пользователям имен субъектов-служб (SPN) в кластере. Используйте команду az role assignment.

Чтобы назначить роли в кластере Kubernetes, необходимо иметь разрешение владельца на подписку, группу ресурсов или кластер.

В следующем примере используется az role assignment для назначения роли администратора кластера Azure Arc Kubernetes группе ресурсов, содержащей кластер. Перед созданием кластера можно задать область группы ресурсов:

az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee xyz@contoso.com --scope /subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Kubernetes/connectedClusters/<resource name, aka name of AKS cluster>

Чтобы получить доступ к кластеру с помощью прокси-метода connectedk8s (один из вариантов взаимодействия с API-сервером), необходимо иметь область "Роль пользователя кластера Kubernetes с поддержкой Azure Arc" в подписке, группе ресурсов или кластере.

Следующая команда назначает роль группе вместо конкретного пользователя (см. предыдущий пример):

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 --role "Azure Arc Kubernetes Cluster Admin" --scope $id

Назначаемый — это идентификатор объекта группы Microsoft Entra.

Дополнительные сведения о роли см. в этом разделе.

Чтобы получить идентификатор области для кластера или группы ресурсов, выполните следующие команды и используйте следующую "id":propertyкоманду:

az connectedk8s show -g <name of resource group>  
az connectedk8s show -n <name of cluster> -g <name of resource group>

Другие примеры см. в статье az role assignment.

Сведения о предварительно созданных ролях Azure RBAC для кластеров Kubernetes с поддержкой Arc см. в статье "Создание назначений ролей для пользователей для доступа к кластеру". Список всех доступных встроенных ролей см. в статье о встроенных ролях Azure.

Шаг 1. Создание имени участника-службы и назначение разрешений

Используйте субъект-службу Azure для настройки учетной записи службы автоматизации с разрешениями, необходимыми для создания целевого кластера с включенным Azure RBAC.

Для создания целевого кластера требуются только ограниченные привилегии в подписке. Рекомендуется использовать роль подключения Kubernetes — Azure Arc. Вы также можете использовать роль владельца или участника . Дополнительные сведения см. в статье Встроенные роли Azure.

az ad sp create-for-rbac Используйте команду Azure CLI, чтобы создать имя субъекта-службы и настроить его с необходимыми разрешениями.

В следующем примере кластер Kubernetes — роль подключения Azure Arc назначается подписке. Дополнительные сведения см. в справочнике по команде az ad sp :

az ad sp create-for-rbac --role "Kubernetes Cluster - Azure Arc Onboarding" --scopes /subscriptions/<OID of the subscription ID> 

Внимание

Выходные данные команды включают az ad sp учетные данные, которые необходимо защитить. Не включайте эти учетные данные в код или проверьте учетные данные в системе управления версиями. Дополнительные сведения см. в статье Создание субъекта-службы Azure.

Дополнительные сведения о создании имени субъекта-службы и назначении роли см. в статье "Создание субъекта-службы Azure".

Шаг 2. Создание объекта учетных данных

Чтобы создать объект учетных данных для использования с spN, откройте окно PowerShell и выполните следующую команду:

$Credential = Get-Credential

Эта командная строка содержит пароль.

Чтобы автоматизировать создание объекта учетных данных без необходимости ввода пароля вручную, см. пример 4. Скрипт включает в себя учетные данные обычного текста, которые могут нарушать стандарты безопасности в некоторых предприятиях.

Шаг 3. Создание кластера AKS с поддержкой Azure RBAC

Кластер с поддержкой Azure RBAC можно создать с помощью имени субъекта-службы (вариант A) или создать кластер интерактивно (вариант B).

Вариант A. Создание целевого кластера AKS с поддержкой Azure RBAC с помощью имени субъекта-службы

Чтобы создать целевой кластер AKS с поддержкой Azure RBAC, с помощью имени субъекта-службы:

  1. Если у вас еще нет имени субъекта-службы для использования с целевым кластером, создайте имя субъекта-службы.

  2. Обратите внимание, что новое имя субъекта-службы используется для одного раза при создании кластера и не требует управления паролями.

  3. Откройте окно PowerShell на локальном узле Azure или сервере Windows, где развертывается кластер, и выполните следующую команду:

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<resource group name>" -subscriptionID "<subscription ID>" -tenantId "<tenant ID>" -credential $Credential -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

Вариант B. Создание целевого кластера AKS с поддержкой Azure RBAC в интерактивном режиме

Если вы предпочитаете создать целевой кластер с поддержкой Azure RBAC в интерактивном режиме, выполните следующие действия.

  1. Откройте окно PowerShell на локальном узле Azure или сервере Windows, где развертывается кластер.

  2. Войдите в Azure, выполнив следующую connect-azaccount -deviceauth команду:

    connect-azaccount -deviceauth
    

    Командная строка для проверки подлинности через поток кода устройства.

  3. Задайте контекст подписки для подписки, в которой создается целевой кластер:

    Set-AzContext -Subscription "subscriptionName"
    
  4. Создайте целевой кластер AKS с включенным Azure RBAC:

    New-AksHciCluster -name "<cluster name>"  -enableAzureRBAC -resourceGroup "<name of resource group>"  -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool> 
    

Шаг 4. Подключение к кластеру AKS с помощью Azure RBAC

Настройка Azure RBAC в кластере AKS завершена. Чтобы проверить настройку Azure RBAC, подключитесь к кластеру AKS. Azure RBAC проверяет подлинность подключений.

Процедуры в этом разделе используют connectedk8s метод прокси для подключения к кластеру AKS и подключения к кластеру AKS через частную сеть.

Подключение к кластеру connectedk8s AKS через Интернет с помощью метода прокси-сервера

connectedk8s Используйте метод прокси-сервера для отправки запроса проверки подлинности и авторизации из любого места в Интернете. При использовании этого метода вы можете ограничиться 200 группами.

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

  1. Откройте окно Azure CLI и подключитесь az login к Azure. Дополнительные сведения см. в разделе Вход с помощью Azure CLI.

  2. При необходимости задайте подписку для учетной записи Azure, которая использовалась для создания кластера AKS:

    az account set -subscription "<mySubscription>" 
    
  3. Убедитесь, что вы подключены к Azure:

    az account show
    
  4. Запустите процесс прокси-сервера:

    az connectedk8s proxy -n <cluster name> -g <resource group name>
    
  5. Убедитесь, что проверка подлинности работает правильно, отправляя запросы в кластер. Оставьте терминал, подключенный из открытого окна, откройте другую вкладку и отправьте запросы в кластер. Вы должны получить ответы на основе конфигурации Azure RBAC.

  6. Нажмите клавиши connectedk8s, чтобы закрыть прокси-подключение.

Подключение к кластеру AKS через частную сеть

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

Чтобы получить вход и локальный компьютер Microsoft Entra kubeconfig (например, локальный кластер Azure), создайте microsoft Entra kubeconfig с помощью следующей команды. Вы можете распространить файл Microsoft Entra kubeconfig пользователям, которые подключаются с клиентского компьютера. Microsoft Entra kubeconfig не содержит секретов.

Чтобы подключиться к кластеру AKS через частную сеть, выполните следующие действия.

  1. Скачайте файл kubeconfig:

    Get-AksHciCredential -Name <cluster name> -aadauth
    
  2. Начните отправлять запросы на сервер API AKS, выполнив kubectl команду api-server. Вам будет предложено указать учетные данные Microsoft Entra. Вы можете получить предупреждение, но его можно игнорировать.

Обновление подключаемого модуля проверки подлинности kubelogin

Примечание.

Сведения в этом разделе относятся к AKS версии 1.0.17.10310 и более поздних версий. Сведения о версии см. в заметках о выпуске.

Чтобы предоставить маркеры проверки подлинности для взаимодействия с кластерами AKS, клиентам Kubectl требуется подключаемый модуль проверки подлинности.

Чтобы создать файл kubeconfig, который требует подключаемого модуля двоичной проверки подлинности Azure kubelogin.exe, выполните следующую команду PowerShell:

Get-AksHciCredential -Name <cluster name> -aadauth

Эта команда также загружает двоичный файл kubelogin.exe . Чтобы найти расположение файла kubelogin.exe , выполните следующую команду:

$workingdir = (Get-AksHciConfig).Akshci.installationPackageDir

Эта команда возвращает путь к тому, где скачиваются kubelogin.exe . Скопируйте файл kubelogin.exe на локальный узел Или клиентский компьютер Azure. Для локальной среды Azure скопируйте файл в путь, как описано в следующем примере. Для клиентского компьютера скопируйте исполняемый файл на клиентский компьютер и добавьте его в путь. Например:

cp $workingdir\kubelogin.exe "c:\program files\akshci"

Кроме того, чтобы скачать kubelogin.exe на клиентский компьютер, можно выполнить следующую команду:

wget https://github.com/Azure/kubelogin/releases/download/v0.0.26/kubelogin-win-amd64.zip -OutFile kubelogin-win-amd64.zip

Дополнительные сведения о преобразовании в подключаемый модуль проверки подлинности kubelogin см. на странице Azure kubelogin на GitHub.

Следующие шаги