@bushart

Как применить ACL с целью ограничения доступа к коллекции?

Прикручиваю на проекте ACL. С большинством сценариев использование все понятно - не давать выводить кнопки экшенов и предотвращать выполнение запрещенных экшенов. Но вот со сценариями посложнее уже возникают проблемы. На пример у меня есть список пользователей и роли менеджеров разных уровне - Страна, Город, Офис. Так вот каждый такой менеджер должен иметь доступ к списку пользователей своей локации т.е. Офис менеджер только к пользователям своего офиса, а Город-менеджер только к списку пользователей своего города. Я вот никак не могу понять, как описать правила такого рода в контексте ACL.
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vsadm
Бессистемный архитектор
В целом для проектирования систем доступа полезно руководствоваться принципами Orange Book. В вашем случае (не зная всех граничных условий) систему можно представить в виде:
  • Пользователей: субъекты, которые наделяются некоторыми полномочиями. В общем случае могут объединяться в группы или роли для удобства управления.
  • Ролей: роль не только группирует пользователей, но и позволяет добавить к ним некоторые атрибуты, применимые в контексте роли (как это часто делается в LDAP), например роль Город-менеджера добавит пользователю атрибут "ID города"
  • Полномочий: отдельные разрешения, могут объединяться в групы полномочий для удобства.
  • Объектов действия: элементы бизнес-логики, которые при применении полномочий меняют свое состояние. Также могут объединяться в группы.


То есть, у пользователя с ролью Город-менеджера есть есть полномочия для группы "полный контроль" над группой объектов "пользователи с ID города таким-то".

Конкретная реализация очень сильно зависит от того, что у вас за платформа, и какие под нее есть готовые библиотеки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы