.NET环境下基于RBAC的访问控制
.NET环境下基于RBAC的访问控制
Access Control of Application Based on RBAC model in .NET Environment
摘 要:本文从目前信息系统的变化趋势及其多资源的访问问题出发,提出一种基于RBAC模型的访问控制方案。该方案以.NET环境为平台,以角色为中介,把用户和资源、功能联系起来。在为资源、功能分配角色的同时给用户分配角色,这样具有一定角色的用户就可以访问到该角色所许可的资源,从而实现了基于角色的访问控制。该方案阐述了访问控制的操作,以及基于角色访问控制的优越性。
关键词:RBAC;.NET;访问控制;角色;功能
0、引言
管理信息系统是一个复杂的交互系统,随着计算机技术进一步的应用与发展,人们对它所提供的服务提出了更高的要求,其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中代码重用性最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求,都需要解决实体鉴别、数据保密性、数据完整性、防抵赖和访问控制等安全服务。例如,一个大型网站编辑部门使用的内容发布系统,具有不同内容发布、不同内容审核、以及专题制作等等一系列功能,访问控制服务要求系统根据操作者已经设定的操作权限,控制操作者可以访问哪些资源,以及确定对资源如何进行操作。
1、RBAC模型
基于角色的访问控制(RBAC)模型被普遍认为是一种有效的访问控制模型,它比传统的自主访问控制(DAC)和强制访问控制(MAC)具有更高的灵活性和更好的扩展性。
1.1 RBAC模型简述
早在2O世纪7O年代就有人在多用户系统中对用户访问权限管理的问题进行了研究,即如何控制用户对资源的访问,他们把这称之为RBAC(Role Based Access Control,基于角色的访问控制)。1996年RaviS.Sandhu等人提出了通用的RBAC模型。此模型有3个实体:用户、角色和访问权限(如图1所示)。
图1 RBAC模型简图
其核心思想是:受保护功能模块的访问权限与角色相联系,而只给用户分配不同角色;用户与所要求访问的功能模块之问没有直接关系,若用户要访问某一资源,那他必须具有可访问此资源的角色。在RBAC模型中,角色起到了桥梁的作用。
1.2、RBAC96模型定义
(1)RBAC96模型
该模型是由美国George Mason大学RaviS.Sandhu等提出的RBAC96模型,其基本结构如图2:
图2 RBAC96模型图
RBAC96模型包括四个不同层次:RBAC0模型规定了任何RBAC系统必须的最小需求;RBAC1模型在RBAC0的基础上加入了角色层次(Role Hierarchies)的概念,可以根据组织内部权力和责任的结构来构造角色与角色之间的层次关系;RBAC2模型在RBAC0的基础上增加了约束(Contraints)概念;而RBAC3模型是对RBAC1和RBAC2的集成,他不紧包括角色层次,还包括约束关系。
(2)RBAC0模型
RBAC0为基础模型,他包含三个实体:用户、角色和许可。
定义1:RBAC0模型中的基本概念
①用户( User): 一个可以独立访问计算机系统中的数据或用数据表示的其他资源的主体。可以是人、计算机等,一般指人。
②角色( Role) : 指一个组织或任务中的工作或位置。它代表了一种资格、权利和责任。
③许可( Permission) : 表示对系统中的客体进行特定模式访问的操作许可。
④用户分配: 指根据用户在组织中的职责和权利被赋予相应的角色, 用户与角色是多对多关系。我们用 M: role→2user 表示用户分配, M[i] 表示授权给角色 i 的用户集。
⑤许可分配: 指角色按其职责范围与一组操作许可相关联。角色与许可是多对多关系。我们用 P: role→2permission表示许可分配, P[i] 表示授权给角色 i 的许可集。
⑥会话( Session) : 代表用户与系统进行交互。用户与会话是一对多关系。
⑦活跃角色集( ARS) : 一个会话构成一个用户到多个角色的映射, 即会话激活了用户被授予的角色集的某个子集, 这个子集就是活跃角色集( Active Role Set, ARS) 。
(3)RBAC1模型
RBAC1 模型中引入角色层次来反映一个组织的职权和责任分布的偏序关系。一般用偏序≥来描述角色层次。Role1 ≥Role2 表示 Role1 继承了 Role2 的所有许可。偏序满足自反、传递和非对称性质。
有时为了实际应用的需要, 应该限制角色间继承的范围。如果某个角色不希望别人获得自己的某些许可, 此时它就可以分离出自己的私有角色( Private Roles) 。私有角色中的权利是不能被继承的。利用私有角色机制可以实现某些权限的屏蔽。
(4)RBAC2模型
RBAC2 在 RBAC0 的基础上引入了约束集合, 用来规定各种操作是否可被接受。约束可以作用在图2中的所有关系上。下面重点探讨与角色有关的约束。
①基数限制: 在同一时间, 一个用户可拥有的角色数目受限; 同样, 一个角色对应的许可数目也应受限。
②互斥角色: 同一用户仅可分配到一互斥角色集合中至多一个角色或者用户虽然分配到一互斥角色集合中多个角色, 但是在会话时用户至多能激活其中的某一个角色。前者是静态互斥, 约束发生在用户分配阶段; 后者是动态互斥, 发生在会话选择 ARS 时, 即运行时刻。
③先决条件角色: 可以分配角色给用户仅当该用户已拥有另一角色; 同样, 可以分配许可给该角色仅当该角色已拥有另一种操作许可。
④时间频度限制: 规定特定角色或许可的使用时间和频度。
(5)RBAC3模型
RBAC3是RBAC96中的最高层模型,它包括了RBAC1和RBAC2所有的特征,当然也间接包含了RBAC0。
1.3、EHRBAC模型
RBAC96 中利用私有角色来实现角色间不希望继承全部权限的问题。这种方法存在许多缺点: 它将一个逻辑上统一的、属于同一角色的权限分离开来, 使得很多角色成为不完整的角色, 只是为了继承而存在,并没有实际的物理意义; 私有角色方法使得角色数量迅速增长, 它使角色层次关系变得异常复杂。针对此不足, 很多学者开展了这方面的研究工作。EHRBAC(Extended Hierarchy Role Based Acces Control)就是一种改进的角色层次化关系模型。该模型废弃私有角色思路,遵循按现实世界模型建模的思想, 定义了角色的公共权限和私有权限,并引入一般继承和扩展继承机制, 形成了功能更加完善和更易于扩充的角色层次化关系模型,很好地解决了使用私有角色所出现的问题。
在后面的定义中,U表示用户集合,P表示许可集合,R 表示角色集合,u表示某个用户,p 表示某个操作许可,r表示某个角色。
定义 2:令 CP:R→2P,CP(r) 为角色 r所拥有的公共权限集合。
定义 3:令 PP:R→ 2P,PP(r) 为角色 r所拥有的私有权限集合。
由于将权限划分为公共权限和私有权限,所以引入两种继承机制: 一般继承和扩展继承。一般继承只能继承角色的公共权限, 而不能继承私有权限, 并且它继承下来的公共权限还是公共权限。
定义 4:一般继承定义了 R 和 R 之间的一个二元关系, 假定 NIAR×R 是一个一般继承关系集合,那么(r1,r2) ∈NI 表示角色r2 一般继承角色 r1 ,符号表示为 r1→r2。如果 r1→r2 , 那么对于Ⅱp∈CP(r1 ), 有 p∈CP(r2 ) 。
与一般继承不同的是, 扩展继承不但能继承公共权限, 还能继承私有权限。继承过来的权限属性仍保持不变。
定义 5:扩展继承定义了 R 和 R 之间的一个二元关系, 假定 EIAR × R 是一个扩展继承关系集合, 那么(r1 ,r2 )∈EI 表示角色r2 扩展继承角色 r1 ,符号表示为 r1·→r2。如果 r1·→r2 ,那么对于Ⅱp∈CP(r1), 有 p∈CP(r2), 对于Ⅱp∈PP(r1),有 p∈PP(r2) 。另外,该模型中还定义了以下一些关系。
定义 6:关系→ + 定义为: 如果 ra→+rb,那么存在 r1 ,r2 ,…,rn∈R( 其中 n>0),使得 ra→r1 ,r1→r2 ,…,rn→rb。
定义 7:关系→* 定义为: 如果 ra→*rb ,那么有 ra→rb 或 ra→ +rb ,称为 rb 弱一般继承 ra。
定义 8:关系·→ +定义为: 如果 ra·→ +rb , 那么存在 r1 ,r2 ,…,rn∈R( 其中n>0),使得 ra·→r1 ,r1·→r2 ,…,rn·→rb。
定义 9:关系·→* 定义为: 如果 ra·→*rb , 那么有 ra·→rb 或 ra·→ +rb , 称为 rb 弱扩展继承 ra。
1.4、ARBAC97 模型
RBAC中很重要的一块就是自身的管理,ARBAC97 模型将管理和使用分开(图3),管理角色(AdministrativeRole)和管理许可(AdministrativePermission) 是用来管理其他角色和许可的。以下改称 RBAC96 模型为规则模型, 其角色和许可也改称为规则角色和规则许可。
图3 ARBAC97模型图
定义 10:管理许可 AP授权对规则模型中各种部件的改变,但是规则许可 P不可以,即AP∩P=φ。管理许可只能赋予管理角色 AR,规则许可只能赋予规则角色 R,故 AR∩R=φ。
ARBAC97 管理模型包含以下三块:
(1) 用户 - 角色分配 URA97(User Role Assignment 97)。讨论对用户分配角色的问题,包括规则角色分配和管理角色分配。一个用户可同时拥有规则角色和管理角色。
(2) 许可 - 角色分配 PRA97(Permission Role Assignment 97) 。主要讨论许可的分配与取消, 包括规则许可分配和管理许可分配。从角色的角度看, 用户与许可具有相同的特征, 故PRA97与URA97 可一一对应。
(3) 角色 - 角色分配 RRA97(Role Role Assignment 97)。每个管理角色应当映射到规则角色的某个子集,RRA97 主要讨论管理角色所管理的规则角色范围。
1.5、RBAC模型与传统访问模型比较
传统的访问控制技术主要有两种:自主访问控制(Discretionary Access Control, DAC)和强制访问控制(Mandatory Access Control, MAC)。DAC把访问决定权留给了产生信息的信息主, MAC则要求所有用户遵守由管理员建立的规则。
(1)自主访问控制(DAC)
DAC 是基于访问者身份或所属工作组来进行访问控制的一种手段。访问自主是指具有某种访问权限的访问者可以向其他访问者传递该种访问许可( 也许是非直接的) 。
(2)强制访问控制( MAC)
MAC是基于被访问对象的信息敏感程度(如用标签来表示)以及这些敏感信息可以赋予该访问主体的访问权限来进行权限控制的。MAC 对于不同类型的信息采取不同层次的安全策略, 并针对不同类型的数据来进行访问授权。它给每个控制主体和被访问对象分配敏感标签, 分别称作安全访问(Securit Clearance)和安全分类(Security Classification)。指定了与访问主体有关的信任度, 而安全分类则指定了访问主体或程序的信任度。
显然基于角色的访问控制方法(RBAC)的显著的两大特征是:1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。2.灵活地支持信息系统的安全策略,并对系统的变化有很大的伸缩性。
2、RBAC实现
2.1、系统结构
按照RBAC模型,要对.NET应用程序进行访问控制,首先要将各种实体信息(用户、角色、访问权限)和实体之间相互关系信息表示出来,进行建模,如图4。
图4 系统RBAC关系模型图
2.2、功能初始化
(1)功能(Powers)初始化为5个:
功能ID号 |
功能名称 |
最大权限 |
P1 |
新闻分类 |
11110 |
P2 |
新闻内容 |
11111 |
P3 |
广告分类 |
11110 |
P4 |
广告内容 |
11111 |
P5 |
友情链接 |
11111 |
说明:最大权限(最长32位),给定 第一位表示读取,第二位表示添加,第三位表示修改,第四位表示删除,第五位表示推荐。全示例只使用四位权限码,本数据结构最长可以使用32位;本程序设计理论支持56位(需要改数据库类型为binary(4)的字段"权限")长度为7。此表数据由开发人员接文档输入。发布后不可改
(2)角色(Roles)数据初始化为4个:
角色ID |
角色名称 |
R1 |
新闻编辑 |
R2 |
总编辑 |
R3 |
广告管理员 |
R4 |
超级管理 |
(3)角色与功能(RolePowers)关系
角色ID号 |
功能ID号 |
最大权限 |
R1 |
P1 |
10000 |
R1 |
P2 |
11110 |
R2 |
P1 |
11110 |
R2 |
P2 |
10001 |
R3 |
P3 |
10000 |
R3 |
P4 |
11110 |
R4 |
P5 |
11111 |
说明:权限不能大于各功能的最大权限
(4)角色继承(IRoles)关系:R2继承R1(即R2拥有R1的所有功能使用权)
角色ID |
父角色ID |
R2 |
R1 |
R4 |
R1 |
R4 |
R2 |
R4 |
R3 |
(5)用户(Users)数据初始化为3人
用户ID |
用户名 |
U1 |
Xiaoming |
U2 |
Datong |
U3 |
Wuming |
(6)用户与角色(UserRoles)关系:
用户ID |
角色ID |
继承数 |
U1 |
R1 |
0 |
U2 |
R2 |
0 |
U2 |
R1 |
1 |
U3 |
R4 |
0 |
U3 |
R3 |
1 |
U3 |
R2 |
1 |
U3 |
R1 |
2 |
(7)用户与功能(UserPowers)的关系
用户ID |
功能ID |
权限码 |
U1 |
P1 |
10000 |
U1 |
P2 |
11110 |
U2 |
P1 |
11110 |
U2 |
P2 |
11111 |
U3 |
P1 |
11110 |
U3 |
P2 |
11111 |
U3 |
P3 |
10000 |
U3 |
P4 |
11110 |
U3 |
P5 |
11111 |
用户与功能的数据由以上各表数据变动而调整此表数据。权限码是对应用户U和相同功能P叠加之后功能P的权限码。
(8)其他功能
菜单(Menus)关联对应的功能,可根据实际情况实现分类:.Net Web与.Net WinForm。同一功能对应这两种系统的不同菜单。
用户菜单(UserMenus)雷同用户与功能(UserPowers),系统根据人员对应的权限发生改变而更改。
2.3、系统运行方式
本系统在.Net环境下构建,分B/S和C/S两个版本,使用相同的业务逻辑,唯一不同的是展示方式。具有相同的运行方式:
(1)用户登录时要通过身份认证, 该过程由认证中心完成。通过身份认证后的用户将会获得其拥有的所有菜单;会话开始。
(2)系统对获取的菜单进行构建,B/S主要通过页面地址进行访问;而C/S通过存放窗体或者控件命名空间、类库名称,利用反射技术进行创建。
(3)访问对应的页面,在页面级进行功能权限的判定,比如添加、修改、删除、审核等细粒度的操作。
(4)用户工作完毕 LOGOUT系统,结束会话。
本系统可作为其他信息管理系统的权限控制的基本实现,其他系统可以依附该系统进行开发,从而不必考虑用户权限的分配、回收等相关事务操作。
3、结束语
RBAC是一项新的存取控制技术, 它通过引入角色这个中介, 实现了用户与访问许可的逻辑分离, 极大地方便了权限管理。RBAC 在研究领域、用户和软件厂商中都引起了广泛的关注, 被认为是一种比传统的 DAC和 MAC更普遍适用的访问控制技术。
本文针对传统的RBAC 96模型在角色继承关系及授权分配给予了相关解决方案。但是, 在实际操作过程中,任务之间是有一定联系的,如相斥关系、 依赖关系, 在本文中还没有提出关于这个方面的解决方案。在今后的工作中, 我们可能会在这个方面做出一定的努力。
参考文献:
[1] 蒋赟赟, 吴承荣,张世永.数据库访问控制模型分析[J].计算机工程与应用,2002,(13):183-185.
[2] 何海云, 张春, 赵战生. 基于角色的访问控制模型分析[J]. 计算机工程,1999,(8):39-44.
[3] 施景超, 孙维祥,许满武.基于角色的存取控制及其实现[J]. 计算机应用研究,2000,17(6):13-15.
[4] 钟华, 冯玉琳, 姜洪安. 扩充角色层次关系模型及其应用[J]. 软件学报,2000,11(6):779-784.
[5] 李孟珂, 余祥宣.基于角色的访问控制技术及应用[J]. 计算机应用研究,2000,17(10):44-47.
[6] 张大江, 钱华林.一个利用数字证书实现的 RBAC 模型[J]. 小型微型计算机系统,2001,22(8):936-939.
[7] 饧亚平, 李伟琴, 刘怀宇.基于角色的细粒度的访问控制系统的研究与实现I - J ] .北京航空航天大学学报,2001 , 2 7( 2 ): 178 — 181.
[8] 黄益民, 杨子江, 平玲娣, 等.安全管理系统中基于角色访问控制的实施方法[ J ] .浙江大学学报( 工学版),2004 ,3 8 ( 4 ): 4 0 8 - 413.
[9] 何斌,顾健. 基于角色访问控制的权限管理系统[J]. 计算机工程(增刊),2004,30:326-328.
[10] 周文峰,尤军考,何基香. 基于 RBAC 模型的权限管理系统设计与实现[J]. 微计算机信 2006,22(15) :35-36.
[11] 夏志雄,张曙光. RBAC在基于 Web管理信息系统中的应用[J]. 计算机应用研究,2004,(7):198~199.