基于角色与权限继承的访问控制模型解决方案

时间:2022-08-25 10:34:36

基于角色与权限继承的访问控制模型解决方案

摘要:基于对RBAC模型及相关模型中角色继承规则,引入权限组等概念,提出了一个改进的角色与权限层次关系模型。在此模型上进行访问控制应用的设计,集成活动目录技术作为统一的人员库,形成了一个较为完善的访问控制解决方案,使基于角色的访问控制更为灵活与利于理解。

关键词:访问控制;基于角色的访问控制;角色继承;权限继承;活动目录

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)04-0838-04

Access Control Solution with Inheritable Role and Permission Model

CHEN Qi

(Department of Computer Science and Technology, Tongji University, Shanghai 201804, China)

Abstract: Based on the RBAC model and related role inheritance rules, concepts such as permission group and an improved role hierarchy and permission hierarchy model are introduced. Based on this model and integration with Active Directory as a unified user database, a more comprehensive access control solution is formed. It enables role-based access control more flexible and conducive to understanding.

Key words: access control; RBAC; role inheritance; permission inheritance; active directory

1 概述

企业中越来越多的业务需要各种软件的支撑。随着软件使用的不断增长,对如何有效、安全地对用户权限进行管理是发展中需要解决的一个问题。与此同时,在不同的软件中使用不同的用户登录方式等,将带来繁琐与冗余问题的产生,降低管理效率。访问控制作为计算机网络信息安全管理的主要策略,通过某种途径显式地允许或限制用户、组或角色对信息资源的访问能力及范围。

常用的自主访问控制(DAC)和强制访问控制(MAC)方法由主体与访问权限直接发生关系,根据主客体的所属关系或主客体的安全级来决定主体是否具有对客体的访问权。当访问用户的种类繁多、数量巨大并动态变化时,使用传统的访问控制方法变得非常困难[1]。基于角色访问控制RBAC(Role Based Access Control) 是一种已经被广泛应用于大型企业的计算机网络中实施访问控制的访问控制技术,Sandhu等提出的RBAC96 模型得到了学术界的广泛认可[2]。

RBAC96模型包括了RBAC0、RBAC1、RBAC2、RBAC3四个模型。

RBAC0包含四个基本要素:用户、角色、会话和访问权限。用户在一次会话中激活所属角色的一个子集,获得一组访问权限,即可对相关客体执行规定的操作,任何非显式授予的权限都是被禁止的。

RBAC1是对RBAC0的扩充,在RBAC0的基础上加入了角色层次关系,根据组织内部权力和责任的结构来构造角色与角色之间的层次关系。

RBAC2也是RBAC0的补充,但与RBAC1不同的是RBAC2加进了约束的概念。RBAC2中的约束规则主要有:最小权限、互斥角色、基数约束与角色容量、先决条件、等级间的互斥角色等。而RBAC3模型是对RBAC1和RBAC2的集成,包括角色的层次关系与约束关系。

基于角色访问控制方法引入角色的概念作为中介,管理员根据需要定义各种角色, 并设置合适的访问权限, 而用户根据其责任再被指派为不同的角色。这样, 整个访问控制过程就分成了两部分, 即访问权限与角色相关联, 角色再与用户相关联, 从而实现了用户与访问权限的逻辑分离。基于该关系模型,将职责分离原则用于了系统权限管理中,通过利用角色与权限之间较为稳定的变化来简化权限管理,提高了权限管理的效率。

在该关系模型中,能够通过角色的继承关系进行子角色权限与父角色权限的继承,并通过引入私有角色这一定义来限制权限的继承。如果通过增加新的私有角色来保留所需要的权限不被继承,那么将会增加角色的数量,且角色关系的继承与实际管理中的角色继承之间的对应关系也将变得更为复杂,使得原先引入角色以期简化权限管理的效果降低。角色继承机制与具体权限分配方法的完善,是该模型的仍需要进行进一步研究的区域。

通过对RBAC相关的研究与企业实际业务需求的研究,现提出了一个基于RBAC模型的角色继承与权限继承模型。主要特点是增加了权限的许可类型,归纳了角色继承中的权限有效值计算,以及对权限进行分组,引入权限组及其继承的相关概念,以满足实际系统应用中的现实权限管理需求,增加角色与权限关系的灵活性。特别地对于快速成长中的企业与软件应用系统,能提高权限管理效率与直观性,降低相应的管理成本。

2 角色继承与权限继承模型的描述与定义

2.1 元素的描述与定义

用户:用户是一个可以独立访问数据或用数据表示的资源的主体,用USERS表示用户集合。一般情况下指人或登录帐户。

权限:权限是对数据或用数据表示的资源进行访问的许可。用PERMISSIONS 表示一个权限集合。

角色:角色是指一个组织或任务中的工作或位置, 它代表了一种资格、权利和责任。用ROLES表示一个角色集合。

权限组:权限组表示一组权限的集合。用PGROUPS 表示该集合,即?埚PERMISSIONS?哿PGROUPS。

元素之间的定义如下关系:

用户角色委派:用户角色委派是一个二元关系,设UR?哿USERS×ROLES是一个用户角色委派关系集合,那么(u, r) ∈UR 表示用户u 被委派了一个角色r。

角色权限委派:角色权限委派是一个三元关系,设RP?哿ROLES×PERMISSIONS×TYPE是一个角色权限委派关系集合,则(r,p,t) ∈RP表示角色r与权限p具有设置t。这里把许可权限设为允许和拒绝两种值,即t ∈{ALLOW,DENY}。

用户权限集合:令P(r)为角色r所拥有的权限委派集合。

角色继承:角色继承是一个二元关系,设RI?哿ROLES×ROLES是一个继承关系集合,则(r1,r2)∈RI表示角色r2继承角色r1,记为r1r2。如果r1r2,那么对于?坌p∈P(r1),有p∈P(r2)。

2.2 角色最终权限有效值的计算

当角色之间有继承时,涉及到角色所拥有权限集合的有效值计算。定义如下的继承规则来计算权限有效值,这里将角色r与权限p具有设置的有效值t设为V(r,p):

规则1:显式权限在继承权限之前

规则2:拒绝权限设置在允许权限设置之前

规则3:继承距离较近权限在继承距离较远权限之前

对于规则2,当显式权限设置相冲突或相同距离的继承权限设定相冲突时,应用该规则。

因此,对于角色r1、r2、r3、r4且r1r2 r3,r1 r4:

如果r1同时定义了对于p的两个的委派设置,一个为允许一个为拒绝,最终有效值为拒绝;

?坌p: (r1,p,t1)∈P(r1), (r1,p,t2)∈P(r1) ?圯 V(r1,p)= t1∧t2

如果r1与r2同时定义了对于p的委派设置,显式权限设置优先,即r1权限设置生效:

?坌p: (r1,p,t1)∈P(r1), (r2,p,t2)∈P(r2) ?圯 V(r1,p)=t1

如果r2与r3同时定义了对于p的委派设置,距离较近权限设置优先,即r2权限设置生效:

?坌p: (r1,p,t1)=?I, (r2,p,t2)∈P(r2) ,(r3,p,t3)∈P(r3)?圯 V(r1,p)=t2

如果r2与r4同时定义了对于p的委派设置,则最终有效值为逻辑与,即等距离情况下如果存在拒绝则最终有效值为拒绝:

?坌p: (r1,p,t1)=?I, (r2,p,t2)∈P(r2), (r4,p,t4)∈P(r4) ?圯V(r1,p)=t2∧t4

对于角色继承中的权限最终有效值的计算,伪代码如下:

function GetAccessPermission (User u, Permission p)

Queue1=User.Roles

while (Queue1.Length>0)

Queue2=NULL

foreach r in Queue1

if GetPermission(r,p)=DENY then return DENY end if

VisitedQueue.Enqeue(p)

end foreach

foreach r in Queue1

if GetPermission(r,p)=ALLOW then return ALLOW end if

Queue2.Enqeue(p.Parents)

end foreach

Queue1=Queue2.Subtract(VisitedQueue)

end while

return NULL

end function

2.3 扩展至权限组的角色最终权限有效值的计算

权限组权限集合:令PG(pg)为权限组pg所拥有的权限集合。

权限组继承:权限组继承是一个二元关系,设PI?哿PGROUPS ×PGROUPS是一个继承关系集合,则(pg1,pg2) ∈PI表示权限组pg2继承权限组pg1,记为pg1pg2. 如果pg1r2, 那么对于?坌p ∈PG(pg1) , 有p ∈PG (pg2).

角色权限组委派:角色权限组委派是一个三元关系,设RG?哿ROLES×PGROUP×TYPE是一个权限配置关系集合,则(r,pg,t) ∈RG表示角色r与权限组pg具有设置t。

