Ранее на нашем портале рассказывалось о методах управления доступом с помощью ролей и атрибутов. Сегодня рассмотрим способы объединения этих методов с целью получения более гибкой модели.
Существует три основных комбинации RBAC и ABAC:
- Динамические роли. Ролевая модель дополняется динамическими атрибутами, например, временем суток. Таким образом, набор ролей пользователя определяется динамически системой управления доступа. В зависимости от реализации такого подхода, набор ролей пользователя может полностью динамически определяться системой управления, либо пользователь будет получать один из заранее определенных наборов авторизованных ролей.
- На основе атрибутов. Имя роли – это один из многих атрибутов. В данном случае роль – это не набор прав, а лишь название в атрибуте "Роль". При таком подходе быстро теряется простота администрирования ролевой модели, чем больше атрибутов в системе, тем сложнее будет управлять такой системой.
- На основе ролей. В данном подходе атрибуты используются для создания правил ограничения доступа ролей. Роли все еще содержат наборы прав доступа, но окончательный набор прав в пользовательской сессии формируется из пересечения прав роли и тех прав, которые не запрещены правилами с использованием атрибутов.
2й подход по сути не является ролевой моделью, т.к. набор прав перестает контролироваться ролью, это в некотором роде расширенная атрибутная модель. 1й и 3й подходы уже интереснее и чаще используются в реальных проектах.
Приведу пример использования 1го подхода: например, есть система с 10 атрибутами, 7 из которых статические, 3 – динамические. Такой набор атрибутов даст 210 (1024) ролей в класичесской ролевой модели или 210 (1024) правил для атрибутной модели. При построении комбинированной модели управления доступом потребуется 27 (128) ролей и 23 (8) правил. Неплохое сокращение по сравнению с 1024 ролями? Конечно же потребуется произвести настройки, чтобы применить правила к ролям, но работы все равно будет гораздо меньше. Ведь в реальной жизни используются в основном статические атрибуты: должность, подразделение, табельный номер и т.д. Атрибуты, которые необходимо анализировать в течение дня, используются не так часто.