多个策略文件中的XACML Authzforce PDP配置

时间:2019-12-24 19:06:04

标签: authorization xacml abac pdp authzforce

我正在使用Authzforce PDP引擎和配置pdp.xml文件运行XACML,如下所示:

<?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>

现在,PDP引擎通过rootPolicyProvider读取的文件${PARENT_DIR}/policy.xml包含实际的XACML策略,并且变得相当大。因此,我想将XACML策略分为多个文件policy1.xml,policy2.xml,policy3.xml等。然后,这些文件需要由PDP引擎读取。

有人知道PDP引擎配置xml文件是否能够使用多个policyProviders进行指定吗?不太困难,但是在网上搜索几个小时后,我还没有找到任何解决方案。

期待您的回复。

Thx,杰克。

1 个答案:

答案 0 :(得分:0)

对于此用例,建议升级到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评估从此处开始)。在这种情况下,根策略应该结合其他策略,即是具有定义的PolicyCombiningAlgId的XACML PolicySet以及对其他策略的一个或多个PolicyIdReferences或PolicySetIdReferences。

您可以使用authzforce github上的通配符选项找到完整的示例。

您还可以在XML schema中找到有关PDP配置格式(最新版本)的更多信息。