Избегайте дублирования кода в XACML

Описание

Я создал несколько файлов XACML, содержащих несколько политик, которые оцениваются в соответствии с first-applicable алгоритмом объединения правил.

Иногда мне не удается избежать дублирования кода в XACML, и мне приходится копировать определенную политику XACML в несколько мест в файле XACML.

Можно ли избежать дублирования кода в XACML, например, с помощью <import file="xacml/deny-policy.xacml"/> как в xml или другим способом?


person 030    schedule 09.03.2014    source источник


Ответы (2)


На самом деле уже есть способ сослаться на уже существующие политики внутри другой политики для повторного использования. Вы можете использовать любой из двух способов:

  1. Использование ссылки на идентификатор политики: вызовите существующую политику внутри другой политики / набора политик.
  2. Использование идентификатора набора политик: вызов существующего набора политик внутри другого набора политик

Например, ниже приведен способ вызова существующей политики внутри другой политики:

Существующая политика policy1 будет возобновлена:

<Policy PolicyId="policy1" ....>
....
....
</Policy>

Вызов «policy1» внутри другой политики:

<Policy PolicyId="MasterPolicy" ....>
<Description>Master Policy Set</Description>
<Target>
  ....
</Target>

<PolicyIdReference>policy1</PolicyIdReference>

</Policy>
person Yusuf Khan    schedule 09.03.2014
comment
Спасибо за ответ. Я пытался реализовать это в нашем программном обеспечении, но это не работает. Я проверил документацию OASIS XACML 2.0 и 3.0, и требуются элементы PolicyIdReference и PolicySetIdReference. В нашем программном обеспечении была зарегистрирована ошибка, чтобы исправить это и реализовать XACML в соответствии со стандартом. Я убежден, что реализация элементов PolicyIdReference и PolicySetIdReference в нашем программном обеспечении - это удобный способ для нас и наших клиентов избежать дублирования кода в XACML. Я сообщу вам результат, если ошибка будет решена. - person 030; 16.03.2014

В дополнение к тому, что сказал Юсуф, вы также можете использовать определения переменных. Определения переменных - это выражения, которые вы можете определять внутри политик и которые можно повторно использовать в условиях правил.

См. спецификацию XACML подробнее.

person David Brossard    schedule 10.03.2014
comment
Спасибо за ответ. Я проверил это в нашем программном обеспечении, и это не реализовано, хотя это требуется в соответствии со стандартами XACML 2.0 и 3.0. Я зарегистрировал ошибку по этому поводу. Я убежден, что использование VariableDefinition и VariableReference позволит избежать дублирования кода в XACML. Я полагаю, что нашим клиентам будет немного сложнее избежать дублирования кода в XACML, чем через PolicyIdReference и PolicySetIdReference, но это интересно реализовать, и эти элементы требуются в соответствии со стандартом. - person 030; 16.03.2014