本文将从权限设计与实现是什么、为什么、怎么做三个方面,以初学者的角度分享一下权限设计与管理的相关心得,不足之处请指正。
本来是想结合一下网上的文章经验来整理一下公司内部交流所分享的一些有关于权限设计与实现的解析与思路。但是网上粗略翻了下资料,发现权限设计与管理的有关知识甚多,是个远比我想象要庞大的知识体系。不同体量的系统,有不同的权限设计,那么如何对当下需求与未来规划做一番取舍,着实考验权限架构者的水平。
是什么
权限的设计用一句简单的话来说就是[1]:
谁 能否 做 哪些 事
WHO CAN DO THE THINGS
成分 |
含义 |
说明 |
谁 |
用户/角色/组 |
自然人/权限集合体/相同权限集合体 |
能否 |
许可标记 |
用0/1或T/F设置许可 |
做 |
增加/删除/修改/查询/统计/打印/过帐 … |
权限对象 |
哪些 |
通用/本人/本组别/高组别/其他 … |
权限范围 |
事 |
数据 |
(如客户、供应商、订单、报表等) |
权限的实现对实际系统而言,应当是:
正确的操作者在正确的目录下用正确的功能对正确的对象进行了正确的操作。
即应当满足5RIGHT。
为什么
系统所支持的业务处理以及有待处理的大量数据是企业的重要资源,应予以特别保护。为了防止非法用户使用系统及合法用户对系统的非法访问,需要对应用系统的采取保护措施,合理的用户及权限管理是一种有效的手段,可以很大程度降低应用系统的安全风险[2]。
怎么做
基于以上,就必须实现合理的映射:
从设计到实现
实现时:
1. 简单的话,用户+权限目录:
2. 稍复杂一点:用户+角色+权限目录:
3. 进阶级:用户+角色+用户组+数据权限+权限目录[3];(细粒度控制)
4.高级:用户+角色+用户组+数据权限+细分API+安全审核+权限目录。
(细粒度控制+安全控制)
5.笔者还见到一种组合是:组织结构层级权限倒继承设计,部门经理拥有部门人员的所有权限,依职位层级倒继承,就是职员有的,职员的上司全有。
无论那种组合,都离不开用户、模块、权限目录,设计数据表结构就在此处下功夫了。也是其他相关表的主表,考滤其以后容易扩展,尽量简单设计[4]。
[1] http://www.cnblogs.com/JamesLi2015/p/4746765.html解析大型.NET ERP系统 权限模块设计与实现
[2] 焦英, 高冬梅, 安剑. ERP系统用户权限管理的设计与实现[C]// 全国电力企业信息化大会. 2011.
[3] http://wxg6203.iteye.com/blog/682830人员、用户组、角色、权限之间的关系的个人理解
[4] http://blog.sina.com.cn/s/blog_e003e0ef0101fxvj.html[转载]5、ERP设计之用户权限