Описание
Для управления доступом используется модель 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.
Включение поддержки 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 включена поддержка прав доступа, а также используется учетная запись администратора. Для настройки прав доступа необходимо выполнить следующие шаги:
- Открыть панель настройки прав
- Перейти на вкладку “Роли” и создать роль
- Нажать на кнопку “Добавить глобальную роль”
- Задать уникальное имя роли и комментарий
- Нажать на кнопку “Добавить правило Commander”
- Указать права и ресурсы
- При необходимости можно создать несколько правил
- Нажать кнопку сохранить
- Перейти на вкладку “Назначения” и создать назначение
- Нажать на кнопку “Добавить глобальное назначение”
- Задать имя или включить переключатель “Генерировать из роли”. В этом случае для генерации имени будет использовано имя роли и случайный набор букв
- Выбрать роль
- Выбрать пользователей или группы. Если пользователь или группа еще не существуют в Deckhouse Commander, можно указать их вручную в формате
user:<login>
/group:<name>
. - Нажать кнопку “Сохранить”
Права применены.
Аудит
Все изменения ролей и назначений логируются.
Информация доступна во вкладке «История изменений» на уровне РП.
-
Поддерживается назначение как существующим пользователям и группам, так и указание
user:<login>
/group:<name>
вручную. ↩︎