数据库独立行级安全解决方案

时间:2010-06-16 15:14:23

标签: c# java security authorization row-level-security

是否有人了解Java / C#数据库独立授权库。该库应支持跨公司组织结构的读取,写入,删除和插入操作。

这样的事情:
     - 用户可以查看所有文件
     - 用户可以输入分配给他的单位的新文件
     - 用户可以更改分配给其单位和所有下属单位的所有文件      - 用户可以删除分配给他的文件

我还应该能够创建自定义操作(除了读取,写入......)将它们连接到某个类并将“安全性令牌”分配给用户(例如document.expire)。 如果没有任何免费或商业图书馆,是否有一本书可以用来实现这个功能?

感谢。

3 个答案:

答案 0 :(得分:1)

我发现一个库具有与我的需求类似的功能:

http://www.codeproject.com/KB/database/AFCAS.aspx

很奇怪,因为这是每个严肃的应用程序都面临的问题,所以在网络上不再有它。至于文档/示例,我发现的最好的是CRM系统的授权模块,如:
- Siebel - Siebel安全指南 - 第10章。访问控制
- 糖CRM - http://www.sugarcrm.com/crm/products/capabilities/administration/access.html
- Microsoft CRM - http://msdn.microsoft.com/en-us/library/ms955698.aspx

这是我需要的一种功能。我想这将是DIY任务。

答案 1 :(得分:1)

在客户端库中实施安全解决方案的问题在于它仅对客户端工具有效。这听起来很漂亮,但你要打开数据库本身的巨大安全漏洞。因此,如果用户直接连接到数据库(例如使用Access ADP到SQL Server),他们就可以完全控制用户角色。如果您在客户端库中进行限制,他们需要完全访问数据库中的所有内容。

唯一不会出现问题的情况是Web应用程序和Web服务。如果您的Web服务执行了安全性并将其隐藏在Web服务接口之后(因此无法直接访问数据库),那么它将是安全的。这可能就是你所说的,但没有在你的问题中指明。

如果您正在使用胖客户端,是否有理由不想将安全逻辑放在数据库端?您提到了数据库无关,但您在每个平台中都没有提供任何内容。您基本上是在描述检查用户是否有权编辑记录的前/后触发器。完整的RLS还会限制用户根据平台查看和使事情变得更加困难的权利。

答案 2 :(得分:1)

我也对缺乏安全框架感到惊讶。

Rhino Security。 Ayende有handful of blog posts about it

另一个博客上也有couple articles

也可以将它与S#arp Architecture一起使用。

不能说我已经在项目中实现了它,只是暂时阅读它。这是我能找到的唯一一种类型的实现。