`

数据权限管理方案探讨

阅读更多

Ralasafe开源有段时间了,大约有2个月了。根据社区的反馈,我打算围绕Ralasafe最佳实践,书写一系列BLOG。

 

大体内容有:

1, 登录控制: 哪些页面需要登录后才能访问,登录用户名、密码验证,登录转向页面;

2, URL权限控制:哪些页面访问需要进行角色权限验证,怎样验证最简单有效,如何处理验证失败情况;

3, 数据级权限管理方案探讨:选择中间件呢还是框架?

4, Ralasafe体系结构: 用户怎么读取,用户有哪些字段,怎样与应用基础;

5, 数据级查询权限管理: 如何给不同的人分配不同的查询数据权限,返回where条件呢,还是直接返回结果集?

6, 数据级决策权限管理: 如何给不同的人分配不同的数据操作权限,当用户不具备权限怎么办?

7, 其他细小的权限控制: 如下拉框显示内容;按钮、链接是否显示,图片是否显示等。

-------------------------------------------- ------- --------------------------------

 

数据级权限

数据级权限,无外乎这些类型:

1,数据库行列级:比如领导查询数据范围和普通员工查询的数据范围不同,客户经理能够查询客户联系方式字段,而其他人不能查看客户联系方式字段。

2,字段内容控制:比如普通审查员审查50w以下财务数据,刚入职客户经理只能将客户级别调整不能超过3级。

 

从用户与数据的交互方向可以分为2大类:

1,从系统获取数据(查询);

2,向系统提交数据之前的判断。

现实困惑

这种权限与业务紧密耦合,很难找到通用方法。绝大部分系统仍然采用if/else来编程,而且这种逻辑分散到系统的各个环节,甚至还会在系统多处出现重复判断。

也有不少网友尝试5表模型等,试图通过数据模型构造好的ACCESS CONTROL LIST来控制。这种构造ENTRY模式,当数据量小的时候,是可行的,维护工作量也不大。当数据量大的时候,显然不能奏效。甚至无法运行,维护工作量非常大。

主要表现在:

1,where 语句里面的in(..., ..., ..., ..., ...) 子条件过长,或者使用in (select ... from ACL_ENTRY where ... )性能也是非常低下的;

2,当删除某用户的时候,需要在ACL_ENTRY表里面,删除相关记录;

3,当删除某业务数据的时候,也需要在ACL_ENTRY表里面,删除掉相关记录;

4,数据量大,ACL_ENTRY数据量承几何级增长。

 

也有企业尝试使用规则引擎来解决。这是非常好的尝试,提升了系统开发效率、组件复用率。

主要表现在:

1,首先,主动的实践了一项最佳项目实践:权限与业务松耦合。

2,通过松耦合,大幅优化了系统结构。

3,进一步提高了组件复用率。

只是,规则引擎毕竟不是专业于权限管理领域,对于复杂需求,或者有些需求实现起来还是很别扭。看起来像if/else的规则表达罢了。

 

Ralasafe和IBM、Oracle商业产品一样,都使用规则进行描述。大家的区别在于:谁满足需求更多、更容易了。

框架or中间件

框架的好处,显然是有个体系结构,团队遵循该方式进行开发、组装即可。提供了一种标准和开发模式。

中间件的好处,显然是提供了自由,而且易于结合、易于分工。提供了一种服务方式。

 

我本人希望自由,所以讨厌框架,偏爱中间件。但我对选用中间件、框架的选择标准是非常中肯的,供大家参考。

 

Metadmin 写道
在系统结构分层的场景,适合使用框架。
在系统功能分离的场景,适合使用中间件。
 那么具体到权限管理领域,显然是功能分离,中间件更合适。这么做,还将不给原有系统、新开发系统的既定框架造成冲突。一个系统里面使用多个框架,是非常痛苦的事情。殊不知在SSH的海洋里面,有多少人将N多时间“Kill”在沙滩上?!

Ralasafe体系结构及应用集成

Ralasafe是中间件,采用服务模型。在业务需要的地方,调用Ralasafe接口,或者将Ralasafe接口向LOG4J那样wrap到你的aspect里面去。

 

Ralasafe按照权限的方向,提供2种数据级权限管理服务,也正好对应2个接口:

1,从系统获取数据, Ralasafe.query( int privilegeId, User user, CustomizedWhere where, int fromIndex, int size );

2,向系统提交数据之前的判断,Ralasafe.permit( int privilegeId, User user, Object businessData);

Ralasafe还针对web应用,提供了WebRalasafe

 

接口非常简单,在接口层只要告知Ralasafe:当前这个是谁,他/她想干什么。

权限逻辑,全部在Ralasafe图形化管理界面,点击鼠标完成配置,并进行在线测试。无需编程。

所以,使用Ralasafe编程工作量非常少。也给不少开发人员造成“不知道怎样与应用集成”的错觉。

Ralasafe的用户怎么来

Ralasafe并不会给你的应用系统“假定”有哪些字段。你的应用系统 用户可以由任意字段,通过XML文件安装到Ralasafe即可。该XML文件,主要指明:用户存在那张表(也可以是视图,这样可以从多张表关联读取数 据。比如ralasafe-demo,就关联到company表读取了companyLevel和companyName字段); 哪些字段是唯一字段; 哪些字段是主键;各字段对应类型。

 

然后,在所有权限规则里面,可以读取这些用户字段。比如ralasafe-demo应用(下载地址:

http://www.ralasafe.org/zh/download/download.jsp ) 用户含有companyLevel字段,在定制“总公司”用户分类的时候,就将该用户companyLevel字段与总公司级别“1”进行比较。

分享到:
评论

相关推荐

    JAVA的数据权限设计.docx

    数据权限设计 在当前的许多应用程序中都会涉及到权限管理,权限主要分为功 能权限和数据权限,至于功能权限相对简单些,网上也有不少的实 现方案,这里不再介绍,下边主要探讨下数据权限的设计方案。 数据权限跟...

    .NET架构的动态权限管理的设计与实现

    文中针对原有动态权限管理的不足,分析和探讨了现行的权限管理方案。该方案在NET架构平台上实现,与原有系统数据紧密相结合,达到用户权限的实用配置,使用户的动态权限设置具体化到用户界面。通过实践证明,该方案不仅能...

    对数据库管理问题的探讨.doc

    对数据库管理问题的探讨 【摘 要】引起数据库安全问题因素有很多,针对这些因素应采用相关的计算机管理技术,以 确保数据库的安全,使其更好的为生产和管理服务。 【关键词】数据库;安全;管理技术 前言 计算机...

    论文研究 - 对巴布亚亚彭群岛摄政区乡村基金管理的评估(以亚彭南区PasirPutih村为例)

    因此,本研究还将探讨乡村基金管理中的制约因素,以及应采取哪些措施来克服这些制约因素,例如如何提高人力资源质量,以适当地实施乡村基金管理。 在技​​术援助方面,对村庄资金管理的和教育是良好而适当的。

    计算机毕业设计:Java实现的个人账务管理系统(源码+数据库+论文),保证可靠运行,附赠计算机答辩PPT模板

    此外,系统还考虑了数据的安全性和完整性,通过合理的权限设置和数据校验,确保用户数据的安全可靠。 数据库作为系统的重要组成部分,采用了高效稳定的数据存储方案。数据库设计合理,表结构清晰,能够高效地存储和...

    【网络安全精品】7-云环境下的身份管理及访问控制1.5(1).rar

    【网络安全精品】7-云环境下的身份管理及访问控制1.5(1).rar 是一个针对此问题的专业解决方案文档,它提供了一系列的策略、技术和最佳实践,旨在帮助企业保护其云资源并确保数据安全。该资料详尽地探讨了多租户架构...

    关于Oracle的虚拟专有数据库特性探讨

    Oracle8i中引入的Oracle行级安全性特性提供了细粒度的访问控制--细粒度意味着是在行一级上...使用Oracle的VPD功能不仅确保了企业能够构建安全的数据库来执行隐私政策,而且提供了应用程序开发的一个更加可管理的方法。

    基于SSM+Mysql的高校校友信息管理系统(源码+论文+开发文档+演示视频).zip

    其次,还包括对校友信息系统的用户权限管理功能,校友用户、管理员可浏览校园新闻、校友风采、校友留言等。校友用户可以查找校友。使用校友专享提供的便捷服务。 本高校校友信息管理系统使用Web开发,运行在Internet...

    研究数据权利-研究论文

    本文将数据权限定位为研究人员工具箱中获取封闭数据集访问权限的有用工具。 它通过提供欧盟通用数据保护条例中相关数据权利的概述,并描述它们可能特别有价值的不同用例来实现这一点。 虽然我们相信它们的潜力,但...

    浅析数据通信网络维护与网络安全问题-网络安全论文-计算机论文.docx

    基于此,主要对数据通信网络维护的意义进行了概括总结,同时针对其出现的网络安全问题作出详细的分析,重点对数据通信网络安全的措施展开深入探讨。 关键词:数据通信网络;网络;安全; 引言 浅析数据通信网络维护...

    后端开发关键的后端开发技巧和常用的总结概要.docx

    解决方案:SQL优化、索引设计、事务管理、引入NoSQL或分布式数据库 三、安全性问题 数据安全与隐私保护 防止SQL注入与XSS攻击 加密敏感数据传输与存储 解决方案:参数化查询、HTTPS加密、使用哈希与盐值对密码加密...

    大数据安全与隐私保护.pptx

    数据水印技术 数据水印是指将标识信息以难以察觉的方式嵌入在数据载体内部且不影响其使用方法,多见于多媒体数据版权保护,也有针对数据库和文本文件的水印方案。 前提:数据中存在冗余信息或可容忍一定精度的误差 ...

    基于J2EE的在线考试系统构建探讨

    基于J2EE的在线考试系统构建探讨 一、高校在线考试系统需求分析 在线考试系统的一般功能是将传统考试过程中的试卷组织、审定印制、传送收集、登记发放、评判归档各个环节缩小到一至两个环节,并尽量屏蔽...

    基于Web的健康检查报告报表生成系统

    探讨了基于Web的应用系统开发过程及其相关技术,...重点解决了系统的结构框架、报表的样式设计、报表的生成方法、健康检查报告的生成方法、系统的用户管理和权限设置、页面设计和数据传输、系统的安全性等关键问题。

    计算机局域网的维护管理与网络安全.docx

    例如,保护服务器时可设置使用权限,避免无权限的人员使用服务器,导致服务器计算机局域网的维护管理与网络安全全文共4页,当前为第3页。计算机局域网的维护管理与网络安全全文共4页,当前为第3页。信息泄露;其次,...

    基于角色控制的教学权限访问系统的设计与实现 (2005年)

    以一个教学管理网上系统的权限访问系统实现为例,通过建立一个权限控制矩阵来划分用户的权限访问级别,并结合了动态菜单自动生成、页面跳转限制控制、以及分级打开数据库数据等应用实现方案。实践表明,基于角色访问...

    JSP考试管理系统(源代码+论文).rar

    此外,包含的研究论文则可能深入探讨了系统设计的理念、开发过程、所使用的技术栈、面临的挑战、解决方案以及系统的潜在改进点等。它不仅反映了作者对JSP及相关技术的理解和掌握,还体现了其分析问题和解决问题的...

    SpringBoot企业级博客系统(未加密+源码)

    本章节不会对该框架做深入探讨,仅从基于角色的权限管理角度,来实现对系统的权限管理。 第12章 博客系统的整体框架实现 先对系统的整个界面、结构、布局、API进行实现,这样方便每个模块进行划分及实现。 第13章...

    基于区块链的网络安全技术综述

    首先探讨了数据管理体系应用区块链进行数据管理的方法,利用区块链不可篡改的特性提高数据的真实性和可靠性。其次分析了物联网应用区块链进行设备管理的方案,通过区块链记录和执行设备控制指令,强化物联网设备权限...

    MySQL DBA 数据库工程师实战经验

    **资源名称**:MySQL DBA 数据库工程师实战经验 **资源类型**:专业教程、实战案例、经验分享 **适用人群**:数据库管理员(DBA)、...7. **高可用性与灾难恢复**:探讨构建高可用性数据库系统的方法,以及灾难恢复策略。

Global site tag (gtag.js) - Google Analytics