Настройка разрешений

Полный список наборов доступов, платформенных и кластерных разрешений.

Управление правами в платформе «Штурвал» осуществляется с помощью наборов доступов (permissions). На этой странице — полный список преднастроенных наборов, платформенных и кластерных разрешений, а также ролей в ArgoCD и прав доступа Kubeflow.


Уровни наборов доступов

Уровень Описание возможностей
Платформа Доступ ко всей платформе; к клиентским кластерам без доступа к кластеру управления; только к кластеру управления; к логам; к ArgoCD; к Kubeflow
Кластер Доступ к определённому клиентскому кластеру; к логам кластера; к инфраструктуре; к проектам ArgoCD и профилям Kubeflow кластера
Неймспейс Доступ к определённому неймспейсу; к проекту ArgoCD и профилю Kubeflow неймспейса

Обратите внимание! Изменение набора доступов изменит права всех пользователей и групп, которым он назначен. Если набор назначен хотя бы одному пользователю или группе, удалить его можно только после снятия всех назначений. Преднастроенные наборы недоступны для изменения или удаления — создайте новый набор при необходимости.

Примечание: Наборы доступов (Permissions) применяются только к пользователям и группам. Для ServiceAccounts используется отдельный механизм назначения прав (см. скриншот ниже).

Менеджер доступов — наборы разрешений


Платформенные разрешения

Платформенные разрешения управляют доступом к ресурсам, которыми управляет кластер управления.

Разрешение Полномочия Уровни Комментарий
access-map-get Просмотр назначенных ролей, дерева доступов Платформа
cluster-create Создание клиентских кластеров Платформа Дополнительно требует как минимум provider-get, provider-edit и ippool-get. Рекомендуется использовать набор platform-admin
permissions-edit Управление правами пользователей и групп в кластере управления Платформа
permissions-get Получение сведений о правах в кластере управления Платформа
platform-roles-edit Управление правами ServiceAccounts Платформа
platform-roles-get Получение сведений о правах ServiceAccounts Платформа
provider-edit Управление провайдерами инфраструктуры Платформа Рекомендуется совместно с ippool-get
provider-get Получение сведений о провайдерах Платформа Рекомендуется совместно с ippool-get
ippool-edit Управление пулами IP-адресов Платформа Рекомендуется совместно с ippool-get, provider-get, provider-edit
ippool-get Получение пулов IP-адресов Платформа Пулы назначаются в провайдер, поэтому рекомендуется совместно с provider-get, provider-edit
cluster-delete Удаление клиентских кластеров Платформа, Кластер
cluster-edit Аннотации, приостановка реконсиляции, информационные сообщения Платформа, Кластер Дополнительно требует как минимум cluster-get и cluster-info
cluster-get Получение кластера, информационного сообщения Платформа, Кластер, Неймспейс На уровне «Неймспейс» позволяет получить объекты кластера
cluster-info Получение информации о кластере Платформа, Кластер
cluster-infra-edit Управление узлами, машинами Платформа, Кластер
cluster-infra-get Получение сведений об узлах, машинах Платформа, Кластер
cluster-roles-edit Управление правами в кластере Платформа, Кластер
cluster-roles-get Получение сведений о правах в кластере Платформа, Кластер
namespace-roles-edit Управление правами в неймспейсах Платформа, Кластер, Неймспейс
namespace-roles-get Получение сведений о правах в неймспейсах Платформа, Кластер, Неймспейс
tenant-get Получение информации о тенанте Платформа, Кластер, Неймспейс Получить информацию о самом тенанте могут только пользователи с платформенными назначениями
tenant-edit Управление тенантами Платформа, Кластер Изменить информацию о самом тенанте могут только пользователи с платформенными назначениями

Кластерные разрешения

Задаются в формате YAML. Первая строка — API-группа. Пример полного доступа:

- apiGroups: ['*']
  resources: ['*']
  verbs: ['*']
- nonResourceURLs: ['*']
  verbs: ['*']

Роли в ArgoCD

Все роли доступны на любом уровне набора разрешений. Если роль ArgoCD задана в наборе уровня «Платформа», она назначается в каждом клиентском кластере. В кластере управления роль не создаётся.

