Я просматриваю спецификации XACMLv3 и у вас есть вопрос о применимости политик и наборов политик в случае, если один из алгоритмов объединения допускает ситуацию, когда базовые правила или политики действуют на разные наборы атрибутов из запроса, возвращая действительный отклик. Например, политика определяет два правила, первое правило действует на атрибуты [A, B, C], второе правило действует на атрибуты [A, B, D], а алгоритм объединения правил Первый применимый а>. Мой вопрос заключается в том, к какому набору атрибутов применима политика: применима ли она только к полному набору атрибутов [A, B, C, D] или также к подмножествам [A, B, C] и [A, B, D]: т. е. эта политика выбрана для оценки в случае, если набор атрибутов является полным набором, или она также оценивается для подмножеств? Разделы 2.2 и 2.3 ничего об этом не упоминает.
Применяется ли политика только к полному набору или также к подмножествам атрибутов?
Ответы (3)
PDP попытается сопоставить входящий запрос с rule 1
; если есть совпадение, PDP ответит Permit
или Deny
и оценка остановится. Если rule 1
не совпадает, PDP пытается сопоставить с rule 2
. Если есть совпадение, PDP отвечает Permit
или Deny
. Если ни rule 1
, ни rule 2
не совпадают, PDP возвращает NotApplicable
.
Пожалуйста, проверьте раздел C.8 для полного псевдокода
Decision firstApplicableEffectRuleCombiningAlgorithm(Rule[] rules)
{
for( i = 0 ; i < lengthOf(rules) ; i++ )
{
Decision decision = evaluate(rules[i]);
if (decision == Deny)
{
return Deny;
}
if (decision == Permit)
{
return Permit;
}
if (decision == NotApplicable)
{
continue;
}
if (decision == Indeterminate)
{
return Indeterminate;
}
}
return NotApplicable;
}
Это означает, что в вашем случае оценивается первое правило (что означает, что атрибуты [A, B, C] будут применимы)
--если есть «Разрешить» или «Запретить», тогда оценка второго правила не будет продолжена (что означает, что атрибуты [A, B, D] не будут оцениваться).
--если есть "NotApplicable", то будет продолжена оценка второго правила (что означает, что атрибуты [A,B,D] будут применимы)
На самом деле я использую этот бесплатный редактор Xacml. Это отличный, простой в использовании редактор на основе графического интерфейса и синтаксиса для очень удобного создания документов XACML. Все, что вам нужно сделать, это создать учетную запись на их веб-сайте, а затем вы можете скачать его.
P.S. Я работаю в компании, которая предоставляет этот редактор XACML.
Политика (набор) выбирается для оценки тогда и только тогда, когда ее <Target>
соответствует запросу, независимо от любого дочернего правила, политики и т. д. внутри.
В вашем случае, если атрибуты запроса:
- субъект-организация = 'Acme'
- тема-роль = 'роль1'
- метод авторизации субъекта = 'базовый'
- идентификатор ресурса = 'res1'
- идентификатор действия = 'прочитать'
... но цель политики: subject-organization = 'Wayne'
и subject-role = 'role2'
(с использованием XACML AllOf для AND), то политика не будет выбрана для оценки, даже если в политике есть правило rule1
с целью, соответствующей всем трем последним атрибутам запрос:
subject-auth-method = 'basic'
и resource-id = 'res1'
и action-id = 'read'
Ни одно правило в политике не будет оцениваться.