在分布式环境中模拟多个策略决策点(PDP)

时间:2019-06-08 18:09:54

标签: distributed xacml pep pdp authzforce

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

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

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

修改

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

2 个答案:

答案 0 :(得分:1)

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

您可以遵循相同的准则来使用单个pdp实施此操作。

答案 1 :(得分:1)

在不查看代码或体系结构的情况下,很难在此处帮助提高性能,但是我可以给出一些一般性的提示(其中一些可能对您很明显,但只是为了更全面):

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

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

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

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