SQL Server中基于角色的访问控制应用

时间:2022-06-25 05:48:24

SQL Server中基于角色的访问控制应用

摘要:在数据库系统里面,有大量敏感信息并且被不同用户共享,需要对他们安全保护,防止未经授权的访问。访问控制作为一种强有力的保护系统的方式,能保证信息的完整性和机密性。此文先介绍基于角色的访问控制机制,然后在SQL Server平台上应用基于角色的访问控制策略,以保证数据库的安全。

关键词:数据库安全;基于角色的访问控制;角色

中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)25-1375-03

Role-Based Access Control Application in SQL Server

CHEN Hong-mei, GE De-jiang

(Three Gorges Vocational College of Electric power,Yichang 443002, China)

Abstract: In database system,need for protecting information from unauthorized access has lead to more attention in the field of information security, since the system maintains sensitive information to be shared by multipule users. Access control mechanisms are powerful means to ensure information confidentiality and integrity. in this paper, Role-Based Access Control and its character is briefly present firstly,then in SQL SERVER apply Role-Based Access Control policy to ensure database security.

Key words: database security; Role-Based Access Control; role

1 引言

数据库安全的主要目的是通过各种安全控制机制来保证数据库的保密性、完整性和可用性。数据库的根本目标是确保只有授权的用户才能在授权范围内进行授权的操作[1]。访问控制技术应用最广泛并且最有效。访问控制策略一般有三种:自主型访问控制方法、强制型访问控制方法和基于角色的访问控制方法(RBAC)。其中,自主式太弱,强制式太强,二者工作量大,不便于管理。而基于角色的访问控制,可以有效克服前两种访问控制技术的不足,降低授权管理的复杂性,提高授权的灵活性。因此本文以SQL Server为平台,对基于角色的访问控制加以应用。

2 基于角色的访问控制

RBAC(Role-Based Access Control)是近年来在信息安全领域访问控制方面的研究热点和重点。基于角色的访问控制RBAC作为一种灵活和直观的访问控制技术在20世纪90年代迅速发展起来,RBAC通过引入角色的新概念来实施访问控制策略。不同的角色和它所应具有的权限许可互相联系,用户作为某些角色的成员,获得角色所拥有的权限。角色可以根据实际的单位或组织的不同工作职能和权限来划分,依据用户所承担的不同权利和义务来授权相应的角色,对于一个存在大量用户和权限的权限分配系统来说,从用户到角色的管理,简化了权限分配的复杂性,提高了安全管理的效率和质量。

美国国家标准与技术研究院标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)[2]。RBAC0模型如图1所示。

图1 RBAC0

RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。核心RBAC的核心概念包括五个基本的静态集合:用户集(Users),角色集(Roles),操作集(Operations,0PS),对象集(Objects,OBS),权限集(Permissions,PRMS)和一个运行过程中动态维护的会话集(sessions)。这些集合称为RBAC的组件。组件及其之间关系描述如图1所示。

在RBAC之中,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。角色是一个强大的工具,使您得以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。

如果根据工作职能定义了一系列角色,并给每个角色指派了适合这项工作的权限,则很容易在数据库中管理这些权限。之后,不用管理各个用户的权限,而只须在角色之间移动用户即可。如果工作职能发生改变,则只须更改一次角色的权限,并使更改自动应用于角色的所有成员,操作比较容易。

SQL Server提供了一些预先定义的用户角色,它们具有一些特定的管理权限。你还可以为你的特定环境需求创建定制的角色。在你的数据库上分配权限给这些角色,然后根据人们工作职责的变化从这些角色中添加和删除用户/群。

3 SQL Server 中的基于角色的安全机制

数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server为维护数据库系统的安全性提供了完善的管理机制和简单而丰富的操作手段。在实际应用中,用户可以根据系统对安全性的不同需求采用合适的方式来完成数据库系统安全体系的设计。SQL Server的安全机制可以划分为4个等级。

(1) 客户机操作系统的安全性

(2) SQL Server服务器的安全性

(3) 数据库的安全性

(4) 数据库对象的安全性

在用户使用客户计算机通过网络实现对SQL Server的访问时,用户首先要获得客户计算机操作系统的使用权 。操作系统的安全性一般是操作系统管理员或网络管理员的任务。由于SQL Server采用了集成Windows NT网络安全性机制,所以使得操作系统安全性的地位得到提高,但同时也加大了管理数据库系统安全性和灵活性的难度。

SQL Server的服务器级安全性建立在控制服务器登录账号和密码的基础上。SQL Server采用了集成Windows NT登录和标准SQL Server登录两种方式。无论是使用哪种登录方式,用户在登录时提供的登陆账号和密码,决定了用户能否获得SQL Server的使用权,以及获得访问权之后,用户在访问SQL Server进程时可以拥有的权利。管理和设计合理的登录方式,是DBA的重要任务。SQL Server事先设计了许多固定服务器的角色,用来为具有服务器管理员资格的用户分配使用权利。拥有固定服务器角色的用户可以拥有服务器级的管理权限。

在用户通过SQL Server服务器的安全性检验以后,将直接面对不同的数据库入口,这是用户将接受的第三次安全性检验。在建立用户的登录帐号信息时,SQL Server提示用户选择默认的数据库。以后用户每次连接上服务器后,都会自动转到默认的数据库上。对任何用户来说,master数据库的门总是打开的。如果在设置帐号时没有指定默认的数据库,则用户的权限将局限在master数据库以内。默认的情况下,数据库的拥有者可以访问该数据库的对象,可以分配访问权给别的用户,以便让别的用户也拥有针对该数据库的访问权,在SQL Server中并不是所有的权利都可以自由转让和分配。

SQL Server在服务器和数据库级的安全性级别上都设置了角色。角色是用户分配权限的单位。SQL Server允许在数据库级上建立新的角色,然后为角色赋予多个权限,然后再通过角色将权限赋予给SQL Server的用户。SQL Server不允许用户建立服务器级的角色。

数据库对象的安全性是核查用户权限的最后一个安全等级。在创建数据库对象的时候,SQL Server将自动把该数据库对象的所有权利赋予该对象的创建者。对象的拥有者可以实现该对象的完全控制。默认情况下,只有数据库的拥有者可以在该数据库下操作。当一个非数据库拥有者想访问数据库里的对象时,必须事先由数据库的拥有者赋予该用户对指定对象的执行特定操作的权限。一般来说,为了减少管理的开销,在对象级安全管理上应该在大多数场合赋予数据库用户以广泛的权限,然后再针对实际情况在某些敏感的数据上实施具体的访问权限制。

4 在学生成绩管理系统中的应用

在 SQL Server 2000中,用户可属于多个角色。

以下脚本说明登录、用户和角色的添加,并为角色授予权限。

USE master

GO

首先创建登录。这里映射windows用户john、sarah、betty、ralph、diane为数据库服务器的登录用户,并且默认登录数据库为courses。这是实现服务器级的安全性。

sp_grantlogin 'CHM\John'

GO

sp_defaultdb 'CHM\John', 'courses'

GO

sp_grantlogin 'CHM\Sarah'

GO

sp_defaultdb 'CHM\Sarah', 'courses'

GO

sp_grantlogin 'CHM\Betty'

GO

sp_defaultdb 'CHM\Betty', 'courses'

GO

sp_grantlogin 'CHM\Ralph'

GO

sp_defaultdb 'CHM\Ralph', 'courses'

GO

sp_grantlogin 'CHM\Diane'

GO

sp_defaultdb 'CHM\Diane', 'courses'

GO

其次,添加john、sarah、betty、ralph、diane为数据库courses的数据库用户。这样john、sarah、betty、ralph、diane就可以实现对courses的访问。这是数据库级的安全性。数据库的访问权限通过映射数据库用户和登录账户之间的关系来实现的。

USE courses

GO

sp_grantdbaccess 'CHM\John'

GO

sp_grantdbaccess 'CHM\Sarah'

GO

sp_grantdbaccess 'CHM\Betty'

GO

sp_grantdbaccess 'CHM\Ralph'

GO

sp_grantdbaccess 'CHM\Diane'

GO

第三,根据具体的应用环境设置角色professor、student。在学校里有两种典型的角色:教师和学生。

sp_addrole 'Professor'

GO

sp_addrole 'Student'

GO

第四,将教师设置成教师角色professor,将学生设置成学生角色student。

sp_addrolemember 'Professor', 'CHM\John'

GO

sp_addrolemember 'Professor', 'CHM\Sarah'

GO

sp_addrolemember 'Professor', 'CHM\Diane'

GO

sp_addrolemember 'Student', 'CHM\Betty'

GO

sp_addrolemember 'Student', 'CHM\Ralph'

GO

sp_addrolemember 'Student', 'CHM\Diane'

GO

最后,给角色professor、student设置权限,通过grant语句授权。

GRANT SELECT ON StudentGradeView TO Student

GO

GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor

GO

该脚本给 John 和 Sarah 教授提供了更新和查询学生成绩的权限,而学生 Betty 和 Ralph 只能查询他们自己的成绩。ProfessorGradeView 视图应将教授限制在自己班学生的行上,而 StudentGradeView 应限制学生只能查询自己的成绩。

5 结束语

基于角色的访问控制以其授权的灵活性和管理授权的高效性而著称,通过在学生成绩管理系统为例,SQL Server 2000平台中,引入角色的概念,实现基于角色的访问控制应用。

参考文献:

[1] 张敏,徐震,冯登国,等. 数据库安全[M].北京:科学技术出版社,2005.

[2] ferraiolo D,Sandhu R,Gavrila S,et al.Propoeed NIST standard for role-based access control[J].ACM TISSEC,2001,4(3):224-274.

上一篇:基于UML的网上选课系统的建模研究 下一篇:椭圆曲线的数字签名技术在无线网络中的应用