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

问题描述 投票:1回答:1

我正在使用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,杰克。

authorization xacml abac pdp authzforce
1个回答
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配置格式(最新版本)的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.