扩展角色权限委派为角色权限组委派后,角色最终权限有效值的计算也相应扩展。当角色与权限之间没有设定时,将扩展为该角色与权限组之间所拥有权限集合的计算。对于可继承的权限组,角色与权限组的有效值计算规则与可继承角色与权限的计算规则基本相同,描述如下:

步骤1:角色r与权限p之间设置了权限有效值t,返回t;否则转步骤2。

步骤2:当前权限或权限组没有父权限组,返回空;否则转步骤3。

步骤3:按广度优先,遍历当前权限或权限组的父权限组与角色r之间设置,如果存在一个或多个设置,返回有效值的逻辑与;否则转步骤2。

对于角色与可继承权限组权限最终有效值的计算,伪代码如下:

function GetPermissionExtend (Role r, Permission p)

if GetPermission(r,p)NULL then return GetPermission(r,p) end if

Queue1=p.Parents

while (Queue1.Length>0)

Queue2=NULL

foreach pg in Queue1

if GetPermission(r,pg)=DENY then return DENY end if

VisitedQueue.Enqeue(pg)

end foreach

foreach pg in Queue1

if GetPermission(r,pg)=ALLOW then return ALLOW end if

Queue2.Enqeue(pg.Parents)

end foreach

Queue1=Queue2.Subtract(VisitedQueue)

end while

return NULL

end function

3 基于该模型的访问控制应用

对实际业务的需求进行分析与研究后,引入了权限组的概念,该权限组可与角色之间能委派权限许可,并可被继承。由于权限对应于与其特定操作并具有原子性,因而权限组在角色与权限之间增加了一层逻辑层。在应用中,权限组虽然不是实体操作,但能作为权限的集合对业务逻辑进行进一步抽象,加强单以组织结构为划分原则的角色分配中不足的灵活性与逻辑直观性。

举例而言,在业务逻辑中常常需要对申请与审批环节进行交错的权限许可。可以通过增加审批组的角色而加以区分,但使用该方式将会造成额外的角色出现,增加了角色的数量,不能真实地反映组织管理结构。其次,当审批环节本身的权限发生变化,当多个角色直接与权限设置了许可,此时需要修改的许可映射数量将相对于角色数量成倍增长。另一方面,当业务需要对一组特定高级别权限进行拒绝访问设置时,增加权限组进行限制将比增加角色进行限制更直观并符合管理要求。因此引入权限组后能减少角色与权限直接映射的数量,简化了多个权限按集合进行许可的业务逻辑。

在应用系统中使用可继承角色及权限组时仍然需要考虑如下实际业务需求:

比较增加角色与增加权限组之后,增加的映射关系数量以及此类映射的稳定性。

过多层次的权限组将会降低权限判断的直观性,在已有的角色继承层次上增加管理的复杂度。

对于角色或权限组继承,算法按广度优先进行计算,允许出现环路的层次,但此情况在现实管理上是没有实际意义的,应当避免。

角色和权限组的设定原则是实际业务逻辑,避免将业务逻辑反约束于权限模型。

3.1 模型的应用解决方案

该应用解决方案的架构如图1所示。

3.2 活动目录作为用户库

对用户、角色以及用户角色分配的实现,在基于Windows的软件平台上,以减少角色的重复设置为目的,最大可能地利用现有的IT管理投资,使用活动目录作为角色设置与分配的基础。

活动目录是一种事务性数据库,通过使用结构化的数据存储作为目录信息的逻辑化、分层结构基础,采用面向对象的树形结构对它所在的域网络上的共享资源和用户信息进行逻辑化的分层管理。使用其中的“组织单元容器对象”和“组对象”可以有效地进行用户角色和权限信息的管理,“组织单元容器”对象,用来装载用户、组、打印机等对象,提供了“委派控制”的功能可以用来设定管理权,通过给一个管理人员仅在一个容器中创建或修改对象的权力,就可以把他限制在那个容器中;而“组对象”的“Member”属性以及用户对象的“MemberOf”属性可以方便地实现用户角色的安全管理和指派。为了保证域控制器上的目录数据一致性,通过定期与事件触发,通过标准网络协议进行复制。

因此在用户账户管理中,我们使用活动目录作为统一的用户库,通过域用户作为解决方案中的用户,满足了操作系统与软件系统的单一用户帐户登录的功能。在活动目录中,利用活动目录提供的安全服务,减少了该安全代码量,提高了账户安全设置的灵活度和统一性。与此同时,在组织内使用统一的用户登录与认证方式,将能提高管理效率,简化管理复杂度。

