У меня есть сервис SaaS, где несколько пользователей могут сотрудничать друг с другом. До сих пор пользователи с одной учетной записью подписки могли использовать одну и ту же базу данных и просматривать / редактировать / удалять все друг от друга.
Теперь я хотел бы реализовать систему разрешений, чтобы пользователи могли выполнять только определенные действия, такие как просмотр, редактирование, обновление и удаление содержимого (в моей системе SaaS контент - это в первую очередь список карточек клиентов).
Мое первое предположение заключалось в том, чтобы использовать технику RBAC, определяя роли и битовую маску различных операций, например
- просмотр клиентских карточек
- обновление карты клиента
- удаление карты клиента
- добавление клиентских карт
Эти разрешения не привязаны к отдельному экземпляру карты, а не являются общими действиями, которые могут выполнять пользователи. Первый (просмотр) кажется необходимым в любом случае, так как было бы невозможно использовать систему, не имея возможности видеть какую-либо карту.
К сожалению, я думаю, что мне также понадобятся какие-то разрешения для каждой карты. Например, администратор может захотеть разрешить данному пользователю просматривать только часть карточек, а не все из них. Или пользователь-администратор может разрешить группе пользователей совместно работать над определенной картой (или определенными картами), эффективно разделяя список карт между пользователями. В любом случае я никогда не сталкивался со сценарием, когда пользователи, не являющиеся администраторами, могли бы устанавливать такие разрешения для себя или других пользователей.
Достаточно ли убедителен RBAC, чтобы кодировать такое требование? Или мне нужно перейти на ABAC?