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

Ролевая модель доступа

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

История

Концепция ролевого управления доступом начала формироваться в 1970-х годах в рамках развития систем управления базами данных и многопользовательских операционных систем. Первые формальные описания RBAC появились в работах Дэвида Феррайоло и Ричарда Куна в 1992 году, которые предложили базовую модель, включающую три основных элемента: пользователи, роли и разрешения. В 1990-х годах Национальный институт стандартов и технологий США (NIST) разработал стандартную модель RBAC, которая была опубликована в 2000 году как ANSI INCITS 359-2004. Этот стандарт определил четыре уровня реализации: плоский RBAC (базовый), иерархический RBAC (с наследованием ролей), ограниченный RBAC (с разделением обязанностей) и симметричный RBAC (с поддержкой сессий). В 2010-х годах RBAC стал основой для многих современных систем управления доступом, включая облачные платформы (AWS IAM, Azure RBAC) и корпоративные приложения (SAP, Oracle, 1С).

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

Пользователи, роли, разрешения

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

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

Пользователь может одновременно работать в нескольких сессиях, в каждой из которых активируется определённый набор ролей. Например, сотрудник может в одной сессии работать как «оператор» (только просмотр данных), а в другой — как «администратор» (изменение конфигурации). Это позволяет гибко управлять доступом в рамках одного пользовательского аккаунта.

Модели RBAC по стандарту NIST

Стандарт ANSI INCITS 359-2004 выделяет четыре уровня реализации RBAC:

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

Базовая модель, включающая минимальный набор элементов: пользователи, роли, разрешения и связи между ними. Каждый пользователь может иметь несколько ролей, каждая роль — несколько разрешений. Разрешения назначаются только ролям, а не пользователям напрямую.

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

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

Ограниченный RBAC (Constrained RBAC)

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

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

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

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

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

  • Linux: RBAC реализован через модули SELinux (Security-Enhanced Linux) и AppArmor, где роли определяют контексты безопасности для процессов и файлов.
  • Windows: RBAC используется в системе управления доступом на основе ролей (Role-Based Access Control) в Active Directory, где администраторы создают роли для групп пользователей и назначают им разрешения на объекты (файлы, папки, принтеры).

Базы данных

  • Oracle Database: RBAC реализован через роли базы данных (например, CONNECT, RESOURCE, DBA), которые объединяют системные привилегии и привилегии на объекты.
  • PostgreSQL: поддерживает роли с возможностью наследования и назначения разрешений на таблицы, представления, функции.
  • Microsoft SQL Server: использует роли сервера (sysadmin, db_owner) и роли базы данных (db_datareader, db_datawriter).

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

  • AWS IAM (Identity and Access Management): RBAC реализован через политики доступа, привязанные к ролям, которые могут быть назначены пользователям, группам или сервисам. Роли в AWS могут быть временными (через STS) и поддерживают доверие между аккаунтами.
  • Azure RBAC: в Microsoft Azure роли определяются на уровне подписки, группы ресурсов или отдельного ресурса. Встроенные роли включают «Владелец», «Участник», «Читатель».
  • Google Cloud IAM: роли могут быть предопределёнными (например, roles/viewer, roles/editor) или пользовательскими, с точным набором разрешений.

Корпоративные приложения

  • SAP ERP: RBAC реализован через профили авторизации, которые объединяют роли и объекты авторизации (например, транзакции, отчёты).
  • 1С:Предприятие: роли доступа назначаются пользователям и определяют набор прав на объекты конфигурации (справочники, документы, отчёты).
  • Microsoft Dynamics 365: RBAC используется для разграничения доступа к записям, формам и отчётам на основе бизнес-единиц и команд.

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

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

  • Упрощение администрирования: права назначаются ролям, а не каждому пользователю отдельно, что снижает количество операций при добавлении или увольнении сотрудников.
  • Масштабируемость: добавление новых пользователей или изменение их обязанностей не требует пересмотра всей системы прав — достаточно изменить назначение ролей.
  • Гибкость: поддержка иерархии и разделения обязанностей позволяет адаптировать модель под сложные организационные структуры.
  • Соответствие стандартам: RBAC соответствует требованиям многих регуляторов (например, PCI DSS, HIPAA, GDPR) в части управления доступом.

Недостатки

  • Сложность начальной настройки: требуется тщательный анализ бизнес-процессов для определения всех необходимых ролей и их полномочий.
  • Риск избыточности ролей: при большом количестве ролей может возникнуть ситуация, когда пользователь получает больше прав, чем необходимо (принцип минимальных привилегий нарушается).
  • Трудности с динамическими сценариями: RBAC плохо подходит для систем, где права доступа должны меняться в реальном времени (например, в облачных вычислениях с временными ресурсами).
  • Отсутствие поддержки атрибутов: RBAC не учитывает контекст (время, местоположение, устройство), что требует дополнения другими моделями (например, ABAC — Attribute-Based Access Control).

Сравнение с другими моделями доступа

МодельПринципПримеры применения
Дискреционное управление (DAC)Владелец объекта сам назначает праваФайловые системы (Linux chmod, Windows ACL)
Мандатное управление (MAC)Права определяются метками безопасностиВоенные системы, SELinux в режиме strict
Ролевое управление (RBAC)Права через ролиКорпоративные системы, базы данных
Атрибутивное управление (ABAC)Права на основе атрибутов (пользователь, объект, среда)Облачные платформы, IoT
Управление на основе правил (Rule-based)Права по заранее заданным правиламМежсетевые экраны, системы фильтрации

Критика и ограничения

Основная критика RBAC связана с его статичностью и сложностью поддержки в крупных организациях. Исследования (например, работа Феррайоло и Куна, 2009) показывают, что в системах с сотнями ролей и тысячами пользователей администрирование RBAC может стать не менее трудоёмким, чем прямое назначение прав. Кроме того, RBAC не учитывает временные и контекстные ограничения, что может приводить к уязвимостям, если пользователь активирует роль в неподходящий момент. Для преодоления этих ограничений часто применяются гибридные модели, сочетающие RBAC с ABAC или с динамическими правилами.

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

  • В 2004 году стандарт RBAC от NIST был принят как американский национальный стандарт ANSI INCITS 359-2004, а в 2012 году — как международный стандарт ISO/IEC 10181-3.
  • Крупнейшая реализация RBAC в мире — система управления доступом в социальной сети Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой в РФ), где роли определяют права для миллиардов пользователей и миллионов приложений.
  • В операционной системе Linux RBAC через SELinux используется в мандатном режиме, что делает его одним из самых строгих механизмов контроля доступа в открытых системах.

Источники

  1. Ferraiolo D. F., Kuhn D. R. Role-Based Access Control // Proceedings of the 15th National Computer Security Conference. — 1992.
  2. ANSI INCITS 359-2004. Role Based Access Control. — American National Standards Institute, 2004.
  3. Sandhu R., Coyne E. J., Feinstein H. L., Youman C. E. Role-Based Access Control Models // IEEE Computer, 1996, Vol. 29, No. 2.
  4. Официальная документация AWS IAM, Azure RBAC, Google Cloud IAM.
  5. Документация Oracle Database, PostgreSQL, Microsoft SQL Server по управлению ролями.

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

На главную BFOmetr →