优化在分布式环境中匹配PDP策略的方法

时间:2014-03-12 07:02:53

标签: xacml xacml3 xacml2

您好我经历了很多关于XACML的用例,但我不知道在PDP中加载策略的最佳方法是什么。根据OASIS定义的PDP工作流程,我理解当进入的请求将来到PDP。 PDP负责根据请求匹配相应的策略。

由于PDP将匹配每个策略,只需考虑一种情况,即我在分布式环境中存储了10,000个策略,那时会发生什么。它将在匹配中消耗越来越多的时间,这不是匹配策略的有效方式。

我需要对这个问题做一些澄清:

  1. 如何在不同的服务器上分发策略?

  2. 如果我在不同服务器上分发策略,那么我的PDP将如何识别并从特定服务器获取相应的策略?

  3. PDP会识别与传入请求匹配的确切政策的最佳方式是什么?

2 个答案:

答案 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个策略,则可能需要相当长的时间来匹配它们。

如果您考虑水平缩放,您仍然可以寻找以下内容......

  1. 缓存所有政策或目标元素
  2. 使目标不复杂(只是一些字符串匹配)
  3. 具有多个线程的策略的并行匹配。
  4. 我同意,对于10000个策略,我们可能需要寻找垂直扩展。我假设您已根据应用程序定义了策略。应用程序ID可以是您的政策的Target元素。 (它可以是任何有助于创建策略集合的东西)。如果我回答你的问题

    1. 策略可以基于Target元素(基于应用程序)进行分发。因此,不同的服务器根据应用程序ID具有不同的策略。基本上它就像一个PDP应用程序。 (想法是你想根据某种方式对策略进行分组......可以将它们分配到单独的PDP中)
    2. 可以有一个中央PDP集线器,一旦收到请求,就会检查相关PDP的应用程序ID和路由消息。有时,它不希望成为PDP,某些路由器(如ESB)可以在请求中查找某些参数并发送到相关的PDP。
    3. 如上所述..最好有中央服务器来路由请求
    4. 此外,如果您没有实现分布式策略的并行评估..也可以使用PDP集线器...比如,您可以将策略分发到10个PDP并且有PDP集线器。一旦收到PDP集线器的请求,它就会向10个PDP发送请求.10 PDP将并行评估策略。一旦收到PDP中心的响应,它就可以汇总10 PDP的结果,并将最终结果发送给PEP。