Лучшая модель базы данных Основанного на роли управления доступом (RBAC) [закрывается]

Чтобы развернуть ответ, заданный Chris

, если вы хотите сохранить дату в переменной в определенном формате, это самый короткий и самый эффективный способ как я знаю

>>> from datetime import date, timedelta                   
>>> yesterday = (date.today() - timedelta(days=1)).strftime('%m%d%y')
>>> yesterday
'020817'

Если вы хотите, чтобы он был целым (что может быть полезно)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817

40
задан JasonSmith 10 October 2008 в 16:42
поделиться

7 ответов

К моим довольно элементарным знаниям в той области основные агенты RBAC:

  • Ресурсы.
  • Полномочия.
  • Пользователи.
  • Роли (т.е. Группы).

Ресурсы < - требуют-> ( один или несколько ) Полномочия .

Роли < - наборы-> ( один или несколько ) Полномочия .

Пользователи < - может иметь-> ( один или несколько ) Роли .

таблицы для такой модели были бы:

  • роль разрешения
  • пользователь
  • role_permission
  • user_role

Теперь Вы могли бы хотеть включать ресурсы здесь также, если Вы хотите, чтобы пользователи Вашего приложения были в состоянии настроить, в каких полномочиях ресурс нуждается. Но мне никогда не было нужно это. Надежда, которая помогает.

57
ответ дан Amr Mostafa 23 September 2019 в 16:29
поделиться
2
ответ дан IDBD 23 September 2019 в 16:29
поделиться

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

Моя модель основана на стандартных блоках различного объекты в системе, которые требуют полномочий, будьте, они приписывают представлению/обновлению или действиям для выполнения. Существуют также, конечно, отличающийся роли в системе (который может быть дан пользователям), и связующее звено, которое скрепляет, все это правило доступа, которое соединяет определенную роль, определенный нуждающийся в разрешении объект и предоставленное разрешение . Правило доступа могло бы быть похожим на них:

rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission

и так далее. Я оставлю ERD как осуществление читателю;-), если у Вас есть вопросы, оставьте комментарий.

Yuval =8-)

3
ответ дан Yuval 23 September 2019 в 16:29
поделиться

Ролевое Требование работает с Успокоительной Аутентификацией очень хорошо для обеспечения основанных на роли подлинных функций и хорошо сохраняется.

0
ответ дан Yardboy 23 September 2019 в 16:29
поделиться

Для .net приложений необходимо посмотреть на что-то как Визуальная охрана http://www.visual-guard.com/ , чтобы избежать необходимости обрабатывать полномочия и роли с нуля.

Также для .net, у Вас есть поставщики членства и роли и авторизация, обработанная с конфигурацией. http://www.odetocode.com/Articles/427.aspx

-1
ответ дан Keith Patton 23 September 2019 в 16:29
поделиться

Мне очень нравится это сообщение в блоге: https://content.pivotal.io/blog/access -control-permissions-in-rails

РЕДАКТИРОВАТЬ:

Кажется, что Райанб из railscasts подумал о том же и создал жемчужину под названием cancan https://github.com/ryanb/cancan используя базовую технику, аналогичную посту pivotollabs.

-1
ответ дан 27 November 2019 в 01:32
поделиться

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

Я более близок к ответу Ювала, все, что нам нужно, это связать объекты проекта + действия + пользователей. Чтобы обеспечить это; базовый объект (Entity) имеет смысл. Таким образом, любой объект, унаследованный от Entity, можно легко связать с действием user +.

Поскольку вы также хотите, чтобы все было просто; я предлагаю:

  • Любой объект из-за ограничений rbac должен быть производным от базовой сущности.
  • Должен быть список ролей, которые однозначно связаны с Сущностью.
  • Должен быть список отношений между пользователями и ролями.

Чтобы сделать еще один шаг вперед, я бы также рекомендовал следующее (для автоматизированного rbac)

  • Я использую сервисный доступ к своим объектам. Это; Я создаю репозитории объектов (которые делают для меня db-доступ) и получаю доступ к репозиториям через служебные функции.
  • Я использую настраиваемый атрибут в начале каждой служебной функции. Это определяет необходимую роль для доступа к этой функции.
  • Я использую параметр User для доступа ко всем моим служебным функциям, и каждая служебная функция выполняет проверку роли перед выполнением самой себя.Отражение помогает мне понять, какую функцию я вызываю и какую роль она выполняет (через настраиваемые атрибуты)
  • Я также запускаю инициализатор при запуске приложения, и он проверяет все функции (и их атрибуты) и видит, есть ли Я добавил новую обязательную роль. Если есть роль, которую я только что добавил и которой нет в базе данных, она создает ее в базе данных.

Но, увы, это доступно только для .NET, насколько я знаю, в Java нет настраиваемых атрибутов, так что это вряд ли будет доступно для Java.

Я хотел бы привести несколько примеров кода, но мне лень делать это. Тем не менее, если у вас есть вопросы о моем способе использования rbac; вы можете спросить здесь, и я обязательно отвечу.

1
ответ дан 27 November 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: