Конфигурация XACML Authzforce PDP в нескольких файлах политик

Я запускаю XACML, используя механизм Authzforce PDP и файл конфигурации pdp.xml, который выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<pdp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://authzforce.github.io/core/xmlns/pdp/6.0"
     version="6.0.0">
  <rootPolicyProvider id="rootPolicyProvider"
        xsi:type="StaticRootPolicyProvider" policyLocation="${PARENT_DIR}/policy.xml" />
</pdp>

Теперь файл ${PARENT_DIR}/policy.xml, который считывается механизмом PDP через rootPolicyProvider, содержит фактические политики XACML и становится довольно большим. Итак, я хотел бы разделить политики XACML на несколько файлов policy1.xml, policy2.xml, policy3.xml и т. Д. Эти файлы затем необходимо прочитать механизму PDP.

Кто-нибудь знает, может ли XML-файл конфигурации механизма PDP указать это с помощью нескольких policyProvider или иным образом? Это не должно быть слишком сложно, но я еще не нашел решения после нескольких часов поиска в Интернете.

Жду ваших ответов.

Спасибо, Джек.


person Jack Verhoosel    schedule 24.12.2019    source источник


Ответы (1)


В этом случае я рекомендую перейти на AuthzForce Core 14.0.0 или более поздней версии. Тогда у вас есть два варианта (обратите внимание, что XML-схема и пространство имен немного изменились):

  1. Несколько элементов policyLocation, например:
<?xml version="1.0" encoding="UTF-8"?>
<pdp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://authzforce.github.io/core/xmlns/pdp/7.0" version="7.0.0">
    <policyProvider id="refPolicyprovider" xsi:type="StaticPolicyProvider">
        <policyLocation>${PARENT_DIR}/policy1.xml</policyLocation>
        <policyLocation>${PARENT_DIR}/policy2.xml</policyLocation>
    </policyProvider>
    <rootPolicyRef>policy1</rootPolicyRef>
</pdp>
  1. Используйте шаблон подстановки как, например, policyLocation (включая все файлы политик с расширением .xml):
<?xml version="1.0" encoding="UTF-8"?>
<pdp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://authzforce.github.io/core/xmlns/pdp/7.0" version="7.0.0">
    <policyProvider id="refPolicyprovider" xsi:type="StaticPolicyProvider">
        <policyLocation>${PARENT_DIR}/*.xml</policyLocation>
    </policyProvider>
    <rootPolicyRef>policy1</rootPolicyRef>
</pdp>

В обоих случаях rootPolicyRef определяет корневую политику (с которой начинается оценка PDP). В этом случае предполагается, что корневая политика объединяет другие политики, то есть является набором политик XACML с определенным PolicyCombiningAlgId и одним или несколькими PolicyIdReferences или PolicySetIdReferences для других политик.

Вы можете найти полный пример с использованием подстановочного знака на authzforce github.

Также вы можете найти дополнительную информацию о формате конфигурации PDP (последняя версия) в XML-схема.

person cdan    schedule 27.12.2019
comment
Спасибо большое, Кирилл, я нырну и попробую !! С уважением, Джек - person Jack Verhoosel; 27.12.2019
comment
Пожалуйста, примите ответ, если он вам подходит. - person cdan; 30.03.2020