首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中实现行级安全?

如何在Java中实现行级安全?
EN

Stack Overflow用户
提问于 2011-04-19 12:21:01
回答 3查看 5.4K关注 0票数 9

我目前正在评估身份验证/授权框架。

Apache看起来很不错,但我是,缺少行级安全特性。

例如,数据库中可能有特殊的行,只有具有特权的用户才能看到和访问这些行。为了避免不必要的往返,我们目前修改SQL查询,使其与授权数据连接,只获取当前用户的可见行。

但是我觉得这个概念“不对”,因为我们将业务代码与安全相关代码混为一谈,它们应该是正交的、相互独立的。

  • What解决方案是available/possible?
  • How,您是否实现了行级安全(特别是与jpa)

的结合)?

更新:

目标数据库主要是Oracle 10g/11g

  • ,但是如果没有

的大缺点,最好采用独立于数据库的解决方案

EN

回答 3

Stack Overflow用户

发布于 2011-04-19 12:30:48

行级安全性实际上最好是在数据库本身中完成。当获取连接时,数据库必须被告知用户上下文是什么。该用户与一个或多个安全组相关联。然后,数据库会自动将过滤器附加到用户提供的查询中,以筛选出从安全组中看不到的内容。这当然意味着这是每种数据库类型的解决方案。

Oracle有相当好的行级安全支持,请参阅http://www.orafusion.com/art_fgac.htm作为示例。

票数 9
EN

Stack Overflow用户

发布于 2013-10-24 12:13:44

我们将其实现为JDBC包装器。这个包装器简单地解析和转换SQL。Hibernate过滤器也是个好主意,但是我们有很多报告和临时查询,Hibernate不是我们应用程序中访问数据的唯一工具。tool解析器是一个优秀的开放源码SQL解析器,但是我们必须对它进行分叉,以修复一些问题,并添加对一些高级SQL特性的支持,例如,出于报告目的,https://github.com/jbaliuka/sql-analytic这个报告工具也可以在github上使用,但是不依赖于行级安全基础设施https://github.com/jbaliuka/x4j-analytic

票数 2
EN

Stack Overflow用户

发布于 2011-06-05 08:18:56

有一篇有用的文章:http://mattfleming.com/node/243

其思想是可以通过两种方式实现行级功能:直接在存储库中设置限制,或者通过AOP绑定限制。后者是首选的,因为安全层应该与业务逻辑分离(正交关注)。

在Hibernate中,您可以使用过滤器的概念,它是透明地应用的,而且存储库不知道它们。您可以通过AOP添加这样的过滤器。另一种方法是截取session.createCriteria(),并使用AOP透明地向标准添加限制。

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

https://stackoverflow.com/questions/5716242

复制
相关文章

相似问题

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