gpt4 book ai didi

java - 如何管理大量的权限?

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:43 26 4
gpt4 key购买 nike

我正在开发一个具有 CRM 功能的大型 Java EE 网络应用程序,我们正在寻找一种安全方法/库/解决方案/任何东西。基于角色的基本安全性将不起作用,因为访问控制必须同时基于角色 层次结构,但必须可以根据文档选择自定义。由于将存储 secret 和专有信息,因此要求安全工作正常进行。

示例:要使用百货商店,货架跟踪者库存商可以创建其他库存商可以阅读的报告仅当 他们在同一个部门。现在,他们的部门经理可以读取/写入/更新/删除所有库存员编写的报告,并编写所有其他部门经理可以读取但看不到商店经理等的报告,区域经理可以读/写/读/读等. 现在,复杂的是:较高级别的人可以让较低级别的人看到事情,无论是对个人(部门将文件写给几个特定的​​存货员)用户还是他们下面的每个人(商店经理给整个商店写一份备忘录)或任何人你可以想象的排列。此外,个人可以创建他们的同事看不到的报告,或者他们可以选择授予对其他地区的商店存货员的访问权限等。

我们正在考虑为每个实体提供一个权限的 ACL,但担心会创建大量记录。即使只有 30 人的部门中的其他所有人以及他们以上 [在指挥链中] 的每个人都可以阅读一份报告,创建一份报告也需要大约 40 条记录!每个用户每周 1 个报告,即每个用户每年 2000 个权限。 1,500 个用户意味着每年超过 3,000,000 个权限。

看起来基于规则引擎的方法会很好,但我没有看到任何博客或文章提到这种方法,所以我们对这种方法犹豫不决。

我们也在考虑一些 ACL/rule home-brew hybrid,您可以在其中向具有“manager”或“stockers”等鉴别符的部门 id 授予权限以进行子选择,但担心检查所有可能的权限(您可能会被其他用户特别授予权限,你作为你部门的成员可以获得权限,你可以作为商店或地区的成员获得权限)听起来像是一个容易出错的乏味噩梦。

我们的应用程序的最佳方法是什么?

最佳答案

您可以考虑使用 Spring Security 和 ACL - Springs ACL 实现的好处在于它是使用 AoP 实现的,应该更容易集成。

听起来您的安全要求非常复杂 - 我不知道您将如何实现这一点。但是您可以通过针对您的对象层次结构创建 ACL 并拥有对象来减少所需的记录数量 '从父对象继承权限。您授予用户对报告 的父级部门 的读取权限 - 因此他们将继承对该部门的子报告的读取权限。或者,经理可能对部门具有读取和更新权限。所有这一切的关键在于您的 Java 对象模型的结构。

我在一个系统中遇到过类似的情况,该系统在 业务部门 -- 发布 -- 问题 -- 文章 的对象层次结构中有数千篇文章。您可以拥有 ACL 的层次结构 - 所以在我的系统中 - 对特定业务部门具有 C/R/W 权限的用户继承了对层次结构中所有子对象的权限。

关于java - 如何管理大量的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com