Получение безопасного доступа к ресурсам Azure в Служба Azure Kubernetes с помощью доверенного доступа

Многие службы Azure, которые интегрируются с Служба Azure Kubernetes (AKS), нуждаются в доступе к серверу API Kubernetes. Чтобы избежать предоставления доступа администратора этих служб или предоставления доступа к кластерам AKS для доступа к сети, можно использовать функцию доверенного доступа AKS.

Эта функция предоставляет службам безопасный доступ к серверу API AKS с помощью серверной части Azure, не требуя частной конечной точки. Вместо того чтобы полагаться на удостоверения, имеющие разрешения Microsoft Entra , эта функция может использовать управляемое удостоверение, назначаемое системой, для проверки подлинности с помощью управляемых служб и приложений, которые вы хотите использовать с кластерами AKS.

В этой статье показано, как получить безопасный доступ для служб Azure к серверу API Kubernetes в AKS с помощью доверенного доступа.

Примечание.

Api доверенного доступа общедоступен. Мы предоставляем общедоступную поддержку Azure CLI, но она по-прежнему находится в предварительной версии и требует использования расширения aks-preview.

Общие сведения о функции доверенного доступа

Доверенный доступ обращается к следующим сценариям:

  • Если задан авторизованный диапазон IP-адресов или в частном кластере, службы Azure могут не иметь доступа к серверу API Kubernetes, если вы не реализуете модель доступа к частной конечной точке.

  • Предоставление администратору службы Azure доступа к API Kubernetes не соответствует рекомендациям по наименьшей привилегии и может привести к эскалации привилегий или риску утечки учетных данных. Например, вам может потребоваться реализовать разрешения между службами с высоким уровнем привилегий, и они не являются идеальными в проверке аудита.

Доверенный доступ можно использовать для предоставления явного согласия на управляемое удостоверение, назначаемое системой, для доступа к кластерам AKS с помощью ресурса Azure, называемого привязкой роли. Ресурсы Azure получают доступ к кластерам AKS через региональный шлюз AKS с помощью проверки подлинности управляемого удостоверения, назначаемого системой. Соответствующие разрешения Kubernetes назначаются через ресурс Azure, называемый ролью. С помощью доверенного доступа можно получить доступ к кластерам AKS с различными конфигурациями, включая не только частные кластеры, кластеры с локальными учетными записями, кластеры Microsoft Entra и авторизованные кластеры диапазонов IP-адресов.

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

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

В той же подписке, что и ресурс Azure, к которому требуется получить доступ к кластеру, создайте кластер AKS.

Выберите необходимые роли доверенного доступа

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

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

Убедившись, какую роль следует использовать, используйте Azure CLI для создания привязки роли доверенного доступа в кластере AKS. Привязка роли связывает выбранную роль со службой Azure.

# Create a Trusted Access role binding in an AKS cluster

az aks trustedaccess rolebinding create  --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <role binding name> -s <connected service resource ID> --roles <roleName1, roleName2>

Приведем пример:

# Sample command

az aks trustedaccess rolebinding create \
-g myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--source-resource-id /subscriptions/000-000-000-000-000/resourceGroups/myResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/MyMachineLearning \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

Обновление существующей привязки роли доверенного доступа

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

Примечание.

Кластеры диспетчера надстроек обновляются каждые пять минут, поэтому новая привязка роли может занять до пяти минут. Прежде чем новая привязка роли вступает в силу, существующая привязка ролей по-прежнему работает.

Можно использовать az aks trusted access rolebinding list --name <role binding name> --resource-group <resource group> для проверка привязку текущей роли.

# Update the RoleBinding command

az aks trustedaccess rolebinding update --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <existing role binding name>  --roles <newRoleName1, newRoleName2>

Приведем пример:

# Update the RoleBinding command with sample resource group, cluster, and roles

az aks trustedaccess rolebinding update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

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

Отображение привязки определенной роли доверенного доступа с помощью az aks trustedaccess rolebinding show команды:

az aks trustedaccess rolebinding show --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>

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

Перечислить все привязки ролей доверенного доступа для кластера с помощью az aks trustedaccess rolebinding list команды:

az aks trustedaccess rolebinding list --resource-group <AKS resource group> --cluster-name <AKS cluster name>

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

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

Удаление существующей привязки роли доверенного доступа отключает службу Azure от кластера AKS.

Удалите существующую привязку роли доверенного доступа с помощью az aks trustedaccess rolebinding delete команды:

az aks trustedaccess rolebinding delete --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>