Описание
Для управления доступом используется модель RBAC (Role-Based Access Control) - это модель, основанная на ролях пользователей. Вместо того, чтобы каждый пользователь получал индивидуальный набор прав, права доступа группируются в роли и пользователи получают доступ на основе своих ролей.
Принцип работы RBAC
- Определение ролей: Определяются роли, соответствующие различным обязанностям и функциям в системе.
 - Определение прав для ролей: Определяются права, которые должны быть предоставлены каждой роли.
 - Назначение ролей пользователям: Пользователям назначаются роли, соответствующие их обязанностям и функциям.
 - Контроль доступа: Система использует ролевую модель для контроля доступа к ресурсам, основываясь на назначенных ролях пользователей.
 
Глоссарий
- Пользователи - учетные записи пользователей в базе Deckhouse Commander.
 - Группы - учетные записи групп в базе Deckhouse Commander.
 - Роли — задают перечень разрешённых действий над определёнными типами ресурсов.
 - Назначения — связывают роли с пользователями или группами.
 - Ресурсы - объекты Deckhouse Commander к которым возможно применение прав доступа
 - Права - описывают конкретные действия, которые могут быть выполнены над ресурсами.
 
Поддерживаемые ресурсы Deckhouse Commander
users- Пользователиgroups- Группыglobalroles- Глобальные ролиglobalrolebindings- Глобальные назначенияworkspaces- Рабочие пространстваworkspaceroles- Роли рабочих пространствworkspacerolebindings- Назначения рабочих пространствclusters- Кластерыclustertemplates- Шаблоны кластеровauthtokens- Токеныcatalogs- Инвентарь
Только просмотр
workspaceroles/audit- История изменений ролей рабочих пространствworkspacerolebindings/audit- История изменений назначений рабочих пространствclusters/audit- История изменений кластеровclustertemplates/audit- История изменений шаблоновauthtokens/audit- История изменений токеновcatalogs/audit- История изменений инвентаря
Роли и назначения
Глобальные роли и назначения действуют на глобальном уровне для всех ресурсов Deckhouse Commander, а Kubernetes ресурсы создаются во всех кластерах под управлением Deckhouse Commander. Для каждой роли формируется ClusterRole с заданными правилами Kubernetes и для каждого назначения роли формируется ClusterRoleBinding.
Ресурсы транслируются с префиксом d8:commander:. Например, роль viewer будет создана во всех кластерах как ClusterRole/d8:commander:viewer. Это же правило работает для назначения прав и соответствующего ресурса ClusterRoleBinding.
Роли и назначения рабочего пространства (РП) действуют на уровне конкретного РП, а Kubernetes ресурсы создаются во всех кластерах данного РП. Для каждой роли формируется ClusterRole с заданными правилами Kubernetes и для каждого назначения роли формируется ClusterRoleBinding.
Ресурсы уровня РП транслируются с префиксом d8:commander:workspace:, например роль viewer будет создана во всех кластерах РП как ClusterRole/d8:commander:workspace:viewer. Это же правило работает для назначения прав в РП и соответствующего ресурса ClusterRoleBinding.
В кластерах создается специальная группа ресурсов «Права доступа», которая автоматически заполнена актуальными ролями и назначениями (как глобальными, так и в рамках РП). Эти манифесты — ClusterRole и ClusterRoleBinding — актуализируются в кластерах с помощью агента (модуль commander-agent). Все назначения, изменения и удаления прав в кластерах актуализируются автоматически.
Интерфейс платформы (Кластер → вкладка «Администрирование») подстраивается под права пользователя в этом кластере.
Пользовательский интерфейс
Панель настройки глобальных прав
На данную страницу можно попасть из панели рабочих пространств (/workspaces) выбрав пункт меню “Пользователи и права” в “шапке”
- Вкладка “Пользователи” - просмотр списка пользователей и их групп, зарегистрированных в Deckhouse Commander
 - Вкладка “Группы” - просмотр списка групп и их членов, зарегистрированных в Deckhouse Commander
 - Вкладка “Роли” - управление ролями
 - Вкладка “Назначения” - управление назначениями
 
