2

我正在使用 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>

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

有谁知道 PDP 引擎配置 xml 文件是否能够使用多个 policyProviders 或其他方式指定这一点?这应该不会太难,但是在网上搜索了几个小时后,我还没有找到任何解决方案。

期待您的回复。

谢谢,杰克。

4

1 回答 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 评估开始的地方)。在这种情况下,根策略应该结合其他策略,即是一个 XACML PolicySet,其中定义了 PolicyCombiningAlgId 和一个或多个 PolicyIdReferences 或 PolicySetIdReferences 到其他策略。

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

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

于 2019-12-27T02:16:57.723 回答