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

时间:2020-03-03 09:58:07

标签: authorization access-control xacml abac authzforce

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

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

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

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

的那个

1 个答案:

答案 0 :(得分:1)

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

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

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