2009-08-26 2 views
4

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

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

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

  2. Поддерживаю ли я два отдельных устройства?

  3. Сделайте что-нибудь еще?

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

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

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

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

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

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

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

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

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

ответ

0

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

Смежные вопросы