ВведениеСмешанный дизайн RBAC - хорошо или плохо?
Я разрабатываю свою систему доступа на основе прав доступа на основе приложений. В моей системе я имею следующие роли:
- Корень
- Офис-менеджер
- Аудитор
- Заказчик
- работник
Например, позволяет просматривать пользователей отношения с ' задача ".
работник и клиента весьма особой роли, они будут иметь почти только доступ на чтение своих собственных задач. Рабочие будут видеть только несколько свойств объекта «задача». В зависимости от системных бизнес-правил в некоторых случаях они смогут обновить один или два свойства.
Root пользователь может делать все, он может создавать, обновлять, читать, удалять «задачи». Офис-менеджер может перечислить, обновить и создать «задачи». Аудитор может перечислять только задачи.
Root, Аудитор и Офис-менеджер будет иметь доступ к той же (полного) набора свойств сущностей «задач». Эти три пользовательских типа будут получать доступ к системе через один и тот же интерфейс управления (модуль веб-приложения).
Клиенты получат доступ к системе через отдельный ролевой модуль (модуль клиента), функциональность слишком специфична. Рабочие - тоже (рабочий модуль).
Таким образом, используя описанный пример, можно сказать, что мы можем создать следующие разрешения для Root, ревизором и офис-менеджера:
- LIST_TASKS
- CREATE_TASKS
- UPDATE_TASKS
- DELETE_TASKS
Это будет работать для них, но не для Клиент и Рабочий. Для работника мы могли бы сделать:
- LIST_WORKER_OWN_TASKS
- UPDATE_WORKER_TASK_STATUS
... и так далее.
Но это имеет довольно низкий смысл, как и для меня. Никто, кроме Работника, не будет использовать эти разрешения. Кроме того, условия, при которых Работник сможет редактировать определенные свойства объекта «Задача», не могут быть описаны с использованием разрешений.
Резюме
Таким образом, я делаю вывод о том, что мне нужна смешанная система контроля доступа. Клиенты и работники будут ролями без каких-либо разрешений. Менеджеры Root, Auditor и Office будут ролями с набором разрешений, привязанных к каждой роли.
Наконец, мы можем назвать такой механизм системы доступа с множественными разрешениями и функциями.
Вопрос
Является ли это нормальным иметь такую конструкцию? Я думаю неправильно? Или лучше описать Клиент и Рабочая логика (насколько это возможно) с использованием очень подробного списка разрешений?
Спасибо, что высказали свое мнение! –