Открыть сервис

Ролевое управление доступом

Ролевое управление доступом (англ. Role-Based Access Control, RBAC) — это политика избирательного управления доступом субъектов (пользователей, процессов) к объектам (файлам, базам данных, принтерам, программным модулям) информационной системы, основанная на присвоении субъектам ролей и назначении прав доступа этим ролям. В отличие от мандатного (MAC) или дискреционного (DAC) управления, RBAC отделяет логику назначения прав от конкретного пользователя, связывая её с должностными обязанностями или функциями в системе. Основная цель RBAC — упрощение администрирования безопасности за счёт группировки прав по ролям и снижения вероятности ошибок при назначении индивидуальных разрешений.

История

Концепция ролевого управления доступом начала формироваться в 1970-х годах в рамках исследований в области защиты многопользовательских операционных систем и баз данных. Первые формальные модели были предложены Дэвидом Феррайоло и Ричардом Куном в 1992 году. В 1994 году Национальный институт стандартов и технологий США (NIST) опубликовал эталонную модель RBAC, которая стала основой для большинства современных реализаций. В 2004 году эта модель была стандартизирована как ANSI INCITS 359-2004 (American National Standard for Information Technology — Role Based Access Control). Стандарт определил четыре уровня реализации: плоский (Flat RBAC), иерархический (Hierarchical RBAC), с ограничениями (Constrained RBAC) и симметричный (Symmetric RBAC). В России концепция RBAC получила распространение с середины 2000-х годов, активно применяется в государственных информационных системах и коммерческих продуктах, таких как «1С:Предприятие», Astra Linux, «Ред ОС» и других.

Основные понятия и компоненты

Субъект, объект, роль, разрешение

  • Субъект — пользователь, процесс или устройство, инициирующее запрос на доступ к объекту.
  • Объект — ресурс системы (файл, запись в базе данных, сетевая служба, принтер), к которому применяются правила доступа.
  • Роль — логическая группа, соответствующая определённой должности, функции или набору обязанностей. Роль может быть как статической (например, «Бухгалтер»), так и динамической (например, «Дежурный оператор»).
  • Разрешение (право доступа) — разрешённая операция над объектом (чтение, запись, выполнение, удаление, изменение атрибутов).

Сессия и активация ролей

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

Модели RBAC по стандарту ANSI INCITS 359-2004

Плоский RBAC (Flat RBAC)

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

Иерархический RBAC (Hierarchical RBAC)

Добавляет возможность наследования ролей: одна роль может включать в себя другую (роль-родитель наследует все разрешения роли-потомка). Например, роль «Администратор» может наследовать все разрешения роли «Оператор». Иерархия может быть как строгой (дерево), так и частичной (сетка).

RBAC с ограничениями (Constrained RBAC)

Вводит дополнительные правила, ограничивающие назначение ролей и их активацию:

  • Разделение обязанностей (Separation of Duties, SoD) — запрещает одному пользователю одновременно иметь две конфликтующие роли (например, «Кассир» и «Бухгалтер»). Может быть статическим (запрет на назначение) или динамическим (запрет на активацию в одной сессии).
  • Кардинальность (Cardinality) — ограничивает максимальное количество пользователей, которым может быть назначена одна роль, или количество ролей, которые может иметь один пользователь.

Симметричный RBAC (Symmetric RBAC)

Позволяет не только назначать разрешения ролям, но и назначать роли на разрешения, а также поддерживает иерархию как для ролей, так и для разрешений. Эта модель наиболее гибкая, но сложная в реализации и администрировании.

Преимущества и недостатки

Преимущества

  • Упрощение администрирования: изменение прав для группы пользователей сводится к изменению разрешений одной роли.
  • Соответствие организационной структуре: роли легко сопоставляются с должностями и отделами.
  • Гибкость: возможность создавать временные, проектные или сезонные роли.
  • Аудит и отчётность: легко отследить, какие роли назначены пользователю, и какие действия он может выполнять.
  • Снижение риска ошибок: меньше вероятность случайно выдать лишние права отдельному пользователю.

Недостатки

  • Рост числа ролей: в крупных системах количество ролей может достигать сотен и тысяч, что усложняет управление (так называемый «ролевой взрыв»).
  • Сложность иерархии: при большом количестве наследований трудно предсказать, какие именно разрешения получит пользователь.
  • Негибкость для временных ситуаций: если пользователю нужно выполнить разовую операцию, приходится либо создавать новую роль, либо временно назначать существующую, что может нарушить политику безопасности.
  • Трудности с динамическими правами: RBAC плохо подходит для систем, где права доступа должны меняться в зависимости от контекста (время суток, местоположение, состояние системы).

