Управление доступом на основе атрибутов ( ABAC ), также известное как управление доступом на основе политик для IAM , определяет парадигму управления доступом, в которой разрешение субъекта на выполнение набора операций определяется путем оценки атрибутов, связанных с субъектом, объектом, запрошенными операциями и, в некоторых случаях, атрибутами среды. [1]
ABAC — это метод реализации политик контроля доступа, который легко адаптируется и может быть настроен с использованием широкого спектра атрибутов, что делает его пригодным для использования в распределенных или быстро меняющихся средах. Единственными ограничениями политик, которые могут быть реализованы с помощью ABAC, являются возможности вычислительного языка и доступность соответствующих атрибутов. [2] Правила политики ABAC генерируются как булевы функции атрибутов субъекта, атрибутов объекта и атрибутов среды. [3]
В отличие от управления доступом на основе ролей (RBAC), которое определяет роли, несущие определенный набор привилегий, связанных с ними, и которым назначаются субъекты, ABAC может выражать сложные наборы правил, которые могут оценивать множество различных атрибутов. Определяя согласованные атрибуты субъекта и объекта в политиках безопасности, ABAC устраняет необходимость в явных разрешениях для субъектов отдельных лиц, необходимых в методе доступа, отличном от ABAC, что снижает сложность управления списками доступа и группами.
Значения атрибутов могут быть заданными или атомарными. Атрибуты с заданными значениями содержат более одного атомарного значения. Примерами являются роль и проект . Атрибуты с атомарными значениями содержат только одно атомарное значение. Примерами являются допуск и чувствительность . Атрибуты можно сравнивать со статическими значениями или друг с другом, что позволяет осуществлять контроль доступа на основе отношений. [ необходима цитата ]
Хотя сама концепция существует уже много лет, ABAC считается моделью авторизации «следующего поколения», поскольку она обеспечивает динамическое, учитывающее контекст и риски управление доступом к ресурсам, позволяя определять политики управления доступом, включающие конкретные атрибуты из множества различных информационных систем, для разрешения авторизации и достижения эффективного соответствия нормативным требованиям, что обеспечивает предприятиям гибкость в их реализации на основе существующих инфраструктур.
Управление доступом на основе атрибутов иногда называют управлением доступом на основе политик ( PBAC ) или управлением доступом на основе утверждений ( CBAC ), что является специфическим термином Microsoft. Ключевыми стандартами, реализующими ABAC, являются XACML и ALFA (XACML) . [4]
ABAC можно рассматривать как:
ABAC поставляется с рекомендуемой архитектурой, которая выглядит следующим образом:
Атрибуты могут быть о чем угодно и о ком угодно. Они, как правило, делятся на 4 категории:
Политики — это утверждения, которые объединяют атрибуты для выражения того, что может произойти, а что нет. Политики в ABAC могут быть политиками предоставления или запрета. Политики также могут быть локальными или глобальными и могут быть написаны таким образом, что они переопределяют другие политики. Вот некоторые примеры:
С ABAC вы можете иметь неограниченное количество политик, которые подходят для множества различных сценариев и технологий. [7]
Исторически модели контроля доступа включали обязательный контроль доступа (MAC), дискреционный контроль доступа (DAC) и, в последнее время, контроль доступа на основе ролей (RBAC). Эти модели контроля доступа ориентированы на пользователя и не учитывают дополнительные параметры, такие как информация о ресурсе, связь между пользователем (запрашивающей сущностью) и ресурсом, а также динамическую информацию, например, время суток или IP-адрес пользователя.
ABAC пытается решить эту проблему, определяя контроль доступа на основе атрибутов, которые описывают запрашивающую сущность (пользователя), целевой объект или ресурс, желаемое действие (просмотр, редактирование, удаление) и окружающую или контекстную информацию. Вот почему контроль доступа называется основанным на атрибутах. [8]
Существует три основных варианта реализации ABAC:
XACML , eXtensible Access Control Markup Language, определяет архитектуру (общую с ALFA и NGAC), язык политик и схему запроса/ответа. Он не обрабатывает управление атрибутами (назначение атрибутов пользователя, назначение атрибутов объекта, назначение атрибутов среды), которое оставлено традиционным инструментам IAM , базам данных и каталогам.
Компании, включая все подразделения вооруженных сил США, начали использовать ABAC. На базовом уровне ABAC защищает данные с помощью правил «ЕСЛИ/ТО/И», а не назначает данные пользователям. Министерство торговли США сделало это обязательной практикой, и ее принятие распространяется на несколько правительственных и военных агентств. [9]
Концепция ABAC может применяться на любом уровне технологического стека и инфраструктуры предприятия. Например, ABAC может использоваться на уровне брандмауэра, сервера, приложения, базы данных и данных. Использование атрибутов вносит дополнительный контекст для оценки легитимности любого запроса на доступ и информирования о решении предоставить или запретить доступ.
Важным соображением при оценке решений ABAC является понимание их потенциальных накладных расходов на производительность и их влияния на пользовательский опыт. Ожидается, что чем более детализированы элементы управления, тем выше накладные расходы.
ABAC можно использовать для применения основанной на атрибутах, детальной авторизации к методам или функциям API. Например, банковский API может предоставлять метод approvedTransaction(transId). ABAC можно использовать для защиты вызова. С помощью ABAC автор политики может написать следующее:
Поток будет следующим:
Одним из ключевых преимуществ ABAC является то, что политики и атрибуты авторизации могут быть определены технологически нейтральным способом. Это означает, что политики, определенные для API или баз данных, могут быть повторно использованы в пространстве приложений. Распространенные приложения, которые могут выиграть от ABAC:
Здесь применим тот же процесс и последовательность действий, что описаны в разделе API.
Безопасность баз данных уже давно является специфической чертой поставщиков баз данных: Oracle VPD, IBM FGAC и Microsoft RLS — все это средства для достижения детальной безопасности, подобной ABAC.
Примером может служить:
role = manager
могут выполнять действие SELECT
, table = TRANSACTIONS
еслиuser.region = transaction.region
Безопасность данных обычно идет на один шаг дальше безопасности базы данных и применяет контроль непосредственно к элементу данных. Это часто называют безопасностью, ориентированной на данные. В традиционных реляционных базах данных политики ABAC могут контролировать доступ к данным в таблице, столбце, поле, ячейке и подъячейке, используя логические элементы управления с условиями фильтрации и маскирования на основе атрибутов. Атрибуты могут быть данными, пользователем, сеансом или инструментами, чтобы обеспечить максимальный уровень гибкости в динамическом предоставлении/запрете доступа к определенному элементу данных. В больших данных и распределенных файловых системах, таких как Hadoop, ABAC, применяемый на уровне данных, контролирует доступ к папке, подпапке, файлу, подфайлу и другим гранулярным.
Контроль доступа на основе атрибутов также может применяться к системам Big Data, таким как Hadoop. Политики, аналогичные тем, которые использовались ранее, могут применяться при извлечении данных из озер данных. [10] [11]
Начиная с Windows Server 2012, Microsoft реализовала подход ABAC для контроля доступа к файлам и папкам. Это достигается с помощью динамического контроля доступа (DAC) [12] и языка определения дескрипторов безопасности (SDDL). SDDL можно рассматривать как язык ABAC, поскольку он использует метаданные пользователя (заявки) и файла/папки для контроля доступа.