Получение безопасного доступа к ресурсам 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-адресов.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Типы ресурсов, поддерживающие управляемое удостоверение, назначаемое системой.
- Azure CLI версии 2.53.0 или более поздней. Чтобы узнать, какая версия используется, выполните команду
az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. - Чтобы узнать, какие роли следует использовать в разных сценариях, см. в следующих статьях:
Создание кластера 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>