Как в Диасофт реализовали модель доступа ABAC

ABAC (Attribute-Based Access Control) и XACML (eXtensible Access Control Markup Language) являются двумя важными концепциями в области управления доступом и безопасности информации.

ABAC — это концепция управления доступом, в которой решения о предоставлении доступа основаны на атрибутах субъекта, объекта и окружения. ABAC позволяет гибко определять политики безопасности на основе многих атрибутов, таких как роли, идентификаторы, группы и т.д.

XACML — это язык для определения политик управления доступом, основанный на ABAC. XACML также позволяет гибко определять политики безопасности, что делает его мощным инструментом для управления доступом.

Одним из преимуществ ABAC и XACML является возможность управления доступом на основе контекста. Это позволяет устанавливать правила доступа на основе условий, таких как время, местоположение, роль и другие факторы, что делает их более гибкими, чем традиционные модели управления доступом.

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

Основными компонентами модели XACML являются набор политик, политика и правило.

  • Набор политик. Объединяет политики или наборы политик, определяет возможность совершения какого-либо действия или доступа на основе политик;
  • Политика. Объединяет набор правил и определяет возможность совершения какого-либо действия или доступа на основе правил;
  • Правило. Определяет возможность совершения какого-либо действия или доступа;

Каждый элемент состоит из свойств:

  • Наименование. Наименование, объединяющее по смыслу наборы политик, политики и правила;
  • Цель. Задает условие для дальнейшей проверки доступа действий пользователя к объекту;
  • Условие. Дополнительное условие проверки доступа в виде динамически вычисляемого логического выражения;
  • Эффект. Разрешение или запрет доступа по результату выполнения правила;

Алгоритм комбинации корневого набора/политик/правил:

  • Переопределение отказом. Запрет доступа, если хотя бы один из результатов вычисления вернул запрет;
  • Переопределение разрешением. Разрешение доступа, если хотя бы один из результатов вычисления вернул разрешение;
  • Запретить, если не разрешено. Запрет доступа, если хотя бы один из результатов вычисления не вернул разрешение;

  • Запретить, если не разрешено. Запрет доступа, если хотя бы один из результатов вычисления не вернул разрешение;

  • Переопределение разрешением. Разрешение доступа, если хотя бы один из результатов вычисления вернул разрешение;

  • Переопределение отказом. Запрет доступа, если хотя бы один из результатов вычисления вернул запрет;

  • Разрешить, если не запрещено. Разрешение доступа, если хотя бы один из результатов вычисления не вернул запрет.

В Диасофт реализовали систему назначения и управления доступом, использующую в своей основе описанные выше принципы.

Доступ к объектам системы назначается в централизованной консоли администратора в соответствии со следующей схемой:

Как в Диасофт реализовали модель доступа ABAC

Для оценки разрешения или запрета доступа к бизнес-объекту мы сделали библиотеку-обертку над открытой библиотекой Balana, имплементирующей работу с XACML. Помимо упрощения работы с API Balana, реализована логика проверки доступа к связанным объектам с учетом иерархии.

На API gateway приходит вызов rest API и происходит проверка есть ли настроенные для объекта, с которым работает вызываемое API, политики доступа.

Дальнейшая логика работы делится на две ветки:

  • Настроенных политик нет. Вызов проходит дальше без каких-либо условий. Дополнительно на API gateway может происходить проверка по модели RBAC, реализацию которой в нашей системе мы не рассматриваем в данной статье
  • Настроенные политики есть. В данном случае проверяется право вызова соответствующего АПИ в контексте пользователя и по результатам проверки могут вернуться ограничения на вызов. То есть доступ разрешен, но только к тем объектам, к которым он настроен в соответствии с условиями фильтрации или доступ полностью запрещен ко всем объектам.

В результате проверки, если в системе настроены дополнительные условия фильтрации доступа к объекту, библиотекой проверки возвращается набор условий, который передается в вызываемый микросервис.

Важно отметить, что ABAC и XACML не являются универсальными решениями для всех сценариев управления доступом и безопасности информации. Они могут быть наиболее полезными для организаций с высоким уровнем сложности в управлении доступом, которые требуют гибких и контекстуальных политик безопасности. Для более простых сценариев управления доступом, может быть достаточно использования более простых моделей, таких как RBAC (Role-Based Access Control) . О том как мы реализовали поддержку RBAC и о поддержки описанных механизмов на уровне low-code мы расскажем в одной из следующих статей.

1414
Начать дискуссию