Описание

Для управления доступом используется модель RBAC (Role-Based Access Control) - это модель, основанная на ролях пользователей. Вместо того, чтобы каждый пользователь получал индивидуальный набор прав, права доступа группируются в роли и пользователи получают доступ на основе своих ролей.

Принцип работы RBAC

  1. Определение ролей: Определяются роли, соответствующие различным обязанностям и функциям в системе.
  2. Определение прав для ролей: Определяются права, которые должны быть предоставлены каждой роли.
  3. Назначение ролей пользователям: Пользователям назначаются роли, соответствующие их обязанностям и функциям.
  4. Контроль доступа: Система использует ролевую модель для контроля доступа к ресурсам, основываясь на назначенных ролях пользователей.

Глоссарий

  • Пользователи - учетные записи пользователеий в базе 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.

Включение поддержки RBAC в Deckhouse Commander

В версии 1.11, по умолчанию управление правами отключено, поэтому все пользователи обладают одинаковыми максимальными полномочиями, как это было в предыдущих версиях. Для использования Deckhouse Commander в этом режиме дополнительных действий не требуется.

Если включить управление доступом, то все пользователи и группы, которые ранее использовали Deckhouse Commander, автоматически станут администраторами. Это дает возможность сохранить совместимость в полномочиях для существующих пользователей и групп, но появится возможность их ограничить.

Чтобы активировать управление доступом, необходимо в ModuleConfig в поле featureFlags указать значение permissionsEnabled: true.

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: commander
spec:
  enabled: true
  version: 1
  settings:
    featureFlags:
      permissionsEnabled: true

Если после этого выключить управление доступом (permissionsEnabled: false), то все пользователи, которые откроют интерфейс Deckhouse Commander, снова получат максимальные права.

В версии 1.11 можно включать и отключать управление правами без потери поведения по умолчанию (без ограничений на права). Однако, в будущих версиях поддержка управления правами станет постоянной и не будет отключаться.

Назначение временных администраторов для настройки прав доступа

Внимание! Данный шаг можно пропустить если на перед обновлением на версию 1.11 вы хотя бы раз логинились под своей учетной записью в Deckhouse Commander.

Для первоначальной настройки, а также для случаев когда полномочия администратора были утрачены, предусмотрена возможность назначения временных администраторов.

Создайте 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 включена поддержка прав доступа, а также используется учетная запись администратора. Для настройки прав доступа необходимо выполнить следующие шаги:

  1. Открыть панель настройки прав
  2. Перейти на вкладку “Роли” и создать роль
    1. Нажать на кнопку “Добавить глобальную роль”
    2. Задать уникальное имя роли и комментарий
    3. Нажать на кнопку “Добавить правило Commander”
    4. Указать права и ресурсы
    5. При необходимости можно создать несколько правил
    6. Нажать кнопку сохранить
  3. Перейти на вкладку “Назначения” и создать назначение
    1. Нажать на кнопку “Добавить глобальное назначение”
    2. Задать имя или включить переключатель “Генерировать из роли”. В этом случае для генерации имени будет использовано имя роли и случайный набор букв
    3. Выбрать роль
    4. Выбрать пользователей или группы. Если пользователь или группа еще не существуют в Deckhouse Commander, можно указать их вручную в формате user:<login> / group:<name>.
    5. Нажать кнопку “Сохранить”

Права применены.

Аудит

Все изменения ролей и назначений логируются.
Информация доступна во вкладке «История изменений» на уровне РП.


  1. Поддерживается назначение как существующим пользователям и группам, так и указание user:<login> / group:<name> вручную. ↩︎