RBAC (управление доступом на основе ролей) ER-диаграмма

Я пытаюсь разработать приложение с управлением доступом на основе ролей. И я также разработал диаграмму ER. RBAC ERD Итак, здесь я пытаюсь добиться того, чтобы ПОЛЬЗОВАТЕЛЬ имел одну РОЛЬ и основывался на конкретной РОЛИ он получит разрешения для RESOURCES, установленных в таблице resource_role.

Пожалуйста, предложите, если я делаю какую-либо ошибку.

Так как при поиске в Интернете схемы RBAC ER я наткнулся на некоторые проекты, такие как ERD под вопросом.

Источник: - ссылка на GitHub и YouTube

На этой диаграмме ER у меня есть несколько вопросов, которые заключаются в следующем:

  1. Как ПОЛЬЗОВАТЕЛЬ может иметь несколько РОЛЕЙ, поскольку нет никакой связи между тремя, т. е. ПОЛЬЗОВАТЕЛЬ, РОЛЬ и РЕСУРС . Как определить, какую ROLE использовать для конкретного пользователя?

  2. И как таблица моста user_role связана с role в одной и только одной связи? Поскольку к USER может быть привязано множество ROLE.

Спасибо всем заранее.




Ответы (1)


Вы предполагаете, что должно быть необходимо «определить, какую роль использовать» для пользователя, но (1) это не абсолютно необходимо и (2) это (какую роль я собираюсь играть) может быть частью информации который пользователь должен ввести во время входа в систему, а затем сохраняется в контексте его сеанса.

В этом нет абсолютной необходимости, поскольку семантика таблицы resource_role может быть такой: «Для доступа к ресурсам RES требуется, чтобы у пользователя была роль ROLE». И тогда предоставление доступа - это просто вопрос поиска того, действительно ли пользователь имеет требуемую роль, и нет понятия «какую роль сейчас играет этот пользователь».

person Erwin Smout    schedule 24.04.2018