3.3 权限组件数据库

权限组件数据库使用基于SQL Server的关系数据库的解决方案,按本模型的描述与定义与按第三范式原则进行数据库模式与表的建立,并基于活动目录的域用户进行访问控制,以区分例如管理员、一般用户及访客的操作权限级别,增加数据库的安全性。

3.4 同步模块

同步模块负责将活动目录中的用户、组织单元容器和组对象信息按一定格式同步到主数据库中。活动目录使用轻量目录访问协议(LDAP),同步模块通过LDAP可以提取活动目录中的信息。在编程接口上,.net框架存在命名空间System.DirectoryServices,包含了各种对活动目录进行操作的方法。通过调用该命名空间进行LDAP查询语句,并使用以下两种活动目录信息同步方案:

定时同步:系统按设定的日程,遍历对象空间并将结果更新至主数据库中。在遍历时可以通过判断对象的更新时序号USN(Update Sequence Number),进行增量更新。

手动同步:系统按管理员的请求,手动触发一次同步。

3.5 权限设置模块

权限设置模块负责权限的设置与存储功能。由于权限配置是一个三元关系,因此模块提供角色权限委派、角色权限组委派的关系设置,权限与权限组关系设置,权限组继承关系设置的创建、修改、删除等基础功能。通过权限验证模块的有效值计算功能模块,提供按用户出发、角色出发、权限出发和权限组出发的不同委派关系设置及最终有效值的视图。

3.6 权限验证模块

应用系统向权限验证模块提出用户账户与权限请求,权限验证模块从主数据库中提取相关数据,运用本模型的定义和规则,计算该次请求的最终有效值并反馈给应用系统。

临时用户权限委托

实际业务中,当用户临时由于特殊原因,需要将自身的权限委托给其他用户。在该委托关系生效时,权限验证模块同时计算委托用户与被委托用户的权限有效值,当发生重复时按逻辑或进行结果计算并反馈给应用系统,以此计算规则满足该业务需求。

缓存

在应用中,往往一个角色将对特定数量的权限频繁提出验证请求,而在角色层次与权限组层次的数量都达到较大规模时,计算复杂度将以平方数级别增长。因而通过使用缓存技术将反复进行的相同计算结果(会话结果)进行缓存,将提高验证的速度并降低系统负载。因而本模块提供验证请求的会话结果缓存功能,将角色的权限验证结果存入主数据库中进行缓存。一旦由于角色、权限及相关设置的修改,将触发该缓存的有效期终止,并在下一次相同验证请求发生时,重新计算有效值并存入缓存。

4 结束语

在对基于角色访问控制模型的分析与研究基础上,通过定义角色继承、权限组以及权限组继承作为用户与被访问客体的中间媒介,使得权限控制管理的复杂度得到了降低,提高了权限控制的灵活性。在此模型基础上,通过对现实中的业务逻辑进行分析,集成了活动目录技术作为统一用户库并提出了较为完善的访问控制解决方案。下一步的研究工作将在此模型的基础上,进一步研究角色与权限委派中访问设置类型的扩展,将该类型扩展为更细粒度的定义,以使得本模型成为一个应用性更好的访问控制模型。

参考文献:

[1] 钟华,冯玉琳,姜洪安.扩充角色层次关系模型及其应用[J].软件学报,2000,11(6):779-784.

[2] Sandhu R S,Coyne E J,Feinstein H L,et,al.Role-based access control models[J].IEEE Computer,1996,29(2):38-47.

[3] 鞠成东,廖明宏.基于RBAC 模型的角色权限及层次关系研究[J].哈尔滨理工大学学报,2005,10(4):95-99.

[4] 唐瑞春,毛健,徐建良,等.基于活动目录的通用授权管理平台的设计与实现[J].中国海洋大学学报,2006,36(6):1013-1018.

[5] Kalam A A E,Baida R E,Balbiani P,et,anization based access control[C]//Policies for Distributed Systems and Networks,2003.Proceedings.POLICY 2003.IEEE 4th International Workshop on,2003:120-131.

[6] Qi Guo,Vaidya J,Atluri V.The Role Hierarchy Mining Problem:Discovery of Optimal Role Hierarchies[C]//Computer Security Applications Conference,2008.ACSAC 2008. Annual,2008:237-246.

[7] How Active Directory Searches Work[EB/OL]./en-us/library/cc755809.aspx.

上一篇:在asp.net中实现重定向的方法与技巧 下一篇:Geodatabase网络模型的研究与应用