RBAC и ABAC. От простого к сложному.
Для контроля доступа пользователей применяются различные модели управления доступом. Из них две самых распространённые — RBAC (Role-Based Access Control) и ABAC (Attribute-Based Access Control). Давайте рассмотрим их по очереди, начиная с более простых примеров.
Что такое RBAC (Ролевой контроль доступа)?
RBAC роли-ориентирован. У каждого пользователя одна или несколько ролей, а у ролей есть разрешения. Если у пользователя есть нужная роль, он получает доступ.
Простой пример: Представьте офис. В офисе три роли:
- Сотрудник -- может открывать офисные двери и пользоваться принтером
- Менеджер -- кроме прав сотрудника, может подписывать документы
- Директор -- имеет все права менеджера и может нанимать или увольнять сотрудников
Если Оля является менеджером, то у неё есть доступ к принтеру, подписи документов, но не к увольнению сотрудников.
Основные особенности RBAC:
- Упрощение управления доступом: добавляем пользователя в роль -- он получает все разрешения этой роли
- Жёсткие связи: если роли плохо спланированы, может потребоваться создавать новые роли для каждой уникальной ситуации
Что такое ABAC (Атрибутный контроль доступа)?
ABAC использует атрибуты пользователя, ресурса и среды для того, чтобы сделать решение о доступе.
Простой пример: Возьмем тот же офис.
- Сотрудник может использовать принтер только в рабочее время
- Менеджер может подписывать документы, если это его отдел
- Директор может увольнять сотрудников, но только если он сам находится в офисе
Теперь не важно, что играет роль Оля -- значимы её атрибуты (позиция, время, место).
Основные особенности ABAC:
- Состоятельность: доступ не определяется исключительно ролями, но и контекстом
- Наслоение настройки: приходится рассуждать о многочисленных условиях и атрибутах
Сравнение RBAC и ABAC
RBAC отлично подходит для небольших и средних компаний с чёткой иерархией. ABAC полезен для больших систем, где доступ зависит от множества факторов.
На практике:
часто используют гибридный подход:
- RBAC определяет основные роли и базовые разрешения.
- ABAC добавляет гибкость за счёт условий (например, доступ возможен только в определённое время или из определённого места).
Например, в больнице врач может просматривать истории болезней пациентов (RBAC), но только если он лечащий врач пациента (ABAC).