Получение безопасного доступа к ресурсам 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-адресов.

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

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

Настройте 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 команды.