我正在使用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,杰克。
答案 0 :(得分:0)
对于此用例,建议升级到AuthzForce Core 14.0.0或更高版本。然后,您有两个选择(请注意,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}/policy1.xml</policyLocation>
<policyLocation>${PARENT_DIR}/policy2.xml</policyLocation>
</policyProvider>
<rootPolicyRef>policy1</rootPolicyRef>
</pdp>
<?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配置格式(最新版本)的更多信息。