【问题标题】:Spring abac data filtering vs Spring @PostFilterSpring abac 数据过滤与 Spring @PostFilter
【发布时间】:2020-12-16 15:30:04
【问题描述】:

我正在使用 ABAC 模型来保护对项目中某些实体的访问。根据https://dzone.com/articles/simple-attribute-based-access-control-with-spring,我可以轻松定义一些用于更新/删除项目中实体的策略规则。 经过数小时的搜索,我发现了唯一一种通常记录在案的过滤用户可用数据的方法:使用 Spring security @PostFilter。 问题在于这种方法的性能。有哪些可用的方法可以将过滤数据的职责转移到数据库,同时又不混合业务和角色模型的逻辑?

到目前为止,我只尝试编写 JPA 规范:负责角色模型的模块会考虑用户的参数(id、group_id / organization_id)来组成逻辑表达式,以及业务需要使用的所有参数过滤器被添加到 由这样的规范表达式组成。但是这个解决方案强制只使用规范进行数据检索。此外,如何将这些表达式存储在策略存储中也不是很清楚。

【问题讨论】:

标签: java spring-security spring-el xacml abac


【解决方案1】:

您遇到了与授权类型有关的一个方面。我喜欢将其分为 3 种类型:

  • 功能授权(可以打印吗?)
  • 交易授权(我可以打印 doc #123 吗?)
  • 以数据为中心的授权(列出我可以打印的文档)

前两种类型是二元是/否问题,它们可以很好地扩展,即您询问一个项目/记录,您会得到一个答案。

第三种类型比较棘手,因为它更多的是过滤而不是授权。想象一下,你有一百万条记录。您不会反复询问是否可以查看/编辑/打印给定的记录。它不会扩展。您需要做的是反转该过程并使用所谓的部分评估或反向查询。

一些数据库供应商 (Informatica...) 和授权供应商 (Axiomatics...) 提供动态过滤数据以实现可扩展授权的能力。我会往下看。

【讨论】:

  • 感谢您的回复,我认为值得了解这些供应商的动态过滤器的实现。
猜你喜欢
  • 1970-01-01
  • 2020-02-23
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
相关资源
最近更新 更多