Роль Разрешения в ArgoCD Описание
admin policyAppCreate, policyAppGet, policyAppUpdate, policyAppSync, policyAppDelete, policyAppSetCreate, policyAppSetGet, policyAppSetUpdate, policyAppSetDelete, policyExecCreate, policyLogsGet Полный доступ: создание проектов, приложений
edit policyAppCreate, policyAppGet, policyAppSync, policyAppSetCreate, policyAppSetGet Создание приложений, без изменения репозитория и удаления
view policyAppGet, policyAppSetGet Только чтение

Права доступа Kubeflow

Роль Разрешения Kubeflow Описание
kubeflow-admin Полный доступ к notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Argo Workflows, Spark/Training, TensorBoard/PVC, связанным Kubernetes-ресурсам, также управление roles/rolebindings, создание localsubjectaccessreviews и полный доступ к Knative-ресурсам Полное администрирование Kubeflow-окружения и связанных ресурсов, включая управление доступами
kubeflow-edit Создание, изменение, удаление и просмотр: notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Argo Workflows, Spark/Training, TensorBoard/PVC и связанных Kubernetes-ресурсов Работа с ML-ресурсами: запуск, изменение и удаление рабочих нагрузок, без администрирования-окружения и управления доступами
kubeflow-view Просмотр notebooks, pipelines, runs, jobs, experiments, KServe/Knative, Spark/Training, TensorBoard/PVC, pods, logs, статусов и событий; дополнительно создание visualizations и создание/удаление viewer Только чтение на Kubeflow-ресурсы
Иллюстрация: Права доступа Kubeflow

Менеджер доступов Kubeflow


Дефолтные наборы доступов

Иллюстрация: Дефолтные наборы доступов

Дефолтные наборы доступов

Уровень «Платформа»

Набор Назначение Описание Kubeflow ArgoCD
platform-admin Администратор платформы Полный доступ ко всем ресурсам платформы и кластеров kubeflow-admin admin
sec-platform-admin Администратор безопасности Управление назначениями на всех уровнях, ClusterIssuers; просмотр логов, сертификатов кластера, метрик, доступности сервисов, Issuers на уровне неймспейсов, сетевых политик Cilium и страниц раздела «Безопасность» (политики безопасности, отчёт о результатах сканирования, отчёт о нарушенных политиках, отчёт о найденных уязвимостях) kubeflow-view view
sec-platform-audit Аудитор основных объектов Просмотр страниц платформы и кластеров, кроме Secrets, NCI, SSC, Ingress Controllers kubeflow-view view
sec-platform-audit-full Аудитор всех объектов Просмотр всех страниц платформы и кластеров kubeflow-view view
tenant-role-binder Менеджер тенантных доступов Управление доступами в тенантах, просмотр тенантов, раздела «Управление доступом». Нет доступа к кластерам
tenant-role-viewer Аудитор тенантных доступов Просмотр доступов в тенантах, менеджера и дерева доступов. Нет доступа к кластерам

Уровень «Кластер»

Набор Назначение Описание Kubeflow ArgoCD
cluster-admin Администратор кластера Полный доступ к ресурсам выбранного кластера kubeflow-admin admin
cluster-admin-restricted Управление кластером Все ресурсы, кроме узлов, машин, тенантов и удаления кластера kubeflow-admin admin
sec-cluster-audit Аудитор основных объектов кластера Просмотр страниц кластера, кроме Secrets, NCI, SSC, Ingress Controllers kubeflow-view view
sec-cluster-audit-full Аудитор всех объектов кластера Просмотр всех страниц кластера kubeflow-view view
sec-security-report Просмотр отчётов по ИБ Доступ на уровне выбранного кластера к просмотру страниц раздела «Безопасность» (политики безопасности, отчёт о результатах сканирования, отчёт о нарушенных политиках, отчёт о найденных уязвимостях), событий и отчётов о нарушенных политиках и найденных уязвимостях во всех неймспейсах кластера

Уровень «Неймспейс»

