Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется для: 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.
Установите последнюю версию расширений aksarc и connectedk8s Azure CLI. Обратите внимание, что для включения Azure RBAC необходимо запустить расширение aksarc версии 1.1.1 или более поздней. Run
az --version
to find the current 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
To interact with Kubernetes clusters, you must install kubectl and 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 для гибридной и многооблачной среды