2013-08-26 2 views
3

Я учусь Apache Shiro, и я нашел эту статью:ресурсов Управление доступом на основе ролей против управления доступом на основе

The New RBAC: Resource-Based Access Control

И автор сказал:

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

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

Похоже, что автор предпочитает хранить отношения пользователя и разрешения напрямую, а не через Роль.

Хотя кажется, что это просто и понятно, у меня есть несколько вопросов:

  1. Существуют ли какие-либо существенные различия между двумя из них?

  2. Схема базы данных.

В роли управление доступом на основе, как правило, мы используем три таблицы для описания отношений:

user 
role 
user_role 

Нет, если я использую управление доступом к ресурсам Based, то, что является обычной практикой для создания таблиц ?

+0

ABAC XACML - лучшая уже существующая система, которую я знаю. Прочтите это, возможно, это поможет лучше понять тему: http://stackoverflow.com/questions/18622678/rest-api-use-endpoint-properties-in-authorization-model/18640223#18640223 – inf3rno

+0

Для получения более подробной информации прочтите это article: https://stormpath.com/blog/new-rbac-resource-based-access-control –

ответ

6

Это первый раз, когда я слышу об управлении доступом на основе ресурсов.

Я был бы очень осторожен, идя по этому пути. В мире разрешения есть, по существу, 2 стандарта:

  • управления доступом на основе ролей (RBAC) в соответствии со стандартом NIST и реализованы в тысячах приложений и фреймворков при поддержке со стороны основных производителей (CA, Oracle, IBM. ..)
  • Управление доступом на основе атрибутов (ABAC) стандартизировано NIST (также here) и одинаково хорошо реализовано такими производителями, как IBM, Oracle и Axiomatics, где я работаю.

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

Управление доступом на основе ролей и на основе атрибутов являются хорошо принятыми парадигмами, поддерживаемыми NIST и другими органами стандартизации, такими как OASIS (где SAML и XACML были определены 10 лет назад и по-прежнему поддерживаются сегодня).

Вопрос к вам: почему контроль доступа на основе ролей недостаточно для вас? Возникает ли у вас вопрос о росте? Разве это недостаточно выразительно?Нужно ли вам взаимодействовать между пользователями, ресурсами и контекстом?

ABAC и XACML могут позволить вам сделать это. Недавно я опубликовал простое видео на YouTube, посвященное управлению доступом на основе атрибутов. У вас есть look.

Суть в том, что RBAC и ABAC являются стандартами, которые работают в разных приложениях и слоях. Управление доступом на основе ресурсов специфично только для Apache Shiro.

+0

Как это работает, когда параметры развиваются на маршруте? Мы не можем сейчас, если у нас есть доступ к ресурсу, пока мы не обработаем запрос, не так ли? –

+0

Да, это правильно –

+0

Что считается лучшей практикой в ​​этом случае? –

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