Управление доступом на основе ролей в кластерах Kubernetes оператора Azure Nexus

В этой статье содержится комплексное руководство по управлению доступом к кластерам Nexus Kubernetes с помощью идентификатора Microsoft Entra. В частности, мы сосредоточимся на управлении доступом на основе ролей, что позволяет предоставлять разрешения пользователям на основе их ролей или обязанностей в организации.

Подготовка к работе

  1. Чтобы начать, создайте группу Microsoft Entra для администраторов кластера и назначьте им участников. Идентификатор Microsoft Entra позволяет предоставлять доступ к группе в целом, а не управлять разрешениями для каждого пользователя по отдельности.
  2. Используйте идентификатор группы, созданный в качестве значения для adminGroupObjectIds, при создании кластера Nexus Kubernetes, чтобы убедиться, что члены группы получают разрешения на управление кластером. Инструкции по созданию и доступу к кластеру Nexus Kubernetes см. в руководстве по краткому руководству по созданию и доступу к кластеру Nexus Kubernetes.

доступ Администратор istrator к кластеру

Nexus создает привязку роли кластера Kubernetes с ролью cluster-admin Kubernetes по умолчанию и группами Microsoft Entra, указанными как adminGroupObjectIds. Администраторы кластера имеют полный доступ к кластеру и могут выполнять все операции в кластере. Администраторы кластера также могут предоставить доступ другим пользователям, назначив их соответствующей группе Microsoft Entra.

Примечание.

При создании кластера Nexus Kubernetes Приложение Nexus автоматически создает управляемую группу ресурсов, выделенную для хранения ресурсов кластера, в этой группе устанавливается подключенный к Arc ресурс кластера.

Чтобы получить доступ к кластеру, необходимо настроить подключение kubeconfigкластера. После входа в Azure CLI с соответствующей сущностью Microsoft Entra вы можете получить необходимые kubeconfig сведения для взаимодействия с кластером из любого места, даже за пределами брандмауэра, который окружает его.

  1. Задать CLUSTER_NAMEи RESOURCE_GROUPSUBSCRIPTION_ID переменные.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Запрос управляемой группы ресурсов с 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)
    
  3. Следующая команда запускает прокси-сервер connectedk8s, который позволяет подключаться к серверу API Kubernetes для указанного кластера Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. С помощью kubectl отправьте запросы в кластер:

    kubectl get pods -A
    

    Теперь вы увидите ответ из кластера, содержащий список всех узлов.

Примечание.

Если появится сообщение об ошибке "Не удалось опубликовать маркер доступа к прокси-серверу клиента для подключения к MSI", может потребоваться выполнить az login повторную проверку подлинности с помощью Azure.

Управление доступом на основе ролей

Администратор может предоставить управление доступом на основе ролей в кластер, создав привязку ролей с идентификатором объекта группы Microsoft Entra. Для пользователей, которым нужны только разрешения представления, можно выполнить задачу, добавив их в группу Microsoft Entra, связанную с ролью представления.

  1. Создайте группу Microsoft Entra для пользователей, которым требуется доступ "view", ссылаясь на роль viewKubernetes по умолчанию. Эта роль является лишь примером, и при необходимости можно создать пользовательские роли и использовать их. Дополнительные сведения о ролях для пользователей в Kubernetes см. в официальной документации по ролям доступа на основе Kubernetes.

  2. Запишите идентификатор объекта группы Microsoft Entra, созданный при создании.

  3. Используйте команду 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.

  4. Убедитесь, что привязка роли была успешно создана.

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. Теперь пользователи в группе Microsoft Entra имеют доступ "view" к кластеру. Они могут получить доступ к кластеру, используя az connectedk8s proxy для просмотра ресурсов, но не могут вносить какие-либо изменения.

Следующие шаги

Вы можете дополнительно настроить управление доступом, создав пользовательские роли с определенными разрешениями. Создание этих ролей включает в себя собственные ресурсы RoleBinding или ClusterRoleBinding Kubernetes. Вы можете проверка официальную документацию Kubernetes по созданию дополнительных настраиваемых ролей и привязок ролей в соответствии с вашими требованиями.