Выделить роль для дебага

Если в кластере возникла проблема, для решения которой требуется повышение полномочий пользователя (например, не стартует или часто перезапускается под без видимой причины), вы можете назначить пользователю временную роль (набор доступов).

Для повышения полномочий необходимо присвоить дополнительную роль (набор доступов), обладающую большим количеством разрешений. Например, пользователь имеет системный набор доступов dev-basic, позволяющий только просматривать объекты нагрузок. Для решения проблемы требуется повышение полномочий до уровня внесения изменений в объекты нагрузок. Для этого вы можете:

  • временно назначить системный набор доступов dev-debugger;
  • временно назначить кастомный набор доступов.
  • удалить назначение набора доступов после решения проблемы.

Назначение дополнительного временного набора доступов позволит оперативно выделить, а после решения проблемы ограничить полномочия. Рекомендуется выделение нового набора доступов, т.к. изменение существующего набора доступов приводит к изменению прав доступа всех пользователей и групп, которым он назначен.

Создавать и изменять состав разрешений наборов доступов может администратор платформы “Штурвал”. Выполнить назначение ролей (наборов доступов) может пользователь с правами на управление ролями кластера или неймспейса.

Полномочия на примере системного набора доступов dev-debugger

В платформе “Штурвал” набор доступов dev-debugger предоставляет права пользователю для отладки работы нагрузок. Вы можете ознакомиться с полным списком разрешений набора доступов.

Для этого в графическом интерфейсе платформы:

  • перейдите на страницу Менеджер доступов;
Скриншот

accessmanager1

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

accessmanager2

Кластерные разрешения набора доступов 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 # Просмотр событий
Скриншот

devdebugger9 devdebugger8

Набор доступов 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

  1. В графическом интерфейсе перейдите на страницу Управление доступом раздела Администрирование.
Скриншот

roles1

  1. На вкладке Неймспейс страницы Управление доступом добавьте пользователя или перейдите на страницу Назначение прав доступа пользователя из списка.

На странице Назначение прав доступа:

  • укажите имя, если добавляете пользователя;
  • выберите из списка набор доступов dev-debugger.
Скриншот

devdebugger11

  1. Сохраните назначение роли (набора доступов) пользователю.

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

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

  1. В платформе на странице Менеджер доступов раздела Управление доступом создайте набор доступов уровня Неймспейс, например, с именем debug.
Скриншот

debugadd1 debugcreated

  1. Сконфигурируйте набор доступов:
  • На вкладке Кластерные разрешения укажите правила (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
Скриншот

debugclusterperm4

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

debugclusterperm1

Добавьте новый набор доступов в платформу, нажав Сохранить.

  1. Перейдите на страницу Управление доступом раздела Администрирование в кластере или неймспейсе.
Скриншот

roles1

  1. На вкладке Неймспейс страницы Управление доступом добавьте пользователя или перейдите на страницу Назначение прав доступа пользователя из списка.

На странице Назначение прав доступа:

  • укажите имя, если добавляете пользователя;
  • выберите из списка созданный набор доступов debug.
Скриншот

roleuser2

  1. Сохраните назначение набора доступов пользователю.
Скриншот

createrole2

В результате назначения набора доступов debug пользователю предоставлено:

  • доступ к подам неймспейса кластера;
  • доступ к логам контейнеров подов неймспейса в кластере;
  • права для выполнения команд в контейнере пода;
  • доступ к событиям объектов неймспейса.
×