你的位置:首页 > 软件开发 > ASP.net > .NET环境下基于RBAC的访问控制

.NET环境下基于RBAC的访问控制

发布时间:2016-03-06 15:00:12
.NET环境下基于RBAC的访问控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文从目前信息系统的变化趋势及其多资源的访问问题出发,提出一种基于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所示)。

 

.NET环境下基于RBAC的访问控制

图1 RBAC模型简图

其核心思想是:受保护功能模块的访问权限与角色相联系,而只给用户分配不同角色;用户与所要求访问的功能模块之问没有直接关系,若用户要访问某一资源,那他必须具有可访问此资源的角色。在RBAC模型中,角色起到了桥梁的作用。

 

1.2、RBAC96模型定义

    (1)RBAC96模型

该模型是由美国George Mason大学RaviS.Sandhu等提出的RBAC96模型,其基本结构如图2:

.NET环境下基于RBAC的访问控制

图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 模型为规则模型, 其角色和许可也改称为规则角色和规则许可。

.NET环境下基于RBAC的访问控制

图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。

.NET环境下基于RBAC的访问控制

图4 系统RBAC关系模型图

 

2.2、功能初始化

(1)功能(Powers)初始化为5个:

功能ID号

功能名称

最大权限

P1

新闻分类

11110

P2

新闻内容

11111

P3

广告分类

11110

P4

广告内容

11111

P5

友情链接

11111


原标题:.NET环境下基于RBAC的访问控制

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。