Руководтсво администратора/разработчика
Документация
Безопасность
Компоненты ИБ
Управление доступом к данным
Доступ к данные, с которыми работают пользователи можно ограничить исходя из следующих понятий:
- Роль
- Группа
Роль пользователя - определяем набор прав на работу с данными (создание, изменение, удаление и просмотр) на уровне каждого объекта, а также на операции в Studio (администрирование БД, создание шаблона и тд).ё
Вы можете сами создавать любое количество Ролей с различными комбинациями прав. Роль испльзуется в том числе и для разделения пользовательских интерфейсов. Так например, пользователи роли "Операторы" будут видеть другой набор инструментов интерфейса нежели пользователи роли "Методисты".
Группа пользователя - параллельная роли сущность, которая используется при запросе данных для разделения доступа к данным одного шаблона или одного запроса.
Вы можете создать любое количество Групп и назначить для каждого Профиля пользователя любое количество Групп.
При создании объекта пользователем создается служебное поле с указанием текущих Групп пользователя в текущего активного Профиля.
Как это работает?
При авторизации пользователя происходит использование одного из Профилей пользователя. Профиль - это объект в базе данных, в котором связана учетная запись пользователя (его идентификационные даннные), Роль пользователя - объект в котором указан набор привелегий на работу с данными и Группа пользователя - объект в базе данных, где указано название группы и любые другие даннные.
Например, если в рамках разработки системы мы решим, что пользователи должны делиться по отделам, то группой будет являться отдел. Вы можете расширить описание отдела (группы) любыми другими аттрибутами (телефон, руководитель и тд)
Таким образом, при авторизации происходит сохранение текущих прав пользователя, а именно Роли и Группы.
И ещё
- Можно ли не указывать Группы?
- Да, конечно, Группы это является дополнительным инструментом разграничения доступа к данным в рамках пользователей одной Роли.
Группы
Группа - это объединение пользователей в определенное сообщество, которому может быть настроены дополнительные права доступа к данным.
Когда нужны группы?
Группы могут понадобиться для разграничения видимости данных для пользователей одной Роли. Так например, если вы проектируете систему, в которой необходимо для различных групп (это могут быть организации) обеспечить доступ к данным в рамках одной Роли.
Роли разграничивают действия пользователя и настройку кабинетов исходя из задач. А Группы позволяет разделить доступ к данным для пользователей с одинаковыми Ролями.
Как это работает?
Если пользователь включен в Группу, то к создаваемые им объекты дополняются системный полем _groups, в котором хранятся идентификаторы текущих групп пользователя в рамках текущей Роли.
Запросы, в который установлен параметр Фильтр по группе будут дофильтровываться исходя из текущих Групп пользователя в рамках активной Роли.
Механизм ограничений
Выбрана группа | пользователь видит только объекты, у которых есть вхождения одной из текущих ролей пользователя в список групп доступа; | пользователь видит все объекты запроса |
Не выбрана группа | пользователь не видит объекты данного запроса | пользователь видит все объекты запроса |