Управление доступом на основе ролей в кластерах Kubernetes оператора Azure Nexus
В этой статье содержится комплексное руководство по управлению доступом к кластерам Nexus Kubernetes с помощью идентификатора Microsoft Entra. В частности, мы сосредоточимся на управлении доступом на основе ролей, что позволяет предоставлять разрешения пользователям на основе их ролей или обязанностей в организации.
Подготовка к работе
- Чтобы начать, создайте группу Microsoft Entra для администраторов кластера и назначьте им участников. Идентификатор Microsoft Entra позволяет предоставлять доступ к группе в целом, а не управлять разрешениями для каждого пользователя по отдельности.
- Используйте идентификатор группы, созданный в качестве значения для adminGroupObjectIds, при создании кластера Nexus Kubernetes, чтобы убедиться, что члены группы получают разрешения на управление кластером. Инструкции по созданию и доступу к кластеру Nexus Kubernetes см. в руководстве по краткому руководству по созданию и доступу к кластеру Nexus Kubernetes.
Доступ администратора к кластеру
Nexus создает привязку роли кластера Kubernetes с ролью cluster-admin
Kubernetes по умолчанию и группами Microsoft Entra, указанными как adminGroupObjectIds
. Администраторы кластера имеют полный доступ к кластеру и могут выполнять все операции в кластере. Администраторы кластера также могут предоставить доступ другим пользователям, назначив их соответствующей группе Microsoft Entra.
Примечание.
При создании кластера Nexus Kubernetes Приложение Nexus автоматически создает управляемую группу ресурсов, выделенную для хранения ресурсов кластера, в этой группе устанавливается подключенный к Arc ресурс кластера.
Чтобы получить доступ к кластеру, необходимо настроить подключение kubeconfig
кластера. После входа в Azure CLI с соответствующей сущностью Microsoft Entra вы можете получить необходимые kubeconfig
сведения для взаимодействия с кластером из любого места, даже за пределами брандмауэра, который окружает его.
Задать
CLUSTER_NAME
иRESOURCE_GROUP
SUBSCRIPTION_ID
переменные.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Запрос управляемой группы ресурсов с
az
помощью и хранения вMANAGED_RESOURCE_GROUP
az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
Следующая команда запускает прокси-сервер connectedk8s, который позволяет подключаться к серверу API Kubernetes для указанного кластера Nexus Kubernetes.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
С помощью
kubectl
отправьте запросы в кластер:kubectl get pods -A
Теперь вы увидите ответ из кластера, содержащий список всех узлов.
Примечание.
Если появится сообщение об ошибке "Не удалось опубликовать маркер доступа к прокси-серверу клиента для подключения к MSI", может потребоваться выполнить az login
повторную проверку подлинности с помощью Azure.
Управление доступом на основе ролей
Администратор может предоставить управление доступом на основе ролей в кластер, создав привязку ролей с идентификатором объекта группы Microsoft Entra. Для пользователей, которым нужны только разрешения представления, можно выполнить задачу, добавив их в группу Microsoft Entra, связанную с ролью представления.
Создайте группу Microsoft Entra для пользователей, которым требуется доступ "view", ссылаясь на роль
view
Kubernetes по умолчанию. Эта роль является лишь примером, и при необходимости можно создать пользовательские роли и использовать их. Дополнительные сведения о ролях для пользователей в Kubernetes см. в официальной документации по ролям доступа на основе Kubernetes.Запишите идентификатор объекта группы Microsoft Entra, созданный при создании.
Используйте команду kubectl, чтобы создать clusterrolebinding с ролью view и связать ее с группой Microsoft Entra. Замените
AZURE_AD_GROUP_OBJECT_ID
идентификатором объекта группы Microsoft Entra.kubectl create clusterrolebinding nexus-read-only-users --clusterrole view --group=AZURE_AD_GROUP_OBJECT_ID
Эта команда создает привязку роли кластера с именем
nexus-read-only-users
, которая назначаетview
роль членам указанной группы Microsoft Entra.Убедитесь, что привязка роли была успешно создана.
kubectl get clusterrolebinding nexus-read-only-users
Теперь пользователи в группе Microsoft Entra имеют доступ "view" к кластеру. Они могут получить доступ к кластеру, используя
az connectedk8s proxy
для просмотра ресурсов, но не могут вносить какие-либо изменения.
Следующие шаги
Вы можете дополнительно настроить управление доступом, создав пользовательские роли с определенными разрешениями. Создание этих ролей включает в себя собственные ресурсы RoleBinding или ClusterRoleBinding Kubernetes. Вы можете проверить официальную документацию Kubernetes, чтобы получить подробные рекомендации по созданию дополнительных настраиваемых ролей и привязок ролей в соответствии с вашими требованиями.