【发布时间】:2011-04-21 14:35:47
【问题描述】:
我正在开发一个具有 CRM 功能的大型 Java EE Web 应用程序,我们正在寻找一种安全方法/库/解决方案/任何东西。基本的基于角色的安全性将不起作用,因为访问控制必须基于角色 和 层次结构,但必须可以选择每个文档进行自定义。由于将存储机密和专有信息,因此要求安全性正常工作。
示例:要使用百货商店,货架 stalkers 库存商可以创建报告,其他库存商只有在 时才能阅读> 他们在同一个部门。现在他们的部门经理可以读取/写入/更新/删除所有由库存商编写的报告,并编写所有其他部门经理可以阅读但看不到商店经理等的报告,区域经理可以读取/写入/读取/删除等. 现在,复杂性:较高级别的人可以让较低级别的人看到事情,无论是个人(部门向几个特定的库存商写文件)用户或他们下面的每个人(商店经理向整个商店写备忘录)或任何人你可以想象的排列。此外,个人可以创建他们的同龄人看不到的报告,或者他们可以选择授予对其他地区的存储库等的访问权限。
我们正在考虑使用每个实体一个权限的 ACL,但担心会创建大量记录。即使只有一份报告可供 30 人的部门中的其他所有人以及他们上方的每个人(在指挥链中)阅读,创建一份报告也需要大约 40 条记录!每个用户每周 1 个报告,即每个用户每年 2000 个权限。 1,500 个用户意味着每年超过 3,000,000 个权限。
似乎基于规则引擎的方法会很好,但我没有看到任何博客或文章提到这种方法,所以我们对这种方法犹豫不决。
我们还在考虑一些 ACL/规则自制混合,您可以在其中授予具有“经理”或“库存员”等区分符的部门 ID 进行子选择的权限,但担心检查所有可能的权限(您可能会被其他用户专门授予权限,您拥有部门成员的权限,您可能拥有商店或地区成员的权限)听起来像是一个容易出错的乏味噩梦。
对我们的应用来说最好的方法是什么?
【问题讨论】:
标签: java security jakarta-ee acl