RBAC с несколькими параллельными экземплярами
Концепция RBAC работает очень хорошо, если вы думаете о своей системе как об одном маленьком блоке. Но я не могу понять, что делать, когда ваша система на самом деле представляет собой набор маленьких блоков.
Давайте начнем с примера: скажем, мы хотим создать систему RBAC для управления разрешениями в ресторане.
- Менеджер может разблокировать управляющий офис и ресторан, а также взять и снять наличные деньги в кассе.
- Сотрудник может только открыть главные двери ресторана и положить деньги в кассу.
Теперь мои две роли довольно ясны, и все замечательно. Но что, если моя система фактически управляет сетью ресторанов? Как я могу помешать Энтони, управляющему рестораном в Остине, иметь права управляющего в ресторане Брайана в Беркли?
Я вижу только 2 решения:
- Создание ролей для ресторанов: AustinManager и BerkeleyManager. Это также подразумевает, что ресурсы зависят от ресторана, и в итоге мы получаем решение для снежного кома, в котором мы управляем тысячами товаров.
- Каким-то образом включите информацию о ресторане вместе с ролью в процессе проверки полномочий. Делает все это проще в управлении, чем решение 1), но похоже на возвращение к старой доброй системе разрешений на основе групп.
Так что было бы хорошим решением RBAC для решения этой проблемы?