В настоящее время я разрабатываю администрацию члена для локальной ассоциации, и сейчас я разрабатываю схему базы данных. Я хотел бы поделиться им с вами, чтобы улучшить его и дать другой пример модели доступа на основе ролей (RBAC). Я был бы признателен за конструктивную критику, особенно за отношения, которые я использовал между таблицами.DB Схема управления доступом на основе ролей
Ссылка на выс: http://i.stack.imgur.com/WG3Vz.png
Heres схема:
Как это работает:
Я отображающую существующих клиентов (на самом деле члены ассоциации) из внешнего приложения в моей администрации заявление. (таблица клиентов)
Ассоциация структурирована в подразделениях, подразделениях и т. д. (таблица intern_structures). Каждый клиент может быть членом в нескольких подразделениях, подразделениях, секциях и т. Д.
Каждый клиент может иметь одну или несколько ролей в таких членствах (подразделениях, ...), таких как президент, актуарий, казначей и т. Д., И каждая роль имеет определенные привилегии, которые владелец роли может применить к другим в своем подразделении, подразделении, секции и т. д.
Учетные данные связаны с определенным действием приложения. Владелец учетных данных может выполнить это действие на других членах в своем объеме. Могут быть несколько «автономных» приложений, но все они имеют одну и ту же систему авторизации/авторизации.
Приложение структурировано в модулях/субмодулях/действиях и т. Д. Примером может быть модуль «Личные данные», и этот модуль содержит подмодуль под названием «Изображение», и вы можете применять действия «просмотр, удаление, редактирование» на эта картинка. Но вы не можете удалить любую картинку, если человек, чья фотография, которую вы пытаетесь удалить, находится в подразделении/разделе, где у вас есть достаточная роль.
Внутренняя структура и структура приложения - это деревья, реализованные как список смежности и Вложенный набор. Список смежности гарантирует целостность, и вложенный набор позволяет мне быстро пересекать дерево.
Исключением является то, что вы можете дать кому-то определенные учетные данные напрямую (client_credentials). Это необходимо, если кому-то нужно выполнить определенные действия на тех, кто не находится в разделе divsion/section.
Итак, кто-то может быть членом нескольких разделов/разделов и получать несколько ролей в каждом подразделении/разделе, членом которого он является. Я собираюсь объединить все учетные данные, которые кто-то имеет через его несколько ролей. И учетные данные всегда положительные, означает, что ограничительные учетные данные невозможны.
Вот концепция простой системы RBAC: http://stackoverflow.com/questions/28157798/is-my-role-based-access-control-a-feasible-solution/28159647#28159647 – sled