Применение

Операционные системы

В большинстве современных операционных систем (Windows, Linux, macOS) реализованы элементы RBAC. В Windows используется модель на основе групп безопасности, которая во многом аналогична ролевой. В Linux — механизмы SELinux и AppArmor, поддерживающие ролевое управление. В российских ОС семейства Astra Linux (Special Edition) RBAC является основным методом разграничения доступа, реализованным в подсистеме PARSEC.

Системы управления базами данных (СУБД)

В реляционных СУБД (Oracle, PostgreSQL, MySQL, Microsoft SQL Server) RBAC применяется для управления доступом к таблицам, представлениям, хранимым процедурам. Роли могут быть встроенными (например, db_owner, db_datareader) или создаваемыми администратором.

Веб-приложения и корпоративные системы

Практически все современные веб-фреймворки (Django, Spring Security, Laravel, ASP.NET Core) поддерживают RBAC. В системах управления контентом (WordPress, Joomla, Bitrix) роли определяют права редакторов, авторов, администраторов. В ERP-системах (SAP, 1С:Предприятие) RBAC используется для разграничения доступа к документам, отчётам и операциям.

Облачные платформы

В облачных сервисах (AWS IAM, Azure RBAC, Google Cloud IAM) RBAC является основным механизмом управления доступом к ресурсам. Пользователям назначаются роли, которые определяют, какие действия (например, создание виртуальных машин, чтение данных из хранилища) они могут выполнять в рамках подписки или проекта.

Реализация в российских информационных системах

В Российской Федерации требования к ролевому управлению доступом регулируются рядом нормативных документов, в том числе методическими документами ФСТЭК России (Федеральная служба по техническому и экспортному контролю). Для государственных информационных систем (ГИС) и систем персональных данных (ИСПДн) обязательно применение RBAC как одного из механизмов защиты от несанкционированного доступа. В операционных системах из Единого реестра российского ПО (например, «Ред ОС», «Астра Linux», «Альт Линукс») RBAC реализован на уровне ядра и подсистем безопасности. В платформе «1С:Предприятие» ролевая модель используется для настройки прав доступа к объектам конфигурации (справочникам, документам, отчётам).

Критика и альтернативы

Основная критика RBAC связана с его статичностью и сложностью поддержки в динамических средах. В ответ на эти ограничения были разработаны альтернативные модели:

  • Атрибутное управление доступом (Attribute-Based Access Control, ABAC) — права доступа вычисляются на основе атрибутов субъекта, объекта, действия и окружения (например, время, местоположение). ABAC более гибок, но сложнее в реализации и аудите.
  • Управление доступом на основе политик (Policy-Based Access Control, PBAC) — использует формальные политики, часто на языке XACML, для принятия решений.
  • Управление доступом на основе задач (Task-Based Access Control, TBAC) — права привязываются к конкретным задачам или рабочим процессам, а не к ролям.

Тем не менее, RBAC остаётся наиболее распространённой моделью в корпоративных и государственных системах благодаря своей простоте, предсказуемости и соответствию традиционной организационной структуре.

Интересные факты

  • В 2010 году исследователи из NIST показали, что в типичной крупной организации (более 10 000 пользователей) количество ролей может достигать 500–1000, а число связей между пользователями и ролями — десятков тысяч.
  • В некоторых системах (например, в SAP) используется расширенная модель RBAC, включающая не только роли, но и профили, которые могут комбинировать несколько ролей.
  • В российской ОС Astra Linux Special Edition реализована мандатно-ролевая модель (MROSL DP), сочетающая RBAC с мандатным управлением доступом, что позволяет одновременно защищать данные по уровню секретности и по должностным обязанностям.

Источники

  • ANSI INCITS 359-2004. Role Based Access Control.
  • Ferraiolo, D. F., Kuhn, D. R. Role-Based Access Control. — 1992.
  • Sandhu, R. et al. Role-Based Access Control Models. — IEEE Computer, 1996.
  • Методические документы ФСТЭК России: «Меры защиты информации в государственных информационных системах» (утверждены приказом ФСТЭК № 17 от 11.02.2013).
  • Документация по подсистеме PARSEC ОС Astra Linux Special Edition.
  • Стандарт ISO/IEC 27002:2022 (раздел 9.2 — управление доступом).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →