Применяется ли политика только к полному набору или также к подмножествам атрибутов?

Я просматриваю спецификации XACMLv3 и у вас есть вопрос о применимости политик и наборов политик в случае, если один из алгоритмов объединения допускает ситуацию, когда базовые правила или политики действуют на разные наборы атрибутов из запроса, возвращая действительный отклик. Например, политика определяет два правила, первое правило действует на атрибуты [A, B, C], второе правило действует на атрибуты [A, B, D], а алгоритм объединения правил Первый применимый. Мой вопрос заключается в том, к какому набору атрибутов применима политика: применима ли она только к полному набору атрибутов [A, B, C, D] или также к подмножествам [A, B, C] и [A, B, D]: т. е. эта политика выбрана для оценки в случае, если набор атрибутов является полным набором, или она также оценивается для подмножеств? Разделы 2.2 и 2.3 ничего об этом не упоминает.


person Lemoi    schedule 28.03.2018    source источник


Ответы (3)


PDP попытается сопоставить входящий запрос с rule 1; если есть совпадение, PDP ответит Permit или Deny и оценка остановится. Если rule 1 не совпадает, PDP пытается сопоставить с rule 2. Если есть совпадение, PDP отвечает Permit или Deny. Если ни rule 1, ни rule 2 не совпадают, PDP возвращает NotApplicable.

person David Brossard    schedule 28.03.2018
comment
Итак, политики и наборы политик выбираются на основе комбинации подмножеств атрибутов, используемых в правилах: т. е. эта политика оценивается, потому что она использует подмножества [A,B,C] и [A,B,D]? Выбор политики для оценки кажется мне очень сложным. - person Lemoi; 29.03.2018

Пожалуйста, проверьте раздел 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.

person Jayanta Debnath    schedule 28.03.2018
comment
Спасибо за совет: то, как работают алгоритмы объединения, не моя проблема, но мне больше непонятно, как выбираются политики и наборы политик для оценки. Мне это кажется настолько сложным и дорогим по этой причине, что выбор политик в большой/тяжело нагруженной системе может стать серьезным узким местом. Есть ли опыт в этом? - person Lemoi; 29.03.2018

Политика (набор) выбирается для оценки тогда и только тогда, когда ее <Target> соответствует запросу, независимо от любого дочернего правила, политики и т. д. внутри.

В вашем случае, если атрибуты запроса:

  • субъект-организация = 'Acme'
  • тема-роль = 'роль1'
  • метод авторизации субъекта = 'базовый'
  • идентификатор ресурса = 'res1'
  • идентификатор действия = 'прочитать'

... но цель политики: subject-organization = 'Wayne' и subject-role = 'role2' (с использованием XACML AllOf для AND), то политика не будет выбрана для оценки, даже если в политике есть правило rule1 с целью, соответствующей всем трем последним атрибутам запрос:

subject-auth-method = 'basic' и resource-id = 'res1' и action-id = 'read' Ни одно правило в политике не будет оцениваться.

person cdan    schedule 30.03.2018
comment
Ситуация, которую вы описываете для запроса, совпадающего с [A, B, C], но политика Target соответствует только атрибутам [E, F], для меня выглядит как настоящая ошибка. Это похоже на написание недостижимого кода и, вероятно, указывает на ошибку автора политики. Для наборов политик обнаружение такой неоднозначности кажется трудной для обнаружения проблемой. - person Lemoi; 30.03.2018
comment
В спецификациях (см. 3.3.2.1) предлагается два метода для расчета цели политики и наборов политик: «В одном методе вычисляется элемент ‹Target› внешнего ‹PolicySet› или ‹Policy› (внешний компонент). как объединение всех элементов ‹Target› упомянутых элементов ‹PolicySet›, ‹Policy› или ‹Rule› (внутренние компоненты). В другом методе элемент ‹Target› внешнего компонента вычисляется как пересечение всех элементов ‹Target› внутренних компонентов». - person Lemoi; 30.03.2018
comment
Проблема, с которой я столкнулась при использовании этих двух методов, заключается в том, что, насколько я могу судить сейчас, политика будет действовать по-разному в зависимости от того, как рассчитывается цель. - person Lemoi; 30.03.2018
comment
Думаю, произошло недоразумение. Я перефразировал свой второй абзац с более явным синтаксисом и более конкретным примером. - person cdan; 03.04.2018
comment
Что касается упомянутого вами §3.3.2.1, я предполагал, что первый способ действительно используется в моем предыдущем примере, т. е. мы предполагаем, что цель политики (набора) объявлена ​​явной записью политики (набора). Я не рекомендую другой путь (с двумя возможными методами вычисления Target), потому что у меня та же проблема, что и у вас, и спецификация (3.3.2.1, 2-й абзац) подтверждает это (цитата): Результаты оценки в каждый случай будет очень разным. Поэтому я считаю его подверженным ошибкам и сбивающим с толку разработчиков политики. - person cdan; 03.04.2018