首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全访问控制列出数十亿行

Spring安全访问控制列出数十亿行
EN

Stack Overflow用户
提问于 2015-11-25 13:04:40
回答 1查看 6.5K关注 0票数 11

实现了基于spring安全框架的安全解决方案,特别是其acl模块。

应用程序中有数以百万计的域对象和数百个用户。

使用Security模块,acl_sid和其他相关表中的条目将增长到10%,这将影响应用程序的性能。

想知道处理这种情况的最佳做法。

是否有其他有效处理类似情况的安全框架。

EN

回答 1

Stack Overflow用户

发布于 2015-11-25 23:42:47

有几个框架可以使访问控制更易于管理。

首先,ACL是伟大的,易于配置,但它们不能很好地扩展。

选项1:基于角色的访问控制(RBAC)

RBAC是NIST在1992年提出的一个著名的模型.许多应用程序和框架实现了RBAC模型。在RBAC中,您为用户提供了一组角色,每个角色都有一组权限。因此,用户继承这些权限。例如,您可以具有查看所有事务的权限的管理器角色。

Spring安全性、Apache、JAAS和许多其他框架(开放源码、商业.)执行成果预算制。

选项2:基于属性的访问控制(ABAC)

有时RBAC是不够的。特别是当您想使用上下文或关系时。例如,在RBAC中,很难实现处理以下内容的角色和权限:

经理可以在他们自己的部门查看交易。

要做到这一点,您可以使用ABAC。您将定义一个角色属性、一个用户部门属性和一个事务部门属性。然后,将这些属性组合到策略中:

具有role==manager的用户可以执行操作==‘视图事务’,如果是user.department==transaction.department

XACML - ABAC的一个实现

eXtensible访问控制标记语言XACML是OASIS定义的标准,越来越多地用于实现复杂的授权挑战。现在有几种实现:

  • 开源
    • SunXACML
    • WSO2

  • 商业
    • 公理化

RBAC和ABAC如何减轻管理负担?

在访问控制列表中,每个要保护的项都有一个列表,并且必须在这些列表中插入用户标识。您还可能希望添加操作数据,以便以下列方式结束:

  • 第1项ACL
    • 爱丽丝,读
    • 艾丽斯,写
    • 鲍勃,读
    • 卡罗尔,读

  • 第2项
    • ..。

如果您有100万项和10,000个用户,则可能有100万x10kx3操作(读、写、删除)=总计300亿行。这既相当于管理上的噩梦,也可能是性能问题。

现在,RBAC的想法是简化一点。我们使用角色和权限作为间接级别,而不是将用户分配给ACL中的项。这样爱丽丝就能当编辑了。鲍勃和卡罗尔会是观众。您的ACL现在更简单了:

  • 第1项
    • 编辑,读
    • 编辑,编辑
    • 观众,阅读

名单越来越小。然而,RBAC仍然存在一些问题。每个对象仍然必须有一个ACL。如果您有一百万个对象,那么仍然有几百万行(仍然比300亿行更好)。

对于ABAC,您选择使用对象属性,例如部门或分类。对象不再具有ACL,您将编写使用这些属性的策略。这使得策略的数量更小(通常是数百个)。

多亏了属性,ABAC的比例更好。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33917255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档