Модель БД для RBAC (или любые другие альтернативы) - PullRequest
0 голосов
/ 21 марта 2019

В основном я пытаюсь понять, как правильно реализовать модель БД с разрешениями на основе ролей.Я ищу очень конкретные примеры моделей БД .

. То, как я это вижу сейчас, на бумаге все выглядит просто, у вас есть «Пользователь - Роли - Разрешения»:

users - id
roles - id
permissions - id
user_role - user_id, role_id
role_permission - role_id, permission_id

Проблема для меня начинается, когда вы добавляете ресурсы в смесь.

Допустим, у меня будет два ресурса (может быть что угодно - бизнес, местоположение, отдел ...):

resource1 - id
resource2 - id

Мне нужно как-то их интегрировать, моя попытка выглядит примерно так:

permissions - id, resource_id
resources - id

Кажется разумным - разрешение для конкретного ресурса.


Нокак назначить конкретный экземпляр ресурса для конкретной роли / разрешения.Например, «user1» имеет роль «role1» для «Department 1», но не для «Department 2».

Опция 1: кажется слишком свободной, у меня могут быть роли с разрешениями для resource2, назначенными для resource1, что не имеет смысла,А как насчет смешанных ролей - у роли есть права для resource1 и resource2.

role_resources - role_id, resource1_id, resource2_id

Вариант 2: еще больше разделить таблицы?

resource1_permissions - id
resource2_permissions - id
resource1_roles - id
resource2_roles - id
...

Похоже на перебор.

С нетерпением ждем умных идей для этого.

...