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

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

Управление правами в платформе «Штурвал» осуществляется с помощью наборов доступов (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Описание
adminpolicyAppCreate, policyAppGet, policyAppUpdate, policyAppSync, policyAppDelete, policyAppSetCreate, policyAppSetGet, policyAppSetUpdate, policyAppSetDelete, policyExecCreate, policyLogsGetПолный доступ: создание проектов, приложений
editpolicyAppCreate, policyAppGet, policyAppSync, policyAppSetCreate, policyAppSetGetСоздание приложений, без изменения репозитория и удаления
viewpolicyAppGet, 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


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

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

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

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

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

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

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

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

НаборНазначениеОписаниеKubeflowArgoCD
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/execkubeflow-editedit
editИзменение ресурсовИзменение всех ресурсов в неймспейсе, включая подресурсы services/proxy, deployments/rollback, pods/attach, pods/exec, pods/portforward, pods/proxy, deployments/scale, replicasets/scale, statefulsets/scale, serviceaccounts/token. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях, логов (pods/log)kubeflow-editedit
namespace-adminАдминистратор неймспейсаПолный доступ к ресурсам неймспейсаkubeflow-adminadmin
ops-ns-managerУправление квотамиУправление Quotas в неймспейсе——
ops-role-managerУправление доступамиServiceAccounts и права доступа в неймспейсе——
viewПросмотр ресурсовПросмотр всех ресурсов в неймспейсе, кроме Secrets. Доступен просмотр событий, отчёта о сработавших политиках безопасности и найденных уязвимостях, логов (pods/log)kubeflow-viewview

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

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

  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.

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