Панель настройки прав рабочего пространства
На данную страницу можно попасть выбрав пункта меню “Пользователи и права” в “шапке” внутри рабочего пространства
Содержимое аналогично панели настройки глобальных прав, но для пользователей и групп РП.
Конфигурация
Требования для работы прав доступа в Deckhouse Commander
- Настроенная интеграция с внешним IdP через dex-provider.
 - Роль и назначение1 для пользователя или группы созданное в интерфейсе Deckhouse Commander.
 - Пользователь, входящий в систему через Dex.
 
Назначение временных администраторов для настройки прав доступа
В версии 1.12, управление правами доступа включено по умолчанию. Пользователем необходимо назначить полномочия в ходе первичной настройки прав доступа.
Для первоначальной настройки, а также для случаев когда полномочия администратора были утрачены, предусмотрена возможность назначения временных администраторов.
Создайте ConfigMap commander-admins в неймспейсе d8-commander, указав пользователей и группы, которым требуется временный административный доступ:
apiVersion: v1
kind: ConfigMap
metadata:
  name: commander-admins
  namespace: d8-commander
data:
  users: |
    john.doe@example.com
    jane.doe@example.com
  groups: |
    Enterprise Admins
    Administrators
Пользователи и участники групп указанных выше получат максимальные права в интерфейсе Deckhouse Commander. После этого можно переходить к настройке прав доступа через веб-интерфейс.
Внимание! После завершения настройки необходимых ролей и назначений, ConfigMap commander-admins, а также глобальную роль autogenerated-commander-admin и глобальное назначение autogenerated-commander-admins необходимо удалить. После удаления временный доступ будет отозван и в силу вступят только вручную выданные полномочия.
Настройка прав доступа в веб-интерфейсе Deckhouse Commander
Прежде чем продолжать, убедитесь, что в текущей установке Deckhouse Commander включена поддержка прав доступа, а также используется учетная запись администратора. Для настройки прав доступа необходимо выполнить следующие шаги:
- Открыть панель настройки прав
 - Перейти на вкладку “Роли” и создать роль
- Нажать на кнопку “Добавить глобальную роль”
 - Задать уникальное имя роли и комментарий
 - Нажать на кнопку “Добавить правило Commander”
 - Указать права и ресурсы
 - При необходимости можно создать несколько правил
 - Нажать кнопку сохранить
 
 - Перейти на вкладку “Назначения” и создать назначение
- Нажать на кнопку “Добавить глобальное назначение”
 - Задать имя или включить переключатель “Генерировать из роли”. В этом случае для генерации имени будет использовано имя роли и случайный набор букв
 - Выбрать роль
 - Выбрать пользователей или группы. Если пользователь или группа еще не существуют в Deckhouse Commander, можно указать их вручную в формате 
user:<login>/group:<name>. - Нажать кнопку “Сохранить”
 
 
Права применены.
Отключение поддержки RBAC в Deckhouse Commander
В версии 1.12 можно отключать управление правами без потери поведения по умолчанию (с ограничениями на права). Однако, в будущих версиях поддержка управления правами станет постоянной и не будет отключаться. Если выключить управление доступом, то все пользователи и группы, которые ранее использовали Deckhouse Commander, автоматически станут администраторами и получат максимальные права.
Чтобы отключить управление доступом, необходимо в ModuleConfig в поле featureFlags указать значение permissionsEnabled: false.
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: commander
spec:
  enabled: true
  version: 1
  settings:
    featureFlags:
      permissionsEnabled: false
Аудит
Все изменения ролей и назначений логируются. Информация доступна во вкладке «История изменений» на уровне РП.
- 
Поддерживается назначение как существующим пользователям и группам, так и указание
user:<login>/group:<name>вручную. ↩︎