Если создание отношения «многие ко многим» между Пользователем и Привилегией не способствует созданию системы, которую вы создаете, то вы можете создать разовую роль для специальной привилегии.Например, если пользователь u
имеет роли от r0
до rn
с привилегиями p0
до pn
, ни у одного из которых нет разрешения на доступ к ресурсу res1
, вы можете создать специальную роль rs
, что позволяет получить доступ к res1
и присвоить эту роль u
.
Таким образом, алгоритм для создания специальной привилегии:
- Создать привилегию,
p
, который имеет доступ к нужному ресурсу - Создайте роль
r
и назначьте p
ему - Назначьте
r
пользователю u
При такой схеме пользователь u
теперь сможет получить доступ ко всем ресурсам, разрешенным с p0
по pn
, плюс к ресурсу, доступному с помощью p
, созданному на шаге (1).
Если эти специальные привилегии понадобятся многим пользователям (т. Е. Многим пользователям потребуется особый доступ к одному и тому же ресурсу), то роль можно использовать повторно.Например, при необходимости можно создать новую роль (шаг (2) в приведенном выше алгоритме) для каждого требуемого ресурса, и эту роль можно назначить нескольким пользователям.Если повторное использование не требуется, новая роль и привилегия могут создаваться каждый раз, когда требуется специальная привилегия.Преимущество последнего случая (без повторного использования) состоит в том, что он проще, чем первый.