Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется для: AKS на Azure Local
Администраторы инфраструктуры могут использовать управление доступом на основе ролей Azure (Azure RBAC) для управления доступом к файлу kubeconfig и разрешениям, которые у них есть. Операторы Kubernetes могут взаимодействовать с кластерами Kubernetes с помощью средства kubectl на основе заданных разрешений. Azure CLI позволяет легко получить учетные данные доступа и файл конфигурации kubeconfig для подключения к кластерам AKS с помощью kubectl.
При использовании интегрированной проверки подлинности между идентификатором Microsoft Entra и AKS можно использовать пользователей, групп или субъектов-служб Microsoft в качестве субъектов управления доступом на основе ролей Kubernetes (Kubernetes RBAC). Эта функция освобождает вас от необходимости отдельно управлять удостоверениями пользователей и учетными данными для Kubernetes. Однако вам по-прежнему необходимо настроить Azure RBAC и Kubernetes RBAC отдельно и управлять ими.
В этой статье описывается, как использовать авторизацию кластера Azure RBAC для Kubernetes с идентификатором Microsoft Entra и назначениями ролей Azure.
Обзор концептуального обзора см. в статье Azure RBAC для авторизации Kubernetes для AKS, включенной Azure Arc.
Перед тем как начать
Перед началом работы убедитесь, что у вас есть следующие предварительные требования:
AKS в Azure Local в настоящее время поддерживает включение Azure RBAC только во время создания кластера Kubernetes. После создания кластера Kubernetes невозможно включить Azure RBAC.
Вы можете включить Azure RBAC с помощью Azure CLI или портала Azure. Чтобы использовать Azure CLI, необходимо установить последние версии расширений aksarc и connectedk8s Azure CLI. Обратите внимание, что для включения Azure RBAC необходимо расширение aksarc версии 1.1.1 или более поздней. Выполните команду
az --version
, чтобы найти текущую версию. Если вам нужно установить или обновить Azure CLI, см. статью "Установка Azure CLI".az extension add --name aksarc az extension add --name connectedk8s
Если расширение уже установлено
aksarc
, обновите расширение до последней версии:az extension update --name aksarc az extension update --name connectedk8s
Для взаимодействия с кластерами Kubernetes необходимо установить kubectl и kubelogin.
Для включения Azure RBAC при создании кластера Kubernetes требуются следующие разрешения:
Чтобы создать кластер Kubernetes, требуется роль участника службы Azure Kubernetes Service Arc .
Чтобы использовать этот параметр
--enable-azure-rbac
, роль администратора управления доступом на основе ролей требуется для доступа к разрешению Microsoft.Authorization/roleAssignments/write.Чтобы назначить эти роли, используйте команду az role assignment create CLI или назначьте роли Azure с помощью Azure CLI:
az role assignment create --assignee <assignee-object-id> --role <role-name-or-id> --scope $ARM_ID
Новые назначения ролей могут занять до пяти минут для распространения и обновления сервером авторизации.
После включения Azure RBAC вы можете получить доступ к кластеру Kubernetes с заданными разрешениями с помощью прямого или прокси-режима.
- Чтобы получить прямой доступ к кластеру Kubernetes с помощью команды
az aksarc get-credentials
, вам потребуется разрешение Microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, которое входит в состав разрешений роли пользователь кластера Azure Kubernetes Service Arc. - Чтобы получить доступ к кластеру Kubernetes из любого места, используя режим прокси-сервера с помощью команды
az connectedk8s proxy
или портала Azure, вам потребуется действие Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, которое входит в разрешение роли пользователя кластера Kubernetes с поддержкой Azure Arc. Между тем необходимо убедиться, что агенты и компьютер, выполняющие процесс подключения, соответствуют требованиям сети, указанным в требованиях к сети с поддержкой Azure Arc Kubernetes.
- Чтобы получить прямой доступ к кластеру Kubernetes с помощью команды
Чтобы использовать kubectl, вы можете получить к нему доступ с помощью Azure RBAC или группы администрирования AAD.
- Чтобы использовать kubectl с Azure RBAC, вам потребуется роль Azure Arc Kubernetes Viewer, назначенная на подключенный ресурс кластера.
- Чтобы использовать kubectl с группой администраторов AAD, вам не нужна какая-либо конкретная роль, но необходимо убедиться, что вы являетесь членом одной из групп в списке add-admin-group подключенного ресурса кластера.
Шаг 1. Создание кластера Kubernetes с поддержкой Azure RBAC
Вы можете создать кластер Kubernetes с поддержкой Azure RBAC для авторизации и идентификатор Microsoft Entra для проверки подлинности.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --enable-azure-rbac
Через несколько минут команда завершается и возвращает информацию о кластере в формате JSON.
Шаг 2. Создание назначений ролей для пользователей для доступа к кластеру
AKS Arc предоставляет следующие пять встроенных ролей. Они похожи на встроенные роли Kubernetes с несколькими различиями, такими как поддержка CRD. См. полный список действий, разрешенных каждой встроенной ролью Azure.
Должность | Описание |
---|---|
Пользователь кластера Kubernetes с поддержкой Azure Arc | Позволяет получить файл kubeconfig, основанный на Cluster Connect, для управления кластерами из любого места. |
Зритель Kubernetes Azure Arc | Предоставляет доступ только для чтения, позволяя просматривать большинство объектов в пространстве имен. Не разрешает просмотр секретов, так как разрешение на чтение секретов обеспечивает доступ к учетным данным ServiceAccount в пространстве имен. Эти учетные данные, в свою очередь, через это значение ServiceAccount предоставляют доступ к API (форма эскалации привилегий). |
Автор Azure Arc Kubernetes | Разрешает доступ на чтение и запись к большинству объектов в пространстве имен. Не допускает просмотр или изменение ролей или привязок ролей. Однако эта роль позволяет получать доступ к секретам и запускать модули как любое значение ServiceAccount в пространстве имен, поэтому её можно использовать для получения уровней доступа API любого такого значения ServiceAccount в пространстве имен. |
Администратор Azure Arc Kubernetes | Разрешает административный доступ. Он предназначен для использования в пространстве имен с помощью RoleBinding. Если он используется в RoleBinding, он разрешает доступ на чтение и запись к большинству ресурсов в пространстве имен, включая возможность создавать роли и привязки ролей в пространстве имен. Эта роль не предоставляет права записи ни к квоте ресурса, ни к самому пространству имен. |
Администратор кластера Kubernetes Azure Arc | Предоставляет суперпользователю доступ к выполнению любого действия в отношении любого ресурса. При использовании в ClusterRoleBinding он обеспечивает полный контроль над каждым ресурсом в кластере и во всех пространствах имен. При использовании в RoleBinding он обеспечивает полный контроль над каждым ресурсом в пространстве имен привязки роли, включая само пространство имен. |
Вы можете использовать az role assignment create
команду для создания назначений ролей.
Сначала получите $ARM-ID
целевой кластер, которому нужно назначить роль.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Затем используйте az role assignment create
команду, чтобы назначить роли кластеру Kubernetes. Необходимо предоставить $ARM_ID
из первого шага и assignee-object-id
для этого шага. Это assignee-object-id
может быть идентификатор Microsoft Entra или идентификатор клиента сервисного принципала.
В следующем примере роль Средства просмотра Azure Arc Kubernetes назначается кластеру Kubernetes :
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
В этом примере область — это идентификатор Azure Resource Manager кластера. Это также может быть группа ресурсов, содержащая кластер Kubernetes.
Создание определений настраиваемой роли
Вы можете создать собственное определение роли для использования в назначениях ролей.
В следующем примере показано определение роли, позволяющее пользователю читать только развертывания. Дополнительные сведения см. в полном списке действий с данными, которые можно использовать для создания определения роли. Дополнительные сведения о создании настраиваемой роли см. в разделе "Действия по созданию настраиваемой роли"
Чтобы создать собственные определения пользовательских ролей, скопируйте следующий объект JSON в файл с именем custom-role.json. Замените заполнитель <subscription-id>
фактическим идентификатором подписки. Настраиваемая роль использует одно из действий с данными и позволяет просматривать все развертывания в области (кластере или пространстве имен), в которой создается назначение роли.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Сведения о пользовательских ролях и их создании см. в статье о пользовательских ролях Azure.
Создайте определение роли, используя команду az role definition create
, установив параметр --role-definition
к файлу deploy-view.json, созданному на предыдущем шаге.
az role definition create --role-definition @deploy-view.json
Назначьте определение роли пользователю или другому удостоверению с помощью az role assignment create
команды:
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Шаг 3. Доступ к кластеру Kubernetes
Теперь вы можете получить доступ к кластеру Kubernetes с заданными разрешениями с помощью прямого или прокси-режима.
Доступ к кластеру с помощью kubectl (прямой режим)
Чтобы получить доступ к кластеру Kubernetes с заданными разрешениями, оператору Kubernetes необходим Microsoft Entra kubeconfig, который можно получить с помощью команды az aksarc get-credentials
. Эта команда предоставляет доступ как к администраторской версии kubeconfig, так и к пользовательской версии kubeconfig. Администраторский файл kubeconfig содержит секреты и должен безопасно храниться и периодически обновляться. С другой стороны, пользовательский идентификатор Microsoft Entra ID kubeconfig не содержит секреты и может распространяться пользователям, подключающимся с клиентских компьютеров.
Чтобы выполнить эту команду Azure CLI, вам потребуется разрешение microsoft.HybridContainerService/provisionedClusterInstances/listUserKubeconfig/action, которое входит в разрешение роли пользователя кластера Azure Kubernetes Service Arc :
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
Теперь вы можете использовать kubectl для управления кластером. Например, можно перечислить узлы в кластере с помощью kubectl get nodes
. При первом запуске необходимо выполнить вход, как показано в следующем примере:
kubectl get nodes
Доступ к кластеру с клиентского устройства (режим прокси-сервера)
Чтобы получить доступ к кластеру Kubernetes из любой точки в режиме прокси с помощью команды az connectedk8s proxy
, вам необходимо разрешение Microsoft.Kubernetes/connectedClusters/listClusterUserCredential/action, которое включено в разрешение роли Пользователя кластера Kubernetes с поддержкой Azure Arc.
Выполните следующие действия на другом клиентском устройстве:
Вход с помощью проверки подлинности Microsoft Entra
Получите kubeconfig, необходимый для связи с кластером из любого места (даже вне брандмауэра, окружающего кластер).
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Замечание
Эта команда открывает прокси-сервер и блокирует текущую оболочку.
В другом сеансе оболочки используйте
kubectl
для отправки запросов в кластер.kubectl get pods -A
Теперь вы должны увидеть ответ от кластера, содержащий список всех подов в пространстве имен default
.
Дополнительные сведения см. в разделе "Доступ к кластеру" с клиентского устройства.
Очистите ресурсы
Удаление назначения роли
# List role assignments
az role assignment list --scope $ARM_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Удаление определения роли
az role definition delete -n "AKS Arc Deployment Reader"
Дальнейшие шаги
- Управление доступом на основе ролей в Azure (Azure RBAC).
- Опции доступа и удостоверения для AKS на платформе Azure Arc
- Создание сервисного принципала Azure с помощью Azure CLI
- Доступные разрешения Azure для гибридной и многооблачной среды