【问题标题】:Simulating multiple Policy Decision Points (PDPs) in distributed environment在分布式环境中模拟多个策略决策点 (PDP)
【发布时间】:2019-06-08 18:09:54
【问题描述】:

让我们假设一个主题每秒请求访问许多对象的场景。单个 PDP 上的重负载意味着每个请求的等待和读/写时间增加。

到目前为止,我已经使用AuthzForce Core project 设置了一个 PDP,为此我有一个 for 循环发送多个请求(这可以使用线程同时完成)。但是,这似乎不适合在分布式环境中评估我的策略。

有什么办法可以做到吗?也许使用AuthzForce Server

编辑

我正在运行一个使用 Authzforce Core 的 Java 应用程序。该程序创建一个加载单个策略文档的 PDP 实例,然后 for 循环执行多个请求。这一切都是在程序本身的本地完成的。

【问题讨论】:

  • 您有多种选择。其中之一是使用多决策配置文件。另一种方法是使用反向查询。
  • PDP 是否嵌入到您的应用或远程服务器中(通过网络发送请求)?
  • 到目前为止,我正在运行一个使用 authzofrce 核心项目的 Java 应用程序,我在其中创建了一个加载单个策略文档的 pdp 实例,然后一个 for 循环执行多个请求。所以这一切都在程序中本地完成
  • @DavidBrossard 你能详细说明一下吗?
  • 您从哪里加载保单文件?本地文件系统,远程数据库...?

标签: distributed xacml pep pdp authzforce


【解决方案1】:

如果不查看代码或架构,很难在此处帮助提高性能,但我可以提供一些一般性提示(其中一些对您来说可能很明显,但只是为了彻底):

  1. 由于 PDP 嵌入在您的 Java 应用程序中,我假设(或确保您这样做)您正在使用 AuthzForce native Java API(自述文件中的示例),这是最有效的评估方式。

  2. 我还假设您在应用程序的整个生命周期中(重新)使用相同的 PDP (BasePdpEngine) 实例。它应该是线程安全的。

  3. 为了一次评估多个请求,您可以尝试使用 PDP 引擎的 evaluate(List) 方法 ( javadoc ) 而不是通常的 evaluate(DecisionRequest),这在某些情况下更快。

  4. 如果使用“分布式环境”,您的意思是您的 Java 应用程序的多个实例部署在不同的位置,因此多个 PDP,正确的设置取决于您加载策略文档的位置/方式:本地文件,远程数据库等。请参阅我的最后评论。正如 Rafael Sisto 的回答中提到的,您可以重复使用 AuthzForce Server 安装指南的高可用性部分中的一些指南。

【讨论】:

    【解决方案2】:

    Authzforce 服务器有一个高可用性选项: https://github.com/authzforce/fiware/blob/master/doc/InstallationAndAdministrationGuide.rst#high-availability

    您可以按照相同的准则使用您的单个 pdp 来实现这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多