使用 Authzforce Core 的多租户动态根策略集

Dynamic root policyset for multi-tenancy using Authzforce Core

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

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

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

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

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

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

  1. 在 ROOT 策略中使用 first-applicable 策略组合算法(以便评估在第一个适用的策略集处停止)。
  2. 确保 XACML 请求中存在 tenant/org ID 属性。
  3. 在每个组织策略集中定义一个 XACML 目标,并在此 tenant/org ID 属性上匹配(相等),以确保仅当 tenant/org-id 匹配时才应用(评估)策略集.
  4. 在 PDP 上实施并启用 Decision Cache