您好我经历了很多关于XACML的用例,但我不知道在PDP中加载策略的最佳方法是什么。根据OASIS定义的PDP工作流程,我理解当进入的请求将来到PDP。 PDP负责根据请求匹配相应的策略。
由于PDP将匹配每个策略,只需考虑一种情况,即我在分布式环境中存储了10,000个策略,那时会发生什么。它将在匹配中消耗越来越多的时间,这不是匹配策略的有效方式。
我需要对这个问题做一些澄清:
如何在不同的服务器上分发策略?
如果我在不同服务器上分发策略,那么我的PDP将如何识别并从特定服务器获取相应的策略?
PDP会识别与传入请求匹配的确切政策的最佳方式是什么?
答案 0 :(得分:2)
处理大量(10,000)策略的情况的语法方法是尽可能明智地使用PolicySet,Policy和Rule级别提供的“Target”子句,以便尽快修剪决策树
假设您知道10,000个策略中只有1000个用于财务部门操作,可以添加资源类别属性“dept-focus”,我们通过检查来修剪树
target: resource.dept-focus == "finance"
如果您知道财务部门的政策涉及5个不同的应用程序(可能是一些常见的部门策略),那么您可以使用“app-id”属性进行修剪。等等。
当然,为了实现这一点,PEP需要将这些属性id的适当值添加到XACML请求中。
更加以部署为中心的解决方案是将10,000个策略拆分为更小的块,然后将这些块部署到单独的PDP组中。各种供应商对这些概念使用各种名称(如果可用)。我为之工作的Axiomatics称这些授权域为。
因此,您可以将与财务部门相关的所有政策部署到一组构成“财务”认证的PDP中。域和另一个域设置到R& D域等。同一域中的这些PDP当然可以是负载平衡的。如果没有这些域的中央控制器,管理可能会变得有点毛茸茸,比如Axiomatics Services Manager。
希望有所帮助。
答案 1 :(得分:1)
是..如果存储了10,000个策略,则可能需要相当长的时间来匹配它们。
如果您考虑水平缩放,您仍然可以寻找以下内容......
我同意,对于10000个策略,我们可能需要寻找垂直扩展。我假设您已根据应用程序定义了策略。应用程序ID可以是您的政策的Target
元素。 (它可以是任何有助于创建策略集合的东西)。如果我回答你的问题
Target
元素(基于应用程序)进行分发。因此,不同的服务器根据应用程序ID具有不同的策略。基本上它就像一个PDP应用程序。 (想法是你想根据某种方式对策略进行分组......可以将它们分配到单独的PDP中)此外,如果您没有实现分布式策略的并行评估..也可以使用PDP集线器...比如,您可以将策略分发到10个PDP并且有PDP集线器。一旦收到PDP集线器的请求,它就会向10个PDP发送请求.10 PDP将并行评估策略。一旦收到PDP中心的响应,它就可以汇总10 PDP的结果,并将最终结果发送给PEP。