Подтвердить что ты не робот

Схема БД для контроля доступа на основе ролей

В настоящее время я разрабатываю администрацию членов для локальной ассоциации, и сейчас я разрабатываю схему базы данных. Я хотел бы поделиться им с вами, чтобы улучшить его и дать другой пример модели доступа на основе ролей (RBAC). Я был бы признателен за конструктивную критику, особенно за отношения, которые я использовал между таблицами.

Ссылка на highres: http://i.stack.imgur.com/WG3Vz.png

Вот схема: DB Schema

Как это работает:

Я сопоставляю существующие клиенты (фактически члены ассоциации) из внешнего приложения в свое приложение администрирования. (таблица клиентов)

Ассоциация структурирована в подразделениях, подразделениях и т.д. (таблица intern_structures). Каждый клиент может быть членом в нескольких подразделениях, подразделениях, разделах и т.д.

Каждый клиент может иметь одну или несколько ролей в таких членствах (подразделениях,...), таких как президент, актуарий, казначей и т.д., и каждая роль имеет определенные привилегии, которые владелец этой роли может применить к другим в своем подразделении, подразделении, Раздел и т.д.

Учетные данные связаны с определенным действием приложения. Владелец учетных данных может выполнить это действие на других членах в своем объеме. Могут быть несколько "автономных" приложений, но все они имеют одну и ту же систему авторизации/авторизации.

Приложение структурировано в модулях/субмодулях/действиях и т.д. Примером может быть модуль "Личные данные", и этот модуль содержит подмодуль под названием "Изображение", и вы можете применять действия "просмотр, удаление, редактирование" на этом картина. Но вы не можете удалить любую картинку, если человек, чья фотография, которую вы пытаетесь удалить, находится в разделе/​​разделе, где у вас есть соответствующая роль.

Внутренняя структура и структура приложения являются деревьями, реализованными как набор вложений и. Список смежности гарантирует целостность, и вложенный набор позволяет мне быстро пересекать дерево.

Исключением является то, что вы можете дать кому-то определенные учетные данные напрямую (client_credentials). Это необходимо, если кто-то должен выполнять определенные действия на тех, кто не находится в разделе divsion/section.

Итак, кто-то может быть членом нескольких разделов/разделов и получать несколько ролей в каждом подразделении/разделе, членом которого он является. Я собираюсь объединить все учетные данные, которые кто-то имеет через его несколько ролей. И учетные данные всегда положительные, означает, что ограничительные учетные данные невозможны.

4b9b3361

Ответ 1

Я собираюсь привести еще один пример системы RBAC, которая мне очень нравится. пожалуйста, ознакомьтесь с рамкой radicore Тони Марстоном здесь.

Я не уверен, что он отвечает всем вашим требованиям, но может помочь вам что-то, что вы можете сравнить с вашей работой.

Ответ 2

Кажется, я не вижу больших отображений RBAC, например:

Operation  = Any action, such as CRUD operations
Object     = Reference to any object instance

Permission = Mapping of 'Operation' + 'Object'

Я не уверен, что все ваши "учетные" таблицы? Обычно учетные данные содержат свойства для подтверждения одного идентификатора (то есть: имя пользователя/пароль). Почему у вас есть учетные данные для ролей?