2014-01-07 4 views
1

После прочтения http://en.wikipedia.org/wiki/Role-based_access_control и, видя, как люди строят авторизацию/контроль доступа, этот вопрос пришел мне на ум: «Почему мы проверяем роли пользователей при проверке, разрешено ли им делать X, а не проверять их разрешения?»Управление доступом на основе ролей (RBAC) заботится о разрешении или ролях?

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

И Я думаю, что имеет смысл проверить разрешение, подобное «AddUser» при обработке запроса на добавление пользователя, но в библиотеке .Net, а также во многих примерах в RBAC, мы видим, что они проверяют роли. Как они проверяют, находится ли пользователь в роли Администраторов, а не проверяет, имеет ли он разрешение «AddUser».

Почему? Мне кажется, что мне больше нужно проверять разрешения.

Может кто-нибудь, пожалуйста, освещает меня здесь?

Благодаря

ответ

2

Вы правильно - проверка ролей в приложениях вместо разрешений не ролевое управление доступом. Весенняя безопасность и многие другие выдающиеся механизмы контроля доступа распространяют этот анти-шаблон безопасности. Для правильного использования RBAC - выполните проверки разрешений в логике принудительного применения политики.

1

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

Вы могли бы быть частично верны для случая :)

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

Здесь может потребоваться проверить с помощью метода 'HasRole (' SomeRole ')' для определения точного поведения пользователя.

Итак, мой ответ будет, оба метода одинаково важны в RBAC.

1) HasPermission («permissionName»)

2) HasRole («RoleName»)

Хорошее решение РЦСБ должно обеспечить обе эти методы. На рынке есть такие инструменты, которые вы можете проверить на них.