Графовый контроль доступа
Графовый контроль доступа (англ. Graph-based access control, GBAC) — это декларативный метод определения прав доступа, распределения задач, определённых получателей и содержимого в информационных системах. Права доступа могут назначаться к объектам, таким как файлы или документы, а также к бизнес-объектам, например, аккаунтам. Графовый контроль доступа применяется и для назначения агентов на задачи в средах управления рабочими процессами. Организации описываются как особый вид семантического графа, включающего организационные подразделения, роли, функции, а также человеческих и автоматических агентов, например, людей и машины. Главное отличие от других подходов, таких как ролевой контроль доступа или атрибутивный контроль доступа, заключается в том, что в GBAC права доступа определяются с помощью организационного языка запросов, а не полным перечислением.
История
Основы графового контроля доступа были заложены в исследовательском проекте CoCoSOrg (Configurable Cooperation System)[1] в Университете Бамберга. В CoCoSOrg организация представляется в виде семантического графа, а для спецификации агентов и их прав доступа в среде рабочих процессов используется формальный язык. В рамках проекта C-Org в Институте информационных систем университета Хофа подход был расширен такими возможностями, как разделение полномочий, контроль доступа в виртуальных организациях[2] и субъектно-ориентированный контроль доступа[3]. После 2015 года фокус исследований Института информационных систем при Университете Хофа и Университета Бамберга сместился с графового контроля доступа на другие области, такие как искусственный интеллект и анализ данных. В период с 2015 по 2026 год в индустрии произошёл заметный переход от классических моделей (RBAC и ABAC), реализованных на реляционных базах данных, к графовым подходам, часто обозначаемым термином ReBAC (контроль доступа на основе взаимосвязей)[4]. Этот сдвиг был обусловлен ограничениями традиционных моделей при работе со сложными иерархическими связями. К середине 2020-х годов графовый подход начал активно внедряться в корпоративные системы для решения проблем масштабирования и «взрыва ролей». В ноябре 2024 года фундаментальные принципы графовой авторизации и методы моделирования графов для реализации контроля доступа обсуждались на конференции NODES в докладе Алекса Бабеану.
Определение
Графовый контроль доступа строится из двух компонентов:
- Семантический граф, моделирующий организацию
- Язык запросов.
Техническая реализация декларативности в GBAC заключается в том, что правила доступа формулируются как описание желаемого результата в виде шаблона связей в графе, а не как пошаговый алгоритм проверки. В отличие от императивных подходов, система описывает условия, которым должен соответствовать запрос на доступ, а задача по поиску этого шаблона делегируется движку графовой базы данных[5].
По состоянию на 2026 год GBAC не имеет формальной стандартизации в рамках специальной публикации NIST SP 800-207 или стандартов ISO/IEC, в отличие от таких моделей, как управление доступом на основе ролей (RBAC) и управление доступом на основе атрибутов (ABAC)[6].[7]
Организационный граф разделён на уровень типов и уровень экземпляров. На уровне экземпляров есть узлы для организационных единиц, функциональных единиц и агентов. Базовая структура организации определяется с помощью так называемых «структурных связей». Такие связи описывают отношения «часть от» между функциональными и организационными единицами, а также закрепление агентов за функциональными единицами. Помимо этого предусмотрены специализированные типы связей, такие как «замещение» или «проинформирован». Моделировщик может расширять эти типы. Все отношения могут быть контекстно зависимыми с использованием предикатов.
На уровне типов организационные структуры описываются более обобщённо. Здесь определяются типы организационных и функциональных единиц, а также используются те же типы связей, что и на уровне экземпляров. Типовые определения могут применяться для создания новых экземпляров или повторного использования организационных знаний в случае исключений.
Современный подход к описанию графов для GBAC опирается на стандарты семантической паутины. На онтологическом уровне (уровне типов) используются стандарт OWL и словари ORG и FOAF, на уровне экземпляров — RDF, а для валидации данных и определения политик доступа применяется стандарт SHACL[8].[9][10]
В графовом контроле доступа используется язык запросов для определения агентов с определёнными характеристиками или возможностями. Следующая таблица демонстрирует использование языка запросов в контексте матрицы управления доступом.
Первый запрос означает, что все менеджеры, работающие в компании более шести месяцев, могут читать финансовый отчёт, а также менеджеры, для которых установлен флаг «ReadFinancialReport».
Ежедневный финансовый отчёт может быть изменён только менеджером контроллингового отдела или клерками этого отдела, если у них есть соответствующее разрешение (WriteFinancialReport==TRUE).
| Объект данных | Чтение | Запись |
|---|---|---|
| Ежедневный финансовый отчёт | Manager(*).(Now() - HiringYear > 0.5) ИЛИ Manager.ReadFinancialReport == TRUE | Manager(Controlling) ИЛИ Clerk(Controlling).WriteFinancialReport == TRUE |
Хотя единого предписанного языка для графового контроля доступа не существует, технологической основой для таких систем служат современные стандарты языков запросов к графам свойств. В апреле 2024 года был утверждён международный стандарт ISO/IEC — GQL (Graph Query Language), разработанный для декларативных запросов к графам свойств. Также в рамках стандарта SQL:2023 появилось расширение SQL/PGQ (SQL/Property Graph Queries), позволяющее выполнять графовые запросы в SQL-среде[11]. Наряду с официальными стандартами, широкое применение в индустрии находит язык Cypher, который считается фактическим стандартом благодаря развитой экосистеме[12]
Реализации
Впервые графовый контроль доступа был реализован в среде CoCoS в виде организационного сервера CoCoSOrg[1]. В проекте C-Org он был дополнен возможностями, такими как разделение полномочий и контроль доступа в распределённых средах. Ранее существовавшая облачная реализация[13] на платформе IBM Bluemix[14] (ныне IBM Cloud) была закрыта и заменена на систему Identity and Access Management (IAM).
Во всех реализациях сервер принимает запрос от клиентской системы и определяет на его основе множество агентов, которое возвращается вызывающему клиенту. В современных ИТ-экосистемах актуальными точками интеграции выступают микросервисные архитектуры, кластеры Kubernetes (через Open Policy Agent) и архитектуры Zero Trust[4]. Кроме того, графовый контроль доступа выступает механизмом авторизации в рамках концепции Identity Fabric[15].
В качестве технологической основы для современных реализаций GBAC используются графовые СУБД, такие как Neo4j и AWS Neptune. Для обеспечения высокой производительности проверок прав доступа в реальном времени критически важна комплексная оптимизация выполнения запросов, включающая эффективное моделирование данных, индексацию и кэширование[16].
Сравнение с другими моделями
Графовый контроль доступа (GBAC) тесно связан с другими популярными моделями управления авторизацией и предлагает решения для их ограничений в сложных распределённых системах[4]:
- Управление доступом на основе отношений (ReBAC): ReBAC представляет собой концептуальную модель, определяющую права доступа на основе связей между субъектом и объектом. GBAC выступает в качестве технической реализации этой концепции, используя графовые базы данных как естественный способ воплощения логики отношений[4].
- Next Generation Access Control (NGAC): NGAC является стандартизированной моделью контроля доступа, также использующей графовую структуру. В контексте графовой авторизации NGAC рассматривается как конкретная, формализованная реализация или стандарт в рамках более широкого подхода GBAC[17].
- Управление доступом на основе ролей (RBAC): Традиционная ролевая модель хорошо подходит для организаций со стабильной иерархией, но в динамичных распределённых системах часто приводит к проблеме «взрыва ролей» (необходимости создания множества новых ролей для специфических прав). GBAC решает эту проблему, обеспечивая большую гибкость и лучше справляясь с моделированием сложных иерархий[4][18].
- Управление доступом на основе атрибутов (ABAC): ABAC предоставляет доступ на основе политик, учитывающих атрибуты субъекта, объекта и окружения. GBAC можно рассматривать как расширение ABAC, в котором отношение выступает как особый вид атрибута. При этом графовая модель предлагает более интуитивное и лаконичное моделирование сложных и вложенных связей, которые затруднительно реализовать с помощью классических политик ABAC[4][19].