Я намагаюся керуватися рольовою моделлю контролю доступу, щоб обмежити, що користувачі можуть чи не можуть робити у моїй системі.
Поки що у мене є такі суб'єкти:
користувачі - люди, які будуть використовувати систему. Тут у мене є імена користувачів та паролі. role - Сукупність ролей, які можуть мати користувачі. Такі речі, як ресурси менеджера, адміністратора тощо - речі, якими користувачі можуть керувати. Як і контракти, користувачі, чернетки контрактів тощо. Операції, які користувачі можуть робити з ресурсами. Як створити, прочитати, оновити чи видалити.
Тепер у мене на діаграмі виникає сумнів, де я маю таке відношення:
Операції (0 .. *) виконуються на ресурсах (0 .. *), що створює таблицю, яку я називав дозволами, і яка буде зберігати операцію та ресурс .
Таблиця дозволів буде виглядати приблизно так (один її рядок): ID: 1, операція: create, resource: контракт.
Що означає дозвіл на створення в контракті .
Я зробив це таким чином, тому що я вважаю, що на деяких ресурсах можуть бути не всі види операцій. Наприклад, для реєстрації контрактів користувачі можуть завантажувати файли , але ця операція недоступна для реєстрації постачальника .
Тому зараз, коли адміністратор буде давати дозволи на роль , він не матиме списку ресурсів для кожної операції, зареєстрованої в системі.
Я думаю, що кожен ресурс має свою колекцію операцій, які можна виконати над ним.
Я можу уточнити, якщо щось не зрозуміле.
Це правильний спосіб реалізації rbac?
EDIT
Я маю на увазі те, що маючи таблицю дозволів, яка має операцію та ресурс , у мене є ДВА додаткові таблиці, тому що я хочу пов’язати ресурси з операціями . Я міг би також щойно виконаних ресурсів мати дозволи, де таблиця дозволів зберігатиме дозволи.
Але тоді б сталося, що деякі дозволи, які навіть не існують для деяких ресурсів, з'явилися б тоді, коли адміністратор призначив би їх.
Отже, я хочу знати з точки зору проектування бази даних, чи правильний цей дозвіл таблиці, який має одну колонку та інший ресурс? Чи зіткнуться я з проблемами, якщо вона залишиться такою?