0

我基本上想在多租户系统中使用Authzforce 。

现在,我有一个单一的根策略,其中包含一些PolicySetIdReference指向其他策略集(每个组织)的元素,但我注意到它会尝试解析每个引用元素并查询数据库(我设置了自己的MongoDbBasedRefProvider. 我担心我会不必要地为其他组织加载所有其他策略。

<PolicySet PolicySetId="ROOT" ....>
    <PolicySetIdReference>ID-for-org-1</PolicySetIdReference>
    <PolicySetIdReference>ID-for-org-2</PolicySetIdReference>
</PolicySet>

我是否能够让根策略提供者检查一些条件(基于组织),以便我检查的策略明显更小?在上面的示例中,我只想检索一个ID-for-org-1

4

1 回答 1

1

对于完全多租户,我建议每个租户有一个 PDP 实例,即根据租户 (org) ID 将请求发送到特定PdpEngine实例,例如通过 String-to-PdpEngine 映射或其他任何方式,只是一个建议。

如果您仍想为所有租户使用相同的 PDP 引擎(即为所有租户处理策略),请确保执行所有这些操作:

  1. 在 ROOT 策略中使用first-applicable策略组合算法(以便评估在其中的第一个适用的策略集处停止)。
  2. 确保 XACML 请求中存在租户/组织 ID 属性。
  3. 在每个组织策略集中定义一个 XACML 目标,并在此租户/组织 ID 属性上使用匹配(相等),以确保策略集仅在租户/组织 ID 匹配时应用(评估)。
  4. 在 PDP 上实施和启用决策缓存。
于 2020-03-05T00:34:49.263 回答