基于角色的访问控制

时间:2022-09-14 02:52:34

基于角色的访问控制

摘要:近年来,随着企业信息系统的广泛使用,系统安全问题受到越来越多的关注,而访问控制技术是解决安全问题的关键。基于角色的访问控制(RBAC)策略作为目前主流的访问控制策略,相比传统的自主访问控制(DAC)和强制访问控制(MAC),体现了更高的灵活性和扩展性。本文对企业信息系统中采用基于角色的安全访问控制(RBAC)技术进行了理论研究和实践探讨。

关键词:基于角色的访问控制;模型;角色;权限

中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2007)03-10613-02

1 引言

随着企业信息系统的广泛使用,人们不仅要求系统的功能不断完善,而且对系统的安全性也提出了更高要求,访问控制正是实现这一要求的一个重要手段。现有的访问控制机制主要有3种模式:自主访问控制(DAC, Discretionary Access Control)、强制访问控制(MAC, Mandatory Access Control)和基于角色的访问控制(RBAC, Role-Based Access Control)。自主访问控制中允许用户个体授权或撤销它所拥有的资源,并且信息在移动过程中其访问权限关系也会被改变,其控制力太弱;强制访问控制使用主体和客体对象相关的安全标签进行访问控制,其控制力又太强。而基于角色的访问控制RBAC能有效地克服这两种传统控制方法中的不足,是目前主流的访问控制机制。

2 基于角色的访问控制

基于角色的访问控制的基本思想是:将用户划分成与其职能和职位相符合的角色,将权限授予角色而不是直接授予主体,主体通过角色分派得到客体操作权限,从而实现授权。减少了授权管理的复杂性,降低了管理开销,为管理员提供了一个比较好的实现安全政策的环境。基于角色的访问控制RBAC自开始被提出就引起了人们的广泛关注,成为访问控制领域内的研究热点。许多学者先后提出了多种RBAC模型,其中尤以Ravi Sandhu教授等提出的RBAC96模型最为著名,成为以后RBAC的研究和应用中的经典。

2.1 基于角色的访问控制模型

RBAC96模型的基本结构如图1所示,它包括如下四个不同层次:RBAC0、RBAC1、RBAC2、RBAC3。

2.1.1RBAC0

RBAC0模型为基本模型,它包括三个实体,用户U(User)、角色R(Role)、权限P( Permission ) 。

定义1RBAC0模型的形式化定义如下:

1)若干实体集U(用户集),R(角色集),P(权限集),S(会话集);

2)UA?哿U×R,为多对多的用户角色指派关系;

3)PA?哿P×R,为多对多的权限角色指派关系;

4)user:SU,映射每个会话到一个用户;

5)roles:S2R,映射每个会话到一组角色roles(s)?哿{r|(user(s),r)∈UA},并且会话S拥有权限Ur∈roles(s){p|(p,r)∈PA}。

从定义1中可以看出,RBAC0只包含最基本的RBAC元素:用户,角色,权限,会话。所有的角色都是平级的,没有指定角色层次关系;所有的对象都没有附加约束,没有指定限制。

2.1.2 RBAC1

RBAC1模型引入了角色层次的概念。在创建角色时,为了反映组织的权利和责任层次关系,角色层次是一个很自然的概念。RBAC1模型包含RBAC0,然后定义了角色继承关系。

定义2RBAC 1模型包含如下元素:

1)U,R,P,S,UA,PA,user与RBAC0一致;

2)RH?哿R×R是R上的偏序关系,记为“≥”,称作角色继承;

3)roles:S2R 修改为roles (s)?哿{r|(?埚r'≥r)[(user(s),r')∈UA]},同时会话S拥有权限Ur∈roles(s){p|(?埚r'≥r)[(p,r')∈PA]}。

