基于RBAC的权限设计模型
1.RBAC介绍
RBAC模型作为目前最为广泛接受的权限模型。
NIST(The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)。
RBAC0模型如图1所示:
-
RBAC0定义了能构成一个RBAC控制系统的最小的元素集合:
在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
既提供了角色间的继承关系,又提供了责任分离关系。
建立角色定义表。定出当前系统中角色。
因为有继承的问题,所以角色体现出的是一个树形结构。
2.权限设计:
配置资源以及资源的操作:这里资源可以定义为一个通用的资源模型。提供通用的资源统一接口。
数据库ER图:
关系图:
3.分析:
根据以上的类关系图和ER图可以看出。整个权限可以抽象为五个对象组成。
OrgBean :用于描述org模型。
Role: 用于描述角色。
Permission: 用于描述权限。
Resource: 用于描述资源。
Operation: 用于描述操作。
其中Permission中有Resource , Operation的聚合,资源和操作组成权限。
Role和Permission都有自包含。因为设计到权限的继承。
资源Resource也可能出现一颗树形结构,那资源也要有自包含。
思想:
权限系统的核心由以下三部分构成:1.创造权限,2.分配权限,3.使用权限,然后,系统各部分的主要参与者对照如下:
1.创造权限-Creator创造,2.分配权限- Administrator分配,3.使用权限- User:
1.Creator创造Privilege,Creator在设计和实现系统时会划分,一个子系统或称为模块,应该有哪些权限。这里完成的是Privilege与Resource的对象声明,并没有真正将Privilege与具体Resource实例联系在一起,形成Operator。
2.Administrator指定Privilege与Resource Instance的关联。在这一步,权限真正与资源实例联系到了一起,产生了Operator(Privilege Instance)。Administrator利用Operator这个基本元素,来创造他理想中的权限模型。如,创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等等...这些操作都是由Administrator来完成的。
3. User使用Administrator分配给的权限去使用各个子系统。Administrator是用户,在他的心目中有一个比较适合他管理和维护的权限模型。于是,程序员只要回答一个问题,就是什么权限可以访问什么资源,也就是前面说的Operator。程序员提供Operator就意味着给系统穿上了盔甲。Administrator就可以按照他的意愿来建立他所希望的权限框架可以自行增加,删除,管理Resource和Privilege之间关系。可以自行设定用户User和角色Role的对应关系。(如果将Creator看作是Basic的发明者,Administrator就是Basic的使用者,他可以做一些脚本式的编程) Operator是这个系统中最关键的部分,它是一个纽带,一个系在Programmer,Administrator,User之间的纽带。
4.权限API
getPermissionByOrgGuid(String orgGuid )
通过传入一个org的Guid, 拿到当前这个org对象都具有那些访问权限。
getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid)
通过传入一个org的Guid和 一个资源的Guid, 返回改Org对当前这个资源的访问权限。
getPermissionByResourceGuid(String resource)
通过传入一个资源的Guid, 得到当前资源下都有那些权限定义。
havingHeritPermission(String orgGuid , String resouceGuid) : Boolean
传入一个orgGuid, 资源GUID,查看改OrgGuid下对资源是否有向下继承的权限。这里继承是资源的继承。即对父栏目有权限,可以继承下去对父栏目下的子栏目同样有权限。
havingPermission(String orgGuid , String resourceGuid) : Boolean
判断某Org对某一资源是否用权限。
以上是粗粒度的权限API。 以下为细粒度的权限:
getOperationByPermission(String permissionGuid)
通过permission的Guid得到该permission的所有有效操作。
getOperationByGuid(String permissionGuid , String resourceGuid)
通过permision的Guid, 资源的Guid得到该资源下所有的有效操作。
screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid)
通过permission,resource,org的Guid得到改Org对这一资源的有效操作。
hasOperation(String operationGuid) : boolean
通过传入的operationGuid返回是否具有操作权限。
5. 权限的实现:
1.表单式认证,这是常用的,但用户到达一个不被授权访问的资源时,Web容器就发出一个html页面,要求输入用户名和密码。
2.用Filter防止用户访问一些未被授权的资源,Filter会截取所有Request/Response,然后放置一个验证通过的标识在用户的Session中,然后Filter每次依靠这个标识来决定是否放行Response。
这个模式分为:
Gatekeeper:采取Filter或统一Servlet的方式。
Authenticator:在Web中使用JAAS自己来实现。
Filter拦截只是拦截该用户是否有访问这个页面,或这一资源的权限。真正做到显示后拦截是在应用程序内部去做。
做显示拦截提供API, 标签这两种方式。
- 大小: 15.5 KB
- 大小: 13.4 KB
- 大小: 12 KB
- 大小: 9.9 KB
- 大小: 26.4 KB
分享到:
相关推荐
在IT行业中,权限管理是系统安全的关键组成部分,而基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理模型是一种广泛应用的解决方案。RBAC模型通过将用户权限与角色关联,使得权限分配更加灵活...
RBAC权限设计模型 RBAC(Role-Based Access Control,基于角色的访问控制)是一种基于角色的权限设计模型,旨在解决权限管理的复杂性和灵活性问题。RBAC模型认为权限授权实际上是Who、What、How三个问题的结合,也...
总结来说,基于RBAC的权限管理数据库表设计涵盖了角色、权限、用户、角色-权限关联、用户-角色关联等多个核心组件,通过这些组件的组合,可以构建出一个强大且易于维护的权限管理体系。在实际应用中,还可以根据业务...
根据RBAC模型的权限设计思想,建立权限管理系统的核心对象模型。对象模型中包含的基本元素主要有用户、用户组、角色、目标、访问模式和操作。主要的关系有分配角色权限和分配用户角色。控制对象是系统所要保护的资源...
"基于RBAC权限模型搭建的高效智能权限管理系统.pdf" 本文档介绍了基于RBAC权限模型搭建的高效智能权限管理系统,旨在确保系统信息的安全性。该系统主要包含用户信息表、角色表、权限表等模块,依托Web的计算算法,...
基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限设计是一种广泛应用的权限管理模型,它以角色为中心,通过角色与权限的关联,实现用户对资源的访问控制。NIST定义了四种RBAC模型:RBAC0、RBAC1、...
RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛应用的权限模型,它通过角色这一中间层将权限与用户关联,提高了权限管理的灵活性和效率。NIST定义的RBAC模型由四个基本组件构成: 1. **RBAC0...
### 基于RBAC改进模型的角色权限及层次关系分析 #### 一、引言 随着信息技术的发展,网络安全成为组织和个人关注的重点。基于角色的访问控制(Role-Based Access Control,简称RBAC)作为一种有效的访问控制机制,...
基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理系统是一种广泛采用的解决方案,它以角色为核心,实现了用户与权限的间接映射,提高了管理效率并降低了复杂性。下面将详细介绍RBAC模型及其在...
资源的权限设计中,需要考虑资源实例的权限相关性。例如,若在企业管理信息系统中,不同区域的部门需要对客户资料进行操作,那么资源实例(客户资料)的权限应与访问主体(区域)关联。在这种情况下,资源实例包含的...
综合以上信息,这个基于RBAC的权限管理系统采用了分层架构设计,实现了用户、角色和权限的灵活配置,以支持MIS系统的安全访问控制。系统采用C#语言开发,并且依赖于.NET框架,数据存储可能使用的是SQL Server数据库...
基于RBAC(Role-Based Access Control,基于角色的访问控制)模型的权限管理系统是一种广泛采用的方法,它以角色为核心,实现了灵活、高效的权限分配机制。现在,让我们深入探讨这个话题。 首先,RBAC模型的核心...
Java语言基于RBAC模型设计的权限模型,麻雀虽小,五脏俱全,SpringBoot项目加mysql实例表数据,可以启动运行。 1:参考脚本建mysql数据库 2:导入脚本 3:用idea加载项目 启动项目
基于RBAC(Role-Based Access Control,基于角色的访问控制)的通用权限管理构件是一种广泛应用于企业级应用的解决方案,它通过角色来管理和控制用户的访问权限。下面将详细介绍这个系统以及与其相关的技术。 **...
然后,我们提出了基于RBAC模型的权限管理改进研究,设计了一个基于角色的控制访问模型,能够动态地创建、分配和撤销权限,并实现资源分离和多级权限管理。 在实现方面,我们使用了JavaScript脚本语言和SSH框架,...