1、SQL Server 数据库信息安全实施策略摘 要 为了保护数据库系统中存放的信息的安全, SQL Server 2005的安全控制分为 Windows级安全、SQL Server级安全和数据库级安全 3个等级的安全策略。本文主要介绍实施这些策略的相关知识,即登录管理、用户管理、角色管理和权限管理等操作的具体实现方法。 关键词 信息安全; SQL Server; 数据库; 实施; 策略 中图分类号 TP309; TP393.0 文献标识码 A 文章编号 1673 - 0194(2013)13- 0066- 03 1 前 言 信息是对各种事物的存在方式、运动状态和相互联系特征的一种表达和陈述,信
2、息是一种可共享、能增值、多效性的资源,它的安全对于人类具有特别重要的意义。信息安全的实质就是要保护信息系统中的资源免受各种类型的威胁,防止存放信息的数据库系统被非法破坏,数据库中的数据被外泄或肆意更改。数据库系统的安全也就意味着信息的安全。 数据库系统不是独立存在的,因此,数据库的安全和计算机系统的安全、操作系统的安全及网络安全是相互依存,互相支持的。数据库安全性控制有用户标识和鉴定 、存取控制 、视图 、审计、 密码存储等多种方法。基于教学时限及学生知识体系结构等原因,在 SQL Server 2005教学中,我们主要从以下几个策略入手,介绍实施 SQL Server安全控制的方法。 2 S
3、QL Server 安全控制策略 SQL Server 2005安全控制策略是采用分层机制来进行权限管理,在每一层都有相应的安全性机制,只有上一层的安全性要求满足以后,才可以进入下一层,以此确保数据库安全使用。SQL Server 2005的安全性管理分为 Windows级安全性、SQL Server级安全性和数据库级安全性 3个等级,如图 1所示。 2.1 Windows 级安全性 Windows 级安全性是指在 Windows操作系统层次提供的安全控制。也就是说,要访问 SQL Server 服务器,首先要获得计算机操作系统的使用权,操作系统安全性专门由操作系统管理员或者网络管理员来实施。
4、SQL Server 采用了集成 Windows NT网络安全性机制,提高了操作系统安全性,同时也提高了数据库系统的安全性。 2.2 SQL Server 级安全性 SQL Server 级的安全性是在 SQL Server服务器层次提供的安全控制,该层次通过验证来实现,SQL Server 级的安全性建立在控制服务器登录账户和密码的基础上。SQL Server 采用了标准 SQL Server 登录和集成 Windows NT登录两种方式。无论使用哪种登录方式,用户在登录时提供的登录账户和密码,决定了用户能否获得 SQL Server的访问权,以及在获得访问权以后,用户在访问 SQL Ser
5、ver时可以拥有的权利。 2.3 数据库级安全性 数据库级安全性是指在数据库层次提供的安全控制,该层次通过授权来实现。授权过程在用户试图访问数据或执行命令的时候出现,所创建的安全账户称为数据库用户。用户登录 SQL Server服务器后,可以访问哪些数据库以及对数据库可以访问什么内容,其权限都由该层次控制。在默认的情况下只有数据库的拥有者才可以访问该数据库的对象。如果设置登录账户时没有指定默认的数据库,则用户的权限仅仅局限在Master数据库以内。 3 SQL Server 安全策略的实施方法 在下列的实施操作中,我们均以某学院的“学生信息管理”系统为例进行说明,该系统是一个用于管理全院学生基
6、本信息的网络办公平台。在 SQL Server 2005中,我们可以使用 SQL Server Management Studio和 T-SQL两种方法进行数据库的相关操作。本文均以 T-SQL的方法进行操作举例。 3.1 登录管理 用于连接到 SQL Server 服务器的账户都称为 SQL Server 的登录。访问 SQL Sever 服务器的前提是拥有一组服务器承认的账户和密码,在通过服务器的验证后,用户才能取得使用 SQL Sever 服务的基本权利。不同的登录对不同的数据库对象可以有不同的访问权限。 3.1.1 验证模式 在登录账户的控制上, SQL Server支持两种身份验证模
7、式,即“Windows身份验证模式”和“SQL Server和 Windows身份验证模式(混合验证模式) ”。 Windows 身份验证模式就是让 SQL Server认可 Windows NT的安全控制机制,用 Windows NT的账户和密码进行验证。只要用户登录 Windows NT时所用账户和密码,在 SQL Server中已有对应的账户和密码,用户就能顺利登录 SQL Server服务器。采用这个身份验证模式,只要登录了Windows NT,登录 SQL Server时就不需要再次输入账户和密码了。 混合验证模式使用户可以使用 Windows身份验证或 SQL Server身份验证
8、与 SQL Server实例连接。当用户用指定的登录名称和密码从非信任连接进行连接时,SQL Server 通过检查是否已设置 SQL Server登录账户,以及指定的密码是否与以前记录的相匹配,自行进行身份验证。使用 SQL Server和 Windows验证的混合模式时,表示用户可自行选择要用Windows登录或是 SQL Server登录,默认会使用 Windows验证。 3.1.2 管理登录 登录属于 SQL Server 2005服务器级的安全策略,要对 SQL Server 2005 实施维护和管理,首先需要存在合法的登录账户来连接登录到服务器上。 (1) 创建登录。例如,学院为王
9、老师创建名为“teacher_w”的登录,密码为“111111” ,并指定默认数据库为“学生信息管理” ,则可进行下列操作: Exec sp_addlogin teacher_w , 111111 , 学生信息管理 ,simplified chinese (2) 查看登录。例如,查询当前服务器上的所有登录账户的信息可以用下列命令: Exec sp_helplogins (3) 删除登录。例如,如果学院收回王老师的登录权限,则可将其登录名删除: Drop login teacher_w 3.2 用户管理 在数据库中用户名与登录账户是两个不同的概念,一个合法的登录账户只表明其通过了 Windows
10、身份验证或 SQL Server 混合身份验证,但不能表明其可以对数据库数据和数据对象进行某类操作。 用户是 SQL Server 2005数据库级的安全策略,用来设置登录账户对数据库是否有访问权限,所以在数据库创建新的用户前,首先必须存在一个有效的登录和该用户对应。SQL Server把登录名与用户名的关系称为映射。用登录名登录 SQL Server后,在访问各个数据库时,SQL Server会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用 guest用户访问此数据库。 (1) 新建数据库用户。如为王老师创建与其登录名“teacher_
11、w ”关联的数据库用户“user_w” ,在“学生信息管理”中可以用下列操作实现: Create user user_w For login teacher_w (2) 查看数据用户信息: Exec sp_helpuser (3) 删除数据库用户。例如,如果收回王老师对数据库“学生信息管理”的使用权限,则可以删除为其创建的数据库用户“user_w” ,那么王老师将无权访问“学生信息管理”库,操作如下: Drop user “user_w” 3.3 角色管理 3.3.1 服务器角色 服务器角色用来设置登录账户对 SQL Server本身的使用权限,在SQL Server 2005安装时就创建了在
12、服务器级别上的预定义角色,每个角色对应着相应的管理权限,并且适用于整个服务器范围。当一组登录账户登录服务器具有相同的访问限权,对每个账户分别设置又很麻烦时,我们就可以利用服务器角色对它们进行集中的管理。不能自行建立新的服务器角色,也不能更改服务器角色所拥有的权限。 (1) 固定服务器角色。SQL Server 2005 系统提供了 8个固定的服务器角色,即Sysadmin、Serveradmin、Setupadmin、Securityadmin、Processadmin、Dbcreator、Diskadmin、Bulkadmin。其中,Sysadmin 的权限最大,可以在服务器中执行任何活动。
13、默认情况下,Windows BUILTINAdministrators 组(本地管理员组)的所有成员都是Sysadmin固定服务器角色的成员。 (2) 设置服务器角色。例如,如果学院委托王老师为系统管理员,则可将其登录名“teacher_w”添加到“Serveradmin”服务器角色中,使其在服务器中拥有最大权限,操作如下: Exec sp_addsrvrolememberteacher_w , Serveradmin 3.3.2 数据库角色 登录账户在数据库中有对应的用户后就可以访问该数据库了,但可以做什么样的访问则需通过访问权限的设置来决定。在 SQL Server 2005安装时,数据库
14、级别上有一些预定义的角色。在创建每个数据库时,都会添加这些角色到新创建的数据库中,每个角色对应着相应的权限。 (1) 固定数据库角色。 SQL Server 2005提供了 10个固定数据库角色。即db_accessadmin、db_backupoperator、db_datareader、db_datawriter、db_ddladmin、db_denydatareader、db_denydatawriter、db_owner、db_securityadmin、public。其中,db_owner 在特定的数据库中具有全部权限。 (2) 设置数据库角色。例如,假设王老师因工作需要,由系统管理
15、员转为数据库系统管理员,为了使其方便管理,可以将其用户“user_w”添加到数据库角色“db_owner”中,使其在特定的数据库中具有全部权限,可通过下列操作实现: Exec sp_addrolememberdb_owner user_w 3.4 权限管理 权限用来指定授权用户可以使用的数据库对象及可以对这些数据库对象执行的操作。 (1) 权限种类:对象权限、语句权限、固定角色权限。 (2) 权限含义。 授予权限:允许某个用户或角色对一个对象执行某种操作或某种语句。 拒绝访问:拒绝某个用户或角色对一个对象执行某种操作或某种语句,即使其已被授予或继承了某种权限。 取消权限:不允许某个用户或角色对
16、一个对象执行某种操作或某种语句,它与拒绝是不同的,它可以通过加入角色来重新获取允许权。 (3) 权限管理。例如,王老师“user_w”是数据库“学生信息管理”的用户,如果只允许王老师对“学生信息管理”中的“学生”表进行查看和插入记录,但不能进行更改和删除记录,如何对王老师进行授权呢?在“学生信息管理”库中,我们可以进行下列操作: 授予用户“user_w”查看和插入权限 Grant Select ,Insert On 学生 To user_w 拒绝用户“user_w”更改和删除权限 Deny Update,Delete On 学生 To user_w 如果取消王老师的删除权限,则可进行下列操作:
17、 Revoke Delete On 学生 From user_w 4 SQL Server 安全管理注意事项 (1) 提高管理效率。充分利用界面管理方法和模板资源管理器,能有效提高管理效率。 (2) 加强账号管理。注意账号密码,特别是 SA用户等特殊账号的密码管理。 (3) 管理好日志。日志可以记载数据库活动的所有记录,是安全管理的重要工具。 (4) 管理好扩展存储过程。从安全角度出发,要特别加强存储过程,特别是扩展存储过程的权限控制。如果必要,可以删除一些不必要的,易被人利用的存储过程。 (5) 管理好端口。SQL Server数据库可通过相应程序端口连接访问,任何人都可能绕过操作系统的安全
18、机制,进入数据库系统,因此加强端口的管理显得更加重要。 进入 21世纪,随着信息技术的不断发展,信息安全问题也日益突出。如何确保信息系统的安全已成为全社会关注的问题。数据库管理系统作为各行各业信息管理的主要形式,承载着信息保护的重任,这就需要我们更深入地理解 SQL Server的安全控制策略,以实现信息系统安全的更高目标。 主要参考文献 1 赵丽辉. SQL Server 2005数据库技术与应用 M. 北京:机械工业出版社,2012:206-228. 2 刘志成. SQL Server 2005 实例教程 M. 北京:电子工业出版社, 2008:247-276. 3 蒋文沛. SQL Server 2005 实例教程 M. 北京:人民邮电出版社, 2009:176-193.