这里RBAC1体现了RBAC模型中角色继承关系的语义。一个会话拥有的角色包含UA关系里面指定的角色以及它们的父角色,会话拥有的权限包含其拥有的所有角色在关系里面的权限以及它们的子角色对应的权限。

2.1.3 RBAC2

RBAC2在RBAC0的基础上添加了约束的概念。RBAC2和RBAC1是RBAC0在两个方面的扩展,不是递进的关系。

定义3RBAC2是在RBAC0模型的基础上,要求有一个约束集合,这些约束决定RBAC0中各种元件(component)是否可以接受,只有对可以接受的值操作才可以执行。

约束就是对角色、权限、周围环境的限制。约束不仅真实的反映了客观世界中的责权制约和环境条件,也简化了RBAC系统的管理。

2.1.4 RBAC3

RBAC3包含RBAC1和RBAC2,自然也包含RBAC0。这是一个完整的RBAC模型,包含一切模型元素,也是最复杂的一种模型。角色层次和限制同时存在,限制也可以作用在角色层次之上。完整的模型如图2所示:

图2 RBAC96完整模型

2.2 RBAC的优点

RBAC具有如下的一些优点:通过角色配置用户和权限,增加了灵活性。由于增加了角色作为中介,用户和权限不再直接相关,权限配置就非常灵活。而且角色一般会对应于实际系统中的一些具体的语义概念,管理员配置的时候就十分方便、直观。

支持多管理员的分布式管理,一个大型访问控制系统不可能由一个管理员负责全面管理,因此RBAC模型提供的分布式管理模式就非常重要了。

支持角色继承。为了提高效率,避免相同权限的重复设置,RBAC采用了“角色继承”的概念,定义了这样的一些角色,它们有自己的属性,但可能还继承其他角色的属性和权限。角色继承把角色组织起来,能够很自然地反映组织内部人员之间的职权、责任关系。

策略中立,完全独立于其它安全手段。访问控制本身必须不依赖于原有系统的任何其它安全措施,这样才能使得该访问控制模型在不同的应用背景下都能得到应用。RBAC模型很好的做到了这一点,使得它可以无缝结合到一般的安全产品中去。

3 基于角色的访问控制方案设计

3.1 角色划分

角色是将权限和用户连接起来的桥梁,是RBAC模型的核心。角色划分对于基于角色的安全访问控制机制极其重要,如果角色划分合理,就可以显著降低访问控制授权管理的工作量。在一个应用信息系统中,各个职位之间有层次高低之分,虽然职位的区分并非完全等同于角色的划分,但是角色与职位有一定的对应关系,因此在进行角色划分设计时要充分考虑角色的层次性。我们首先将角色总的分为两个级别:一种是低级别角色,这种角色只能够被直接授予功能权限,一种是高级别角色,既可以被直接授予功能权限,同时也可以将其他角色作为其子角色授予给它。它的子角色既可以是低级别角色,也可以是高级别角色。高级别角色完全继承它的子角色的功能权限。

3.2 权限分配

访问控制在很大程度上而言,是系统对权限的控制,因而权限必须是具体可控的。权限实际上就是RBAC提供给角色的,使角色可以对某具体程序行使“执行权”。如何对操作权限进行划分,如何使其合理分配给角色是安全访问控制方案设计和实现的关键。总的来说,权限主要分为两类:数据操作权限,规定对数据对象有何种操作权限,通过对访问数据库对象的限制来保证数据库的安全性;功能使用权限,规定使用信息系统时哪些功能可用,哪些功能被禁止,通过限制用户使用信息系统的功能来间接保证数据的安全性。对于一个多用户的信息系统进行安全访问控制的设计和实现时,应该把这两者有机结合起来考虑,才能保证系统数据库的安全性。另外,在对角色进行权限分配时要考虑约束机制,主要在以下两个方面实现权限分配的约束:最小权限原则,赋予某角色的权限应是该角色能完成它的任务所需的最小操作权限集,这对维护信息的完整性非常重要,否则会降低系统信息的安全性;设置互斥功能权限,在进行角色授权时,不允许将互相排斥的功能权限授权给同一个角色。

