Search
Write a publication
Pull to refresh

Comments 4

Красиво, но не соответствует реальным потребностям:

  1. Тысячи документов ассоциировать с правами для каждого пользователя - серьезная нагрузка. Особенно, если пользователь перешёл на новое место работы и все ранее выданные права необходимо пересмотреть по всем историческим документам;

  2. Если у пользователя доступ предоставлен к миллиону документов, какого размера запрос отправится в СУБД чтобы показать список этих документов?

Подобные попытки спрятать логику в некую библиотеку разбиваются на реальных задачах. На сегодняшний день задача не решена и не имеет достаточной теоретической базы.

Например, задачу прав доступа нужно рассматривать со структуры предприятия, где права делегируются сверху-вниз, чтобы у подчинённого прав было не более чем у вышестоящего руководителя. А на практике, права руководителя собирают, как правило, снизу-вверх, админам проще дать права подчинённым, а руководителей включать во все возможные группы, или сделать одну супер группу, что тоже не упрощает раздачу прав.

Вы правы. есть проблема в делегировании и наследовании прав подчиненных - но тут я не стал это рассматривать усложнять чтение. на практике наследование прав решается в рамках слоя бизнес-аналитиков - системных ролях где предусматривается что роль может иметь повышенные права и может вмешиваться в права нижестоящих сотрудников.

1. если у сотрудника меняются права и у него забирают корневое полномочие - система не будет искать атрибуты и следовательно нагрузки не будет даже на базу. Но если ему вернут право - все атрибуты вернуться к нему самостоятельно.

2. если у пользователя доступ к миллиону документов (вполне реальная задача) это будет по факту всего одна выборка из базы. (тут надо сделать пометку что в этой системе реализован CQRS и eventsourcing поэтому чтение списка документов происходит из elasticsearch где объект собран сразу со всеми атрибутами, которые имеют на него право, если кому -то дали или забрали право - объект меняется в elasticsearch)

наследование прав тут не использовалось тк это просто иной подход.

сейчас этот подход успешно лопатит 100млн документов с версионированием в пяти абсолютно разных системах.

Пример про иерархию привел только как пример первостепенной, но не изученной области. Соответственно про простоту технологий говорить пока рано.

  1. При изменении прав нагрузка будет - чтобы забрать полномочия.

  2. К процессу выборки данных вопросов нет, смущает наличие функции в СУБД способной принять и переварить текст запроса с перечислением миллионов идентификаторов. При этом, с ростом объема данных размер текста запроса будет только увеличиваться.

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

Sign up to leave a comment.

Articles