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

- найдите набор доступов
dev-debuggerи откройте страницу просмотра разрешений набора доступов.
Скриншот интерфейса платформы

Кластерные разрешения набора доступов 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
событиям объектов неймспейса в кластере
- apiGroups:
- events.k8s.io/v1
resources:
- events
verbs:
- get # Получение событий
- list # Получение списка событий
- watch # Просмотр событий
Скриншот интерфейса платформы


Набор доступов 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
- В графическом интерфейсе перейдите на страницу Управление доступом раздела Администрирование.
Скриншот интерфейса платформы

- На вкладке Неймспейс страницы Управление доступом добавьте пользователя или перейдите на страницу Назначение прав доступа пользователя из списка.
На странице Назначение прав доступа:
- укажите имя, если добавляете пользователя;
- выберите из списка набор доступов
dev-debugger.
Скриншот интерфейса платформы

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


- Сконфигурируйте набор доступов:
- На вкладке Кластерные разрешения укажите правила (rules) в формате YAML, содержащие API-группу (apiGroups), глаголы (verbs) и ресурсы (resources), к которым назначаются права.
Rules — иллюстрация
В правилах (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
Скриншот интерфейса платформы

- На вкладке Платформенные разрешения выберите разрешение на получение доступа к кластеру
cluster-get.
Скриншот интерфейса платформы

Добавьте новый набор доступов в платформу, нажав Сохранить.
- Перейдите на страницу Управление доступом раздела Администрирование в кластере или неймспейсе.
Скриншот интерфейса платформы

- На вкладке Неймспейс страницы Управление доступом добавьте пользователя или перейдите на страницу Назначение прав доступа пользователя из списка.
На странице Назначение прав доступа:
- укажите имя, если добавляете пользователя;
- выберите из списка созданный набор доступов
debug.
Скриншот интерфейса платформы

- Сохраните назначение набора доступов пользователю.
Скриншот интерфейса платформы

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