Дизайн БД на основе ролевого контроля доступа - PullRequest
4 голосов
/ 26 августа 2009

Этот вопрос не о структуре базы данных самой системы RBAC, а о том, как использовать эту базу данных в сочетании с базой данных конкретного приложения, когда это веб-приложение позволяет пользователям отправлять контент.

В моем нынешнем виде RBAC должен легко работать для простого фонового административного приложения, где сотрудники могут добавлять и обновлять записи - например, в интернет-магазине, как правило, нет пользовательского контента. Две базы данных могут оставаться отдельными. Однако я не уверен, как я мог бы повторно использовать свой дизайн RBAC с веб-сайтом / приложением, которое позволяет его пользователям отправлять контент. У меня будет две таблицы User в двух базах данных, для которых требуются разрешения на добавление / обновление записей.

  1. Включаю ли я свою базу данных RBAC в базу данных сайта и делюсь таблицей пользователей?

  2. Разве я не разделяю эти два?

  3. Что-то еще?

Если вариант 2, я:

  • (A) дублировать пользователей из базы данных сайта в таблицу пользователей RBAC

  • (B) создать связь с таблицей пользователей в базе данных сайта

  • (C) создать новую систему RBAC в базе данных сайта для пользователей сайта и иметь отдельный RBAC для пользователей-администраторов?

A кажется плохим, так как я дублирую данные, но кажется довольно простым в реализации. B, кажется, будет трудно создать связь с двумя отдельными пользовательскими таблицами. C также является дублированием, но я могу сильно настроить этот RBAC, не влияя на RBAC «admin».

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

Эта моя маленькая система RBAC для меня - в основном способ обучения, поэтому, пожалуйста, не называйте "вы должны использовать фреймворк x / y / z". Используя термин, который я обнаружил недавно, я в некотором роде болван и люблю изобретать их всякий раз, когда мне интересно! :)

Я буду использовать MySQL и PHP для своих сайтов, но это не должно иметь значения, так как это дизайн базы данных, о котором я спрашиваю здесь.

Если мой вопрос неясен, пожалуйста, дайте мне знать, и я объясню дальше. Спасибо всем за ваше время.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

, пожалуйста, посмотрите на этот сайт Система контроля доступа на основе детальных ролей (RBAC) http://sqlrecipes.com/forum/threads/fine-grained-role-based-access-control-rbac-system.3/

0 голосов
/ 31 мая 2011

Не зная вашей полной реализации, я склоняюсь к вашему первому решению и использую только одну пользовательскую таблицу. Затем онлайн-приложение может запросить RBAC, чтобы определить, является ли пользователь привилегированным. Что мне неясно, так это то, сколько атрибутов приложений потребуется и где они будут храниться. Если у вас есть атрибуты пользователей, которые необходимо сохранить в базе данных, вы можете создать в приложении пользовательскую таблицу со ссылкой на внешний ключ для RBAC, чтобы определить привилегии доступа без сохранения этих данных в 2 местах. Насколько это будет сложно, зависит от того, сколько разных мест вы можете добавлять и обновлять пользователей и их атрибуты. Физическая структура базы данных очень зависит от ваших бизнес-правил и архитектуры, но ваш логический дизайн будет заключаться в том, чтобы хранить данные в одной таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...