Как выделить роль для отладки
Если в кластере возникла проблема, для решения которой требуется повышение полномочий пользователя (например, не стартует или часто перезапускается под без видимой причины), можно назначить пользователю временную роль (набор доступов).
Для повышения полномочий необходимо присвоить дополнительную роль (набор доступов), обладающую бо́льшим количеством разрешений. Например, пользователь имеет системный набор доступов dev-basic, позволяющий только просматривать объекты нагрузок. Для решения проблемы требуется повышение полномочий до уровня внесения изменений в объекты нагрузок. Для этого можно:
- временно назначить системный набор доступов dev-debugger;
- временно назначить кастомный набор доступов;
- удалить назначение набора доступов после решения проблемы.
Назначение дополнительного временного набора доступов позволит оперативно выделить, а после решения проблемы ‒ ограничить полномочия. Рекомендуется выделение нового набора доступов, т.к. изменение существующего набора доступов приводит к изменению прав доступа всех пользователей и групп, которым он назначен.
Создавать и изменять состав разрешений наборов доступов может администратор Комплекса. Выполнить назначение ролей (наборов доступов) может пользователь с правами на управление ролями кластера или неймспейса.
Полномочия на примере системного набора доступов dev-debugger
В платформе набор доступов dev-debugger предоставляет права пользователю для отладки работы нагрузок. Можно ознакомиться с полным списком разрешений набора доступов.
Для этого в графическом интерфейсе Комплекса нужно:
- перейти на страницу "Менеджер доступов" (рисунок 31);

Рисунок 31 ‒ Страница "Менеджер доступов"
- найти набор доступов dev-debugger и открыть страницу просмотра разрешений набора доступов (рисунок 32).

Рисунок 32 ‒ Страница просмотра разрешений набора доступов
Кластерные разрешения набора доступов dev-debugger позволяют обеспечить пользователю доступ к:
- неймспейсу и его статусу;
- списку событий, связанных с объектами нейсмпейсов;
Rules:
- apiGroups:
‒ "
resources:
‒ namespaces
verbs:
‒ get # Получение неймспейсов
‒ list # Получение списка неймспейсов
‒ watch # Просмотр неймспейсов
- apiGroups:
‒ "
resources:
‒ namespaces/status
‒ events
verbs:
‒ get # Получение статусов неймспейсов и событий
‒ list # Получение списка статусов неймспейсов и событий
‒ watch # Просмотр статуса неймспейсов и событий
- получению списка подов;
- извлечению логов из контейнеров пода;
- просмотру конфигурации подов неймспейса;
Rules:
- apiGroups:
‒ "
resources:
‒ pods
‒ pods/log
verbs:
‒ get # Получение подов, логов подов
‒ list # Получение списка подов, логов подов
- созданию защищённого туннеля между локальным компьютером и подом;
- действию для выполнения команд в контейнере пода;
Rules:
- apiGroups:
‒ "
resources:
‒ pods/portforward
‒ pods/exec
verbs:
‒ create # Создание защищённого туннеля между локальным компьютером и подом
‒ get # Доступ к выполнению команд в контейнере пода
- получению и просмотру отчетов по результатам аудита конфигурации ("ConfigAuditReport");
- получению и просмотру отчетов по результатам сканирования образов контейнеров на уязвимости ("Vulnerabilityreports");
- получению и просмотру отчетов о нарушенных политиках безопасности, агрегированных по пространству имен ("Policyreports", "Сlusterpolicyreports");
- получению и просмотру промежуточных отчетов Kyverno, которые создаются во время сканирования ресурса ("Admissionreports", "Clusteradmissionreports"), в фоновом режиме ("Backgroundscanreports", "Clusterbackgroundscanreports") и используются для формирования отчетов о нарушенных политиках безопасности;
Rules:
- apiGroups:
‒ aquasecurity.github.io
resources:
‒ configauditreports
verbs:
‒ get
‒ list
‒ watch
- apiGroups:
‒ aquasecurity.github.io
resources:
‒ vulnerabilityreports
verbs:
‒ get
‒ list
‒ watch
- apiGroups:
‒ wgpolicyk8s.io
resources:
‒ policyreports
‒ clusterpolicyreports
verbs:
‒ get
‒ list
‒ watch
- apiGroups:
‒ kyverno.io
resources:
‒ admissionreports
‒ clusteradmissionreports
‒ backgroundscanreports
‒ clusterbackgroundscanreports
verbs:
‒ get
‒ list
‒ watch
- событиям объектов неймспейса в кластере (рисунок 33):
- apiGroups:
‒ events.k8s.io/v1
resources:
‒ events
verbs:
‒ get # Получение событий
‒ list # Получение списка событий
‒ watch # Просмотр событий

