При использовании безопасности ABAC, как вы ищите правила?

При реализации ABAC / XACML в спецификации указано, что вы должны перехватывать запросы на конфиденциальные данные с помощью PEP, которые направляют запрос на PDP (PEP включают атрибуты о субъекте, среде, ресурсе и действии при вызове PDP).

Затем PDP определяет, какие правила необходимо оценить для принятия решения о доступе.

Из Википедии: https://en.wikipedia.org/wiki/XACML

XACML предоставляет цель [5], которая в основном представляет собой набор упрощенных условий для объекта, ресурса и действия, которые должны быть выполнены, чтобы набор политик, политика или правило применялись к данному запросу. Когда обнаруживается, что политика или набор политик применим к данному запросу, его правила оцениваются для определения решения о доступе и ответа.

Набор политик, политика и правило могут содержать целевые элементы.

Насколько я понимаю, то, как PDP решает, какие правила в PIP применимы, зависит от конкретной реализации, но это кажется очень важной частью процесса - например, если вы пропустите правило, вы не сможете правильно оценить запрос. Какими способами люди это реализовали? Что сработало, а что нет? (Я неохотно склоняюсь к поиску по таблице EAV-типа.)


person jbd    schedule 26.04.2016    source источник
comment
Я обновил страницу Википедии, чтобы лучше объяснить архитектуру XACML.   -  person David Brossard    schedule 27.04.2016


Ответы (1)


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

Только PDP решает, какие политики активировать и оценивать на основе входящего запроса от PEP. PEP не знает, сколько существует политик. Вы не пропустите правило, о котором говорите в своем вопросе. Это не обязанность PDP. Обычно вы не реализуете свой собственный PDP. Вы бы использовали стандартный. Есть несколько движков с открытым исходным кодом, например SunXACML и коммерческие альтернативы, например Аксиоматика.

PIP используется для получения значения атрибута, а не для получения политики.

Образец представления политики XACML

person David Brossard    schedule 27.04.2016
comment
Имеет смысл. Спасибо. Но как PDP решает, какие политики необходимо оценивать? Что-то вроде того, если запрос предназначен для действия «запись», оценить все политики, которые могут разрешить действия записи? - person jbd; 28.04.2016
comment
Политики содержат цели, которые определяют, применяются ли они. Например, цель политики может сказать role == manager. Когда PEP отправляет PDP запрос, он содержит значения атрибутов, которые используются для определения применимости политики. - person David Brossard; 29.04.2016
comment
Хорошо спасибо. Допустим, PDP находит несколько применимых политик (на основе атрибутов, переданных PEP) и определяет, что ему нужно найти еще несколько атрибутов, ищет ли PDP затем дополнительные требуемые политики на основе атрибутов, которые он только что нашел. (Не уверен, что это имеет большое значение для "настоящего слова" ..) - person jbd; 03.05.2016
comment
PDP будет искать атрибуты из PIP на лету по мере необходимости (на самом деле это зависит от реализации, поэтому разные PDP ведут себя по-разному) - person David Brossard; 03.05.2016