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