February 25

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).