Моят опит, докато експериментирах с персонализирана реализация на RBAC, е следният:
-
Четете много от литературата на RBAC и мислите, че я разбирате. След това продължавате и се опитвате да го приложите, само за да разберете, че изобщо не сте го разбрали. В крайна сметка това ще има смисъл, докато се движите напред в проекта.
-
Въз основа на вашия въпрос вече знаете бизнес домейна, към който искате да приложите RBAC. Но засега забравете за действителните бизнес обекти. Вашата реализация на RBAC трябва да е обща, което означава, че имате DB схема, състояща се от таблици с роля, потребител, разрешение, операция и т.н. Тогава ще имате обекти, които се съпоставят с такива таблици (отношение едно към едно).
След като имате тази реализация на RBAC, тя може да бъде моделирана за практически всеки бизнес домейн, като например „Отдел“, който споменахте.
Само не забравяйте, че не всичко е перфектно... Подобрих/модифицирах/извлеках от действителната литература за RBAC, за да добавя персонализирани функции, да подобря производителността и т.н.
Не съм работил по това от известно време, така че се надявам да съм прав в следното:
- Потребител:Създават се екземпляри и се записват в неговата резервна таблица.
-
Роля:Екземплярите се създават и записват в неговата резервна таблица. Ролите ще бъдат присвоени на потребителите.
-
Разрешение:Разрешението основно е комбинация от операция върху обект. Разрешенията се присвояват на ролите.
-
Операция:Операцията е просто всичко, което искате. Може да бъде CRUD (създаване, четене, актуализиране, изтриване) или също така „печат“, „търсене“ или нещо, което човек (или система) може да извърши върху обект (или група от обекти).
- Обект:Това са основно всички ваши обекти, които съставляват вашия бизнес домейн.
За още повече мощност можете да приложите ограничения, за да приложите огромно количество различни ограничения.
С тази рамка трябва да можете да картографирате:
- Кой може да назначава потребители към отдел
- Кой може да ги премахне от отделите
- Колко потребители могат да бъдат в отдел
- Какъв вид потребители (въз основа на назначените им роли) могат да бъдат в отдел
- Кои ролки могат да изпълняват какви операции към отдел (създават, четат, актуализират, изтриват)
- И др.