现在的位置: 首页 > 综合 > 正文

权限设计浅谈

2013年10月27日 ⁄ 综合 ⁄ 共 1311字 ⁄ 字号 评论关闭

权限设计浅谈——JAVA

权限体系有很多种,最常见的是基于角色的访问控制办法(RBAC),它有如下优点:
1、 减少授权管理的复杂性,降低管理开销
2、 灵活的支持企业的安全策略,对企业的变化有很大的伸缩性


 1、粗粒度:只考虑对象的级别,不考虑对象的实例
2、细粒度:考虑具体的对象的实例
比如发布新闻A,新闻就是粗粒度对象,新闻A就是细粒度对象,权限设计只考虑到粗粒度对象的权限,细粒度对象的权限认为是业务逻辑的一部分

权限设计分为下面几个要素
1、user
2、role,group
3、privilege
4、resource
5、operate

下面逐一介绍
1、 user就是人,是系统的使用者
2、 role就是角色,一个user可能担当多个角色,group是一些user的集合,group同时担当很多角色,在group中的每个user都担当group的所担当的所有角色。比如一个新闻发布系统,有发布角色记为roleA,审核角色记为roleB,我们建一个group记为groupA,并让groupA担当roleA和roleB角色,我们再为groupA添加一个user记为userA,那么userA就担当了roleA和roleB角色。group就象包容器,它包容了role和user,它使得它里面的每个user和role都建立起了对应关系。当然group并不是必需的,它仅为集中为user赋予角色提供了方便,事实上,我们为每个user赋予角色也能达到同样的效果。
(注:group还有一种使用方案,group包容的不是user和role,而是user和privilege,两者之间的差别是不大的,不推荐后种)
3、 privilege就是权限,对对象操作的权利,比如增、删、改等;一般说来,privilge不包括被操作的对象(resourse),但是在很多情况下,privilege可以简化为operate,privilege也就和resource绑定到了一起。
4、 resource就是一些对象,比如报表,记录等
5、 operate就是priviledge+resource,就是一个action,表示对resourse的具体操作。
总之,可以这样描述:在系统中,每个用户(user)担当一些角色(role),每种角色具有一些操作 (operate) 能力,每个操作由权限(privilege)和对象(resource)组成;一些具有相同role的user可以形成一个组(group),并使组(group)承担这些角色(role),这样组(group)中的每个用户也都承担了这些角色(role)。

原则上,如果用户没有某种权限,那么就没有执行某种操作的权利,就不应该看到与进行这些操作有关的东西,比如连接,按钮等,如果等到用户执行这项操作时再告诉用户没有权限的话就不是很好,比如在察看页面上,如果用户没有编辑的权限,那么页面上不应该有连接到编辑页面的连接或按钮(生成察看页面的时候,应该察看用户的权限,从而判断这些按钮或连接是否应该生成出来)。
原则上,当用户提交某项请求时,首先应该检查用户有没有提交该请求的权利,如果没有这种权利(privilege),则提示用户

【上篇】
【下篇】

抱歉!评论已关闭.