Получение безопасного доступа к ресурсам Azure в Служба Azure Kubernetes с помощью доверенного доступа
В этой статье показано, как получить безопасный доступ для служб Azure к серверу API Kubernetes в Служба Azure Kubernetes (AKS) с помощью доверенного доступа.
Функция доверенного доступа предоставляет службам безопасный доступ к серверу API AKS с помощью серверной части Azure, не требуя частной конечной точки. Вместо того чтобы полагаться на удостоверения, имеющие разрешения Microsoft Entra , эта функция может использовать управляемое удостоверение, назначаемое системой, для проверки подлинности с помощью управляемых служб и приложений, которые вы хотите использовать с кластерами 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. - Чтобы узнать, какие роли следует использовать в разных сценариях, см. в следующих статьях:
- В той же подписке, что и ресурс Azure, к которому требуется получить доступ к кластеру, создайте кластер AKS.
Подключение к кластеру
Настройте kubectl
подключение к кластеру az aks get-credentials
с помощью команды.
export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"
az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing
Проверьте подключение к кластеру kubectl get
с помощью команды.
kubectl get nodes
Выберите необходимые роли доверенного доступа
Выбранные роли зависят от служб Azure, к которым требуется получить доступ к кластеру AKS. Службы Azure помогают создавать роли и привязки ролей, которые создают подключение из службы Azure к AKS.
Чтобы найти необходимые роли, ознакомьтесь с документацией по службе Azure, к которой вы хотите подключиться к AKS. Вы также можете использовать Azure CLI для перечисления ролей, доступных для службы Azure с помощью az aks trustedaccess role list --location <location>
команды.
Создание привязки роли доверенного доступа
Убедившись, какую роль следует использовать, используйте Azure CLI для создания привязки роли доверенного доступа в кластере AKS. Привязка роли связывает выбранную роль со службой Azure.
export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"
az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}
Результаты.
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
"name": "${ROLE_BINDING_NAME}",
"provisioningState": "Succeeded",
"resourceGroup": "${RESOURCE_GROUP_NAME}",
"roles": [
"${ROLE_NAME_1}",
"${ROLE_NAME_2}"
],
"sourceResourceId": "${SOURCE_RESOURCE_ID}",
"systemData": null,
"type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}
Обновление существующей привязки роли доверенного доступа
Для существующей привязки роли, имеющей связанную исходную службу, можно обновить привязку роли с новыми az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4
ролями с помощью команды. Эта команда обновляет привязку роли с указанными вами новыми ролями.
Примечание.
Кластеры диспетчера надстроек обновляются каждые пять минут, поэтому новая привязка роли может занять до пяти минут. Прежде чем новая привязка роли вступает в силу, существующая привязка ролей по-прежнему работает.
Для проверки текущей az aks trusted access rolebinding list
привязки роли можно использовать команду.
Отображение привязки роли доверенного доступа
Отображение определенной привязки роли доверенного доступа с помощью az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
команды.
Перечисление всех привязок ролей доверенного доступа для кластера
Перечислить все привязки ролей доверенного доступа для кластера с помощью az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
команды.
Связанный контент
Azure Kubernetes Service