Я пытаюсь следовать модели контроля доступа к базам ролей, чтобы ограничить возможности пользователей в моей системе.
Пока у меня есть следующие объекты:
пользователи - люди, которые будут использовать систему. Здесь у меня есть имена пользователей и пароли. Роли - Коллекция ролей, которые могут иметь пользователи. Вещи, такие как ресурсы менеджера, администратора и т. Д. - вещи, которыми пользователи могут манипулировать. Подобно контрактам, пользователям, черновикам контрактов и т. П. Операциям - то, что пользователи могут делать с ресурсами. Как создать, прочитать, обновить или удалить.
Теперь мое сомнение возникает здесь на диаграмме, где у меня есть такое отношение:
Операции (0 .. *) выполняются над ресурсами (0 .. *), которые генерируют таблицу, которую я назвал permissions, и которая будет хранить операцию и ресурс .
Таблица разрешений будет выглядеть следующим образом (одна строка): ID: 1, операция: создание, ресурс: контракт.
Что означает разрешение на создание в контракте .
Я сделал это таким образом, потому что я чувствую, что некоторые ресурсы могут иметь не все виды операций. Например, для регистрации договоров пользователи могут загружать файлы , но эта операция недоступна для регистрации поставщика .
Так что теперь, когда администратор будет давать разрешения на роль , у него не будет списка ресурсов для каждой отдельной операции, зарегистрированной в системе.
Я думаю, что каждый ресурс имеет свою собственную коллекцию операций, которые могут быть выполнены над ним.
Я могу уточнить, если что-то не понятно.
Это правильный способ реализации rbac?
РЕДАКТИРОВАТЬ
Я имею в виду, что имея таблицу разрешений, в которой есть операции и ресурсы , у меня есть ДВА дополнительных таблицы, потому что я хочу связать ресурсы с операциями . Я мог бы также сделать ресурсы имеют разрешения, где таблица разрешений будет хранить разрешения.
Но тогда произошло бы то, что некоторые разрешения, которые даже не существуют для некоторых ресурсов, появились бы, когда администратор назначил бы их.
Итак, я хочу знать с точки зрения дизайна базы данных, является ли это разрешение таблицы, которое имеет одну операцию столбца и другой ресурс, правильно? Буду ли я сталкиваться с проблемами, если так будет и дальше?