Рисунок 33 ‒ События объектов неймспейса в кластере
Набор доступов dev-debugger содержит платформенное разрешение "cluster-get", необходимое для предоставления права на доступ к кластеру. Это разрешение позволяет в графическом интерфейсе запросить объекты внутри кластера, например неймспейс кластера.
Платформенное разрешение "cluster-get" набора доступов dev-debugger:
rules:
‒ verbs:
‒ get # Получение кластера
apiGroups:
‒ cluster.x-k8s.io
resources:
‒ clusters
‒ verbs:
‒ get # Получение неймспейса
‒ list # Получение списка неймспейса
apiGroups:
‒ ''
resources:
‒ namespaces
Если набор доступов содержит избыточные или недостающие разрешения, можно создать кастомный набор доступов.
Назначение роли (набора доступов) на примере dev-debugger
Для назначения роли (набора доступов) необходимо выполнить следующие шаги:
- в графическом интерфейсе перейти на страницу "Управление доступом" раздела "Администрирование" (рисунок 34).

Рисунок 34 ‒ Cтраница "Управление доступом"
- на вкладке "Неймспейс" страницы "Управление доступом" добавить пользователя или перейти на страницу "Назначение прав доступа" пользователя из списка.
На странице "Назначение прав доступа" (рисунок 35):
- указать имя, если добавляется пользователь;
- выбрать из списка набор доступов dev-debugger.

Рисунок 35 ‒ Страница "Назначение прав доступа"
- сохранить назначение роли (набора доступов) пользователю.
Пример создания и назначения кастомного набора доступов
Предположим, вам необходимо предоставить меньше прав пользователю, чем в системном наборе доступов dev-debugger. Чтобы создать кастомный набор доступов, нужно:
- в платформе на странице "Менеджер доступов" раздела "Управление доступом" создать набор доступов уровня "Неймспейс", например, с именем "debug" (рисунки 36‒37).

Рисунок 36 ‒ Набор доступов "debug"

Рисунок 37 ‒ Создание набора доступов
- сконфигурировать набор доступов:
- На вкладке "Кластерные разрешения" (рисунок 38) указать правила ("rules") в формате YAML, содержащие API-группу ("apiGroups"), глаголы ("verbs") и ресурсы ("resources"), к которым назначаются права.
В правилах ("rules"):
- добавить API-группу и список ресурсов "namespaces", "events" для обеспечения доступа пользователю к неймспейсу кластера и к событиям объектов неймспейса.
- добавить API-группу и список ресурсов "pods", "pods/log". Тем самым будет обеспечен доступ пользователю к подам и логам подов в неймспейсе кластера;
- указать действия
get,listв "verb" для просмотра конфигурации пода, получения списка подов и для извлечения логов из контейнеров пода; - добавить API-группу со списком ресурсов "pods/exec". Это обеспечит пользователя правами для выполнения команд в контейнере пода;
- установить действия для выполнения команд в контейнере пода
create,get.
- apiGroups:
‒ "
resources:
‒ namespaces
‒ events
verbs:
‒ get
‒ list
‒ watch
- apiGroups:
‒ "
resources:
‒ pods
‒ pods/log
verbs:
‒ get
‒ list
- apiGroups:
‒ "
resources:
‒ pods/exec
verbs:
‒ create
‒ get

Рисунок 38 ‒ Вкладка "Кластерные разрешения"
- на вкладке "Платформенные разрешения" выбрать разрешение на получение доступа к кластеру "cluster-get" (рисунок 39);

Рисунок 39 ‒ Вкладка "Платформенные разрешения"
- добавить новый набор доступов в Комплекс, нажав
Сохранить;
- перейти на страницу "Управление доступом" раздела "Администрирование" в кластере или неймспейсе (рисунок 40);

Рисунок 40 ‒ Страница "Управление доступом"
- на вкладке "Неймспейс" страницы "Управление доступом" добавить пользователя или перейти на страницу "Назначение прав доступа" пользователя из списка;
- на странице "Назначение прав доступа" (рисунок 41):
- указать имя, если добавляется пользователь;
- выбрать из списка созданный набор доступов debug;

Рисунок 41 ‒ Страница "Назначение прав доступа"
- сохранить назначение набора доступов пользователю (рисунок 42).

Рисунок 42 ‒ Сохранение назначения набора доступов
В результате назначения набора доступов debug пользователю будут предоставлены:
- доступ к подам неймспейса кластера;
- доступ к логам контейнеров подов неймспейса в кластере;
- права для выполнения команд в контейнере пода;
- доступ к событиям объектов неймспейса.