3.3 应用

前文基于角色的访问控制方案设计,在笔者参与开发的某电信信息管理系统中,已经得到了具体应用,下面简单介绍一下当中主要的数据库表:

(1)用户表

CREATE TABLE tab_user(

用户编码char(10) NOT NULL PRIMARY KEY,

用户姓名char(10),

所属部门编码char(6))

(2)角色表

CREATE TABLE tab_role(

角色编码char(10) NOT NULL PRIMARY KEY,

角色名称char(20),

角色描述char(100),

所属功能模块代码char(2),

角色级别代码char(1),

/*0代表低级别角色,1代表高级别角色*/

角色范畴代码 char( 1 ),

角色容量number(3)

/*约束一个角色最多可以授权给多少个用户*/)

(3)功能模块定义表

CREATE TABLE tab_moduldef(

模块编号char(2) NOT NULL PRIMARY KEY,

模块名称 char(30) NOT NULL,

模块管理员编号char(8) NOT NULL)

(4)用户―角色关系表

CREATE TALBE tab_usertorole(

用户编号 char(10) NOT NULL,

角色编号char(10) NOT NULL,

PRIMARY KEY (用户编号,角色编号))

(5)角色层次关系表

CREATE TABLE tab_roletorole(

高级角色编号char(10) NOT NULL,

子角色编号char(10) NOT NULL ,

PRIMARY KEY (高级角色编号,子角色编号))

(6)角色互斥约束表

CREATE TABLE tab_roleexclusion(

角色A编号char(10) NOT NULL,

角色B编号char(10) NOT NULL,

PRIMARY KEY(角色A编号,角色B编号))

(7)功能权限表

CREATE TABLE tab_permission(

权限代码char(20) NOT NULL PRIMARY KEY,

所属模块编号char(2 ) NOT NULL,

权限描述char(80))

(8)权限―角色关系表

CREATE TABLE tab_permissiontorole(

权限代码char(20) NOT NULL,

角色编号char(10) NOT NULL ,

PRIMARY KEY(权限代码, 角色编号))

(9)功能权限互斥约束表

CREATE TABLE tab_permissionexclusion(

权限A代码char(20) NOT NULL,

权限B代码char(20) NOT NULL,

PRIMARY KEY(权限A代码,权限B代码))

(10)权限―数据库对应表

CREATE TABLE tab_permissiontodata(

权限代码char(20) NOT NULL PRIMARY KEY,

SELECT char(20),

DELETE char(20),

UPDATE char(20),

INSERT char(20),

EXCUTE char(20))

基于角色的访问控制系统要面对的就是用户信息、角色信息、权限信息这三类基本的数据信息,而且在访问控制服务器的实现中对基本信息和对应关系的信息进行分开处理,这样的实现方式能够更好的突出通用性的设计,因为针对不同的应用,仅仅需要对基本信息和对应关系信息的结构进行一定的修改就可以完成。

4 结束语

基于角色的访问控制技术实现了用户与访问权限的逻辑分离,将对访问者的控制转换为对角色的控制,从而使授权管理更为方便实用、效率更高。同时,角色与角色之间可以继承权限,使各个角色的权限划分更为清晰、明确,降低了权限管理的复杂性,提高了管理效率。

参考文献:

[1]邹晓.基于角色的访问控制模型分析与实现[J].微计算机信息,2006,22(6-3):108-110,224.

[2]张世明,杨寅春.基于角色的访问控制技术在大型系统中的应用[J].计算机工程与设计,2006,27(19):3723-3725.

[3]王振江,刘强.基于RBAC的扩展访问控制模型[J].计算机工程与应用,2005,35:23-25.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:城市园林管理信息系统的设计与实现 下一篇:IDE硬盘数据线连接顺序引起的故障等