Набор Назначение Описание Kubeflow ArgoCD
dev-basic Просмотр ресурсов Просмотр в выбранном неймспейсе разделов «Нагрузки», «Сеть», страниц PersistentVolumeClaims, Configmaps, Quotas. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях. Нет доступа к подресурсам, например pods/logs, pods/exec view
dev-debugger Поиск ошибок Просмотр отчёта о найденных уязвимостях, Pods выбранного неймспейса, чтение логов (pods/logs), пробрасывание портов (pods/portforward) и подключение к удалённому доступу (pods/exec)
dev-deployer Разворачивание приложения Управление ресурсами в разделах «Нагрузки» и «Сеть», на страницах PersistentVolumeClaims, Configmaps, Quotas. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях. Нет доступа к подресурсам, например pods/logs, pods/exec kubeflow-edit edit
edit Изменение ресурсов Изменение всех ресурсов в неймспейсе, включая подресурсы services/proxy, deployments/rollback, pods/attach, pods/exec, pods/portforward, pods/proxy, deployments/scale, replicasets/scale, statefulsets/scale, serviceaccounts/token. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях, логов (pods/log) kubeflow-edit edit
namespace-admin Администратор неймспейса Полный доступ к ресурсам неймспейса kubeflow-admin admin
ops-ns-manager Управление квотами Управление Quotas в неймспейсе
ops-role-manager Управление доступами ServiceAccounts и права доступа в неймспейсе
view Просмотр ресурсов Просмотр всех ресурсов в неймспейсе, кроме Secrets. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях, логов (pods/log) kubeflow-view view

Создание кастомного набора доступов

Пошаговая инструкция

  1. Перейдите в Управление доступомМенеджер доступов.
  2. Создайте набор, выберите уровень (Платформа, Кластер, Неймспейс).
  3. Задайте имя (обязательно, неизменяемо), описание, при необходимости роль Kubeflow и роль в ArgoCD.
  4. Добавьте кластерные разрешения (YAML) и/или платформенные разрешения.
  5. Сохраните. Набор станет доступен для назначения пользователям и группам (см. скриншот ниже).

Форма создания кастомного набора доступов

Платформенные и кластерные разрешения

Платформенные разрешения управляют доступом к ресурсам, которыми распоряжается кластер управления. Эти объекты хранятся в кластере управления, даже если назначение сделано на уровне «Кластер» или «Неймспейс»:

  • Объекты Cluster API: cluster.x-k8s.io, bootstrap.cluster.x-k8s.io, infrastructure.cluster.x-k8s.io (Cluster, Machine, KubeadmControlPlane и др.);
  • Объекты управления доступом: permissions.shturval.tech (UserRole, GroupRole, Permissions);
  • Провайдеры, пулы IP, тенанты и др.

Список платформенных разрешений — в таблице Платформенные разрешения выше.

Кластерные разрешения — это RBAC в формате Kubernetes. Они задают доступ к ресурсам клиентских кластеров (Pods, Deployments, Services, ConfigMaps и т.д.). Формат — стандартный для ClusterRole: apiGroups, resources, verbs, при необходимости nonResourceURLs. Кластерные разрешения из набора уровня «Платформа» применяются ко всем клиентским кластерам; из набора уровня «Кластер» — к выбранному кластеру; из набора уровня «Неймспейс» — к выбранному неймспейсу.

Можно создать набор только с ролью ArgoCD или только с ролью Kubeflow — тогда кластерные и платформенные разрешения оставьте пустыми.

Кастомные ресурсы под капотом

При создании кастомного набора доступов платформа создаёт ресурс Permissions (API-группа permissions.shturval.tech) в неймспейсе shturval-backend кластера управления. Архитектура оператора согласования прав и справочник полей CRD — в документе Оператор согласования прав (permissions operator). В ресурсе Permissions хранятся:

  • Имя набора;
  • Уровень (Платформа, Кластер, Неймспейс);
  • Список платформенных разрешений;
  • Кластерные разрешения (YAML);
  • роль Kubeflow (kubeflow-admin, kubeflow-edit, kubeflow-view);
  • Роль в ArgoCD (admin, edit, view).

При назначении набора пользователю или группе создаются UserRole или GroupRole — они ссылаются на один или несколько Permissions.

При синхронизации контроллер модуля управления доступом:

  1. Читает UserRole/GroupRole и связанные Permissions;
  2. Объединяет разрешения из всех назначенных наборов;
  3. Создаёт или обновляет в целевых кластерах:
    • ClusterRole — из кластерных разрешений набора;
    • RoleBinding — привязка ClusterRole к субъекту (пользователь или члены группы);
  4. При наличии роли Kubeflow — выдаёт пользователю или группе соответствующие права доступа к Kubeflow;
  5. При наличии роли ArgoCD — создаёт или обновляет роли в проектах ArgoCD.

Подробнее: Кастомные ресурсы для управления правами доступа, Как происходит назначение прав доступа.