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


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

В этой статье показано, как с помощью доверенного доступа получить безопасный доступ для служб Azure к серверу API Kubernetes в службе Azure Kubernetes Service (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"
}

Примечание.

В кластере AKS можно создать до 8 привязок доверенных ролей доступа.

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

Для существующей привязки роли, имеющей связанную исходную службу, вы можете обновить привязку роли, добавив новые роли, с помощью команды 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 команды.