1、第8章 任务八 保证数据库安全性 ______应用SQL Server 2005安全管理策略 任务 熟练掌握如何注册服务器,学习如何管理用户、角色并授予相关权限。 目标 l 了解SQL Server 2005的安全机制 l 掌握登录名的创建与管理。 l 掌握角色和用户的创建与管理。 l 了解数据控制语言对数据库权限的控制。 l 了解SQL Server 2005的安全管理模型 8.1任务8-1 SQL Server 2005 安全机制 任务:了解SQL Server 2005的安全机制以及相关概念。 就目前而言,绝大多数数据库管理系统都还是在某一
2、特定操作系统平台下运行的应用程序,SQL Server 2005也不例外,SQL Server 2005的安全机制分为以下4个等级。 l 客户机操作系统的安全性。 l SQL Server的登录安全性。 l 数据库的使用安全性。 l 数据库对象的使用安全性。 每个安全等级都好像一道门,如果门没有上锁,或者用户就有开门的钥匙,用户就可以直接通过这道门,从而轻松的到达下个一个安全等级。如果通过了所有的门,则用户就可以实现对数据库的方问了。这种关系如图8-1所示。 图8-1 SQL Server 2005的安全等级 1.操作系统的安全性 在使用客户计算机通过网络实现对SQL S
3、erver服务器的访问时,用户要首先获得客户计算机操作系统的使用权。 一般来说,能够实现网络互联的前提下,用户没有必要直接登录运行SQL Server 服务器的主机,除非SQL Server服务器就运行在本地计算机上。SQL Server 可以直接访问网络端口,所以可以实现对Windows NT安全机制以外的服务器及其数据库的访问。 操作系统安全性是操作系统管理员或者网络管理员的任务。由于SQL Server采用了集成Windows NT网络安全机制,从而使得操作系统安全性的地位得到提高,但同时也加大了管理数据库系统安全性和灵活性的难度。 2.SQL Server的安全性 SQL Se
4、rver的服务器级安全性建立在控制服务器登录账号和密码的基础之上。SQL Server采用了标准SQL Server登录和集成Windows NT登录两种方式。无论使用哪种方式登录,用户在登录时提供的登录账号和密码,决定了用户能否获得SQL Server的访问权,以及在获得访问权以后,用户在访问SQL Server进程时可以拥有的权限。管理和设计合理的登录方式是SQL Server安全机制中的第一道防线。 SQL Server事先设计了许多固定服务器角色,拥有固定服务器角色的用户可拥有服务器级的管理权限。 3.数据库的安全性 在用户通过SQL Server服务器的安全性检查后,将直接面对
5、不同的数据库入口。这是用户将接受到的第三次安全性检查。 在建立用户的登录账号信息时,SQL Server会提示用户选择默认的数据库。以后用户每次连接服务器后,都会自动转到默认的数据库。对任何用户来说,master数据库总是打开的,如果在设置账号时没有指定默认数据库,则用户的权限将局限在master数据库内。但是由于master数据库存储了大量的系统信息,对系统的安全和稳定起着至关重要的作用,所以建议用户在建立新的登录账号时,最好不要将默认的数据库设置为master数据库,而是将默认数据库设置在具有实际操作意义的数据库上。 默认的情况下,数据库的拥有者(Owner)可以访问该数据库的对象,分
6、配访问权限给别的用户,以便让别的用户也拥有针对该数据库的访问权限。 4.SQL Server数据库对象的安全性 数据库对象的安全性是核查用户权限的最后一道门。在创建数据库对象时,SQL Server自动把该数据库对象的拥有权赋予该对象的创建者。对象的拥有者可以实现该对象的安全机制。默认情况下,只有数据库的拥有者可以在该数据库下进行操作。当一个非数据库拥有者想访问数据库内的对象时,必须事先由数据库拥有者赋予用户对指定对象执行特定操作的权限。 例如,一个用户想访问JXGL数据库中的student_info表中的信息,则必须在成为数据库用户的前提下,获得由JXGL数据库拥有者(Owner)分配
7、给的student_info表的访问权限。 8.2任务8-2 分析“高职院校教学管理系统”数据库的安全要求 任务:分析“高职院校教学管理系统”数据库的安全要求。 由于实例数据库是针对高职院校的特点所设计和建立的,所以对其数据库的安全要求也有其特殊的一面。下面从几个个方面来说明: 1. 系统用户分析 根据系统需求分析结果,本系统主要面向以下用户: l 系统管理员:负责系统的日常维护。 l 管理者:教务处的管理员,执行该系统的大部分业务操作,涉及教师、学生、课程、教材、成绩等信息的录入、查询、更新、汇总和审核。 l 成绩管理者:任课教师。对任课班级进行成绩录入、
8、修改和查询。 l 查询者:包括年级辅导员和学生。辅导员拥有拥有查询所辖班级学生成绩和基本信息的权限。学生只拥有查询个人信息和成绩的权限。 2. 用户安全性策略 将用户分为一般性用户和终端用户。 (1) 一般用户的安全性 包括密码的安全性和用户的权限管理。如果用户是通过数据库进行用户身份的确认,最好使用密码加密的方式与数据库进行连接。尤其是对于一般性用户说是十分必要的。基于对系统用户的分析结果,对于用户角色丰富的数据库JXGL而言,应充分利用数据库“角色”这个机制对权限进行有效管理。对于复杂的系统环境,“角色”能大大地简化权限的管理。 (2) 终端用户的安全性 同时,还必须针对终端
9、用户制定安全性策略。对于拥有非常多用户(尤其学生数量的巨大)的数据库,安全性管理员可以决定用户组分类,并为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户。 3.安全性策略 ⑴ 保护作为sys和system用户的连接 当数据库创建好以后,立即更改有管理权限的sys和system用户的密码,防止非法用户访问数据库。 ⑵ 使用角色对管理员权限进行管理 数据库管理者对所有的用户访问权限进行分配,不同的用户有不同的访问权限。使得数据库有一个良好的安全访问机制,从而保证数据库数据的安全。 ⑶ 数据库的安全备份机制 及时合理地对数据库进行备份。(将在第12章介绍) 8.3任
10、务8-3管理SQL Server服务器安全 任务:了解SQL Server 2005的验证登录模式,登录名的创建与管理,以及掌握对服务器角色的管理。 8.3.1 SQL Server 2005服务器的登录模式 1.Windows身份验证模式 使用Windows操作系统本身提供的安全机制验证用户的身份。用 Windows 身份验证连接到 SQL Server 时,Windows 将完全负责对客户端进行身份验证,按其 Windows 用户帐户来识别客户端。只要用户能够通过Windows 的用户账户验证,就可以连接到SQL Server。 Windows身份验证只能使
11、用在能够提供有效身份验证的基于NT的Windows操作系统,而在Windows 95/98或Windows Me中不能使用。Windows身份验证的优点是: l 由Windows系统管理员直接管理用户账号,方便管理。 l Windows中提供了诸如:安全验证和密码加密、审核、密码过期、密码长度限制以及多次登录失败后自动锁定账户等功能,大大提高了安全性能。 2. SQL Server身份验证模式 由SQL Server 通过将客户端提供的用户名和密码与 SQL Server 中维护的有效用户名和密码列表进行比较,对客户端进行身份验证。该验证模式下,使用复制或远程数据访问连接到 SQL S
12、erver 时,应用程序必须提供相应的 SQL Server 登录名和密码。 当用户使用指定的登录账号和密码进行非信任连接时,SQL Server将检测登录账号的存在性和密码的匹配性,如果登录账号和密码不正确,系统将拒绝用户的登录操作。 8.3.2 创建与管理登录名 账户要进入SQL Server系统必须登录,SQL Server在整个服务器范围管理登录。登录名即登录数据库服务器的账户,存储在master数据库的syslogins系统表中。 1. 使用SQL Server Management Studio创建登录名 (1) 启动SQL SERVER MANAGEMENT STUD
13、IO,在“对象资源管理器”窗口中展开 “安全性”节点,在列表中选择“登录名”,单击鼠标右键,在弹出的快捷菜单中选择“新建登录名”命令,打开“登录名-新建”对话框。 (2) 在“登录名-新建”对话框中的“选项页”列表框中有五个选项:常规、服务器角色、用户映射、安全对象及状态,如图8-2所示 其中“常规”选择页中各选项的含义: l 登录名:输入或选择SQL Server登录名。 l Windows身份验证:选择该单选按钮,将对该登录账户使用Windows身份验证。 l SQL Server身份验证:选择该单选按钮,将对该登录账户使用SQL Server身份验证。 图8-2 新建登
14、录 l 默认数据库:为该登录账户选择默认打开的数据库。 l 默认语言:为该登录账户选择默认的语言。 当选择SQL Server身份验证单选项后,会出现以下复选项: l 强制实施密码策略: 对登录账户强制实施密码策略。是SQL Server身份验证的默认设置。 l 强制密码过期: 对登录账户强制实施密码过期策略。选择“强制实施密码策略”后方能启动此项。 l 用户在下次登录时必须更改密码:首次使用新登录名时,SQL Server将提示用户输入新密码。 选择“服务器角色” 选项,可向用户授予服务器范围内的安全特性。“服务器角色”选项页中提供的服务器角色的含义: l Bulka
15、dmin:该成员能够运行BULK INSERT语句。 l dbcieator:该成员能够创建、更改、删除和还原任何数据库。 l diskadmin: 该成员能够管理磁盘文件。 l processadmin:该成员能够终止在数据库引擎实例中运行的进程。 l securityadmin: 该成员能管理登录名及其属性。 l serveradmin:该成员能够更改服务器范围的配置选项和关闭服务器。 l setupadmin:该成员能够添加和删除链接服务器,并执行某些系统存储过程。 l sysadmin:该成员能够在数据库引擎中执行任何活动。默认情况下,本地管理员组的所有成员都是sysad
16、min固定服务器角色的成员。 选择“用户映射”选项,各选项的含义: l 映射:允许登录名访问列出的数据库。 l 默认架构:指定用户的默认架构,初次创建用户时,其默认架构是dbo。 l 已启用Guest帐户:<数据库名>:只读属性,指示当前数据库是否已启用Guest账户。 l 数据库角色成员身份:<数据库名>:选择用户在当前数据库中的角色。在每个数据库中,所有用户都是public角色的成员并且不能被删除。 使用“安全对象”选项,能查看或设置数据库安全对象的权限。单击按钮,将选项添加到“安全对象”列表框中,然后在“显示权限”列表框为其设置适当的权限。各选项的含义: l “安全对象”列
17、表框:添加、删除要设置权限的对象或主体。 l “显示权限”列表框:列出了“安全对象”列表框中所选安全对象的可能权限。选中或清除“授予”、“具有授予权限”和“拒绝”复选框对这些权限进行配置。 选择“状态”选项,能够配置所选SQL Server登录名的一些身份验证和授权选项。 2.使用系统存储过程sp_addlogin创建登录名 系统存储过程sp_addlogin能够创建新的登录名,该登录允许用户使用SQL Server身份验证连接到SQL Server实例。基本语法如下: sp_addlogin `login_name`,`pawwwork`,`default_database` [
18、`default_language`] 图8-3 创建登录帐户user01 【例8-1】使用存储过程“sp_addlogin”创建”,密码为“001”,默认数据库为“JXGL”。 EXEC sp_addlogin 'user01','001', 'JXGL' GO 执行以上代码。刷新“登录名”节点,在列表中会发现登录帐户“user01”已经存在,如图8-3所示。 3. 管理登录名 (1)使用系统存储过程“sp_password”添加或更改用户密码。基本语法如下: sp_password `old_passwork`,`new_passwork`,`login_name `
19、 【例8-2】使用系统存储过程“sp_password”将登录帐户“user01”的密码修改为“000”。 sp_password '001','000','user01' GO (2)使用系统存储过程“sp_defaultdb”修改SQL Server登录名的默认数据库。基本语法如下: sp_defaultdb ` login_name `,`new_default_database ` 【例8-3】使用系统存储过程“sp_ defaultdb”将登录帐户“user01”的默认数据库修改为“JXGL02”。 sp_defaultdb 'user01',' JXGL02'
20、3)使用系统存储过程sp_droplogin删除登录名。基本语法如下: sp_ droplogin ` login_name ` 【例8-4】使用系统存储过程“sp_droplogin” 删除登录帐户“user01”。 sp_droplogin 'user01' 8.3.3 服务器角色管理 角色(role),是一组具有相近权限的登录账户所构成的组。当数据库的很多账户的权限各不相同,单独授权的话,不便于集中管理。而当权限改变时,管理员可能需要逐个修改权限。角色就是对登录账户的集中管理机制,当若干个账户都被赋予同一个角色时,它们都继承了该角色的权限,若角色的权限变更了,这些相关的
21、账户权限都会发生变化。 SQL Server 2005的角色分为:固定服务器角色、数据库角色和应用程序角色。登录账户与服务器角色的关系类似于Windows的用户和组的。 固定服务器角色在其作用域内属于服务器范围,角色的每个成员都可以向其所属角色添加登录名。SQL Server 2005提供了如表8-1所示固定服务器角色。 表8-1 固定服务器角色 固定服务器角色 描 述 sysadmin 能够在SQL Server中执行任何活动 serveradmin 能够设置服务器范围内的配置选项,关闭服务器 securityadminn 安全管理员,可以管理登录服务器权限
22、 setupadmin 能够添加和删除链接在服务器,并且也可以执行某些系统存储过程 processadmin 管理在SQL Server中运行的进程 dbcreator 能够创建、更改、删除和还原任何数据库 diskadmin 能够管理磁盘文件 bulkadmin 能够执行BULK INSERT语句 图8-4 显示本在服务器角色 1. 使用系统存储过程sp_helpsrvrole浏览服务器角色 sp_helpsrvrole [ [@ srvrolename = ] `role` ] 【例8-5】使用sp_helpsrvrole存储过程浏览本地服务器角色。
23、 sp_helpsrvrole 执行以上代码,结果如图8-4所示。 2. 添加固定服务器角色成员 在“服务器角色”列表中双击“sysadmin”,弹出“服务器角色属性_ sysadmin”对话框,单击 图8-5 添加固定服务器角色成员 按钮,可添加一个登录账户为固定服务器角色。 也可以使用系统存储过程sp_addsrvrolemember添加登录账户为固定服务器角色成员。 【例8-6】使用sp_addsrvrolemember将“user01 ”添加为固定服务器角色sysadmin的成员。 sp_addsrvrolemember 'user01','sysadmin'
24、 执行以上代码,刷新“服务器角色”节点。再一次打开“服务器角色属性_ sysadmin”对话框,在“角色成员”列表中发现user01已经被添加在内,如图8-5所示。 3. 浏览固定服务器角色的权限 使用系统存储过程浏览固定服务器角色的权限。基本语法如下: sp_srvrolepermission [ [ @ srvrolename = ] `role` ] 【例8-7】使用存储过程sp_srvrolepermission显示sysadmin角色的权限;使用存储过程sp_srvrolepermission显示所有固定服务器角色的权限。 程序代码如下: EXEC sp_srvr
25、olepermission 'sysadmin' --显示sysadmin角色的权限 EXEC sp_srvrolepermission --显示所有固定服务器角色的权限 任务:SQL Server 2005数据库架构管理,掌握对用户的创建和管理,对授权的认识,以及对数据库角色的管理。 8.4任务8-4 管理SQL Server数据库安全 8.4.1 数据库架构管理 架构是形成单个命名空间的数据库实体的集合,属性数据库级的安全对象。在SQL Server 2005之前,每个对象都是被用户所拥有的,如果用户离开了,就意味着需要将该用户账户拥有的所有
26、对象的权限转换到新的账户上。在SQL Server 2005中,对象被架构所拥有,而架构同时被用户所拥有,这样转移权限就会变得容易和快捷。 在数据库JXGL下,展开“安全性”节点,选择“架构”,单击鼠标右键,在弹出的快捷菜单中选择“新建架构”命令,打开“架构-新建”对话框。在架构名称文本框内输入“JCGL2”,在架构所有者文本框中输入“db_owner”。如图8-6所示。 图8-6 新建数据库架构 点击“权限”选项页,添加相应的角色和选择赋予这个角色的权限,如图8-7所示。 图8-7 设置架构权限选项 点击按钮完成对,完成数据库架构的添加。刷新“架构”节点,在列表中发现新的
27、架构“JCGL1”。 8.4.2 数据库用户管理 数据库用户也是一个数据库级的安全对象。用户使用登录名登录后,要想访问某数据库对象,需要对该数据库对象拥有相应的权限,而登录名本身并不提供访问数据库对象的用户权限。 在SQL Server 2005中,登录名和数据库用户是SQL Server 进行权限管理的两个不同的对象。一个登录名可以与服务器上的所有数据库进行关联,而数据库用户是一个登录名在某个数据库用户中的映射,即,一个登录名可以映射到不同的数据库,产生多个数据库用户,而一个数据库用户只能映射到一个登录名。 一个登录名必须与每个数据库中的一个数据库用户ID关联后,用这个ID连接的用户
28、都有访问数据库中的对象。反之,定义数据库用户ID时,必须与一个登录名关联。 1. 使用SQL Server Management Studio管理数据库用户 在数据库JXGL下,展开“安全性”节点,在列表中选择“用户”,单击鼠标右键,在弹出的快捷菜单中选择“新建用户”命令。打开“数据库用户-新建”对话框,进行如图8-8所示的各项设置。 其中几个选项的含义: l 用户名:为所选登录名输入用户名。 l 登录名:创建新用户时,从列表中选择一个登录名。如果对现有用户进行编辑,则 不能更改此项。 l 无登录名:指示登录名是使用WITHOUT LOGIN子句创建的。 l 默认架构:除非另行
29、指定,否则指定该用户所创建对象所属的架构。 l 此用户拥有架构:在此选择或查看该用户拥有的架构。 l 数据库角色成员身份:从可用的数据库角色列表中为数据库用户选择数据库角色成员身份。 图8-8 新建数据库用户 选择某数据库用户,单击鼠标右键,在弹出的快捷菜单中选择“删除”命令,可删除所选数据库用户。 2. 使用T-SQL语句管理数据库用户 使用CREATE USER 语句创建数据库用户,并与指定登录名相关联。基本语法如下: CREATE USER db_user_name [FOR]LOGIN login_name | WITHOUT LOGIN 【例8-7】 创建
30、数据库用户名为“user02”,与登录账户“user01”相关联。 CREATE USER user02 FOR LOGIN user01 使用ALTER USER 语句修改数据库用户。基本语法如下: ALTER USER db_user_name WITH <修改项> 【例8-8】 将数据库用户“user02”的名称修改为“user03”。 ALTER USER user02 WITH name=user03 使用DROP USER 语句可删除数据库用户。 8.4.3 数据库角色管理 如同SQL Server登录名隶属于某个数据库角色一样,数据库用户也总是归属
31、于某个数据库角色。数据库角色是在数据库级的安全对象,存在于每个数据库中。SQLServer 2005提供了10个固定数据库角色,如表8-2所示。 表8-2 固定数据库角色 固定数据库角色 描 述 db_owner 数据库的所有者,能够执行数据库得所有管理操作 db_accessadmin 能够添加或删除用户 db_securityadmin 执行语句及对象权限管理 db_ddladmin 能够增加、修改或删除数据库中的对象 db_backupoperator 能够执行数据库备份和恢复 db_datareader 能够读取用户表中的所有数据 db_
32、datawrite 能够更改用户表中得所有数据 db_denydatareader 禁止用户查看用户表中的数据 db_denydatawriter 禁止修改任意用户表中的数据 1. 使用SQL Server Management Studio创建数据库角色 数据库角色是针对某一具体的数据库而言的,其作用域为该数据库范围。 【例8-11】在SQL Server Management Studio中向“JXGL”数据库中添加数据库角色teacher。 (2) 启动SQL Server Management Studio,在“对象资源管理器”窗口中展开节
33、点“安全性”、“角色”,在角色列表中选择“数据库角色”,单击鼠标右键,在弹出的快捷菜单中选择“新建数据库角色”命令,打开“新建数据库角色”对话框。设置角色各选项值如图8-9所示。 图8-9 数据库角色“常规”项 l 所有者:显示数据库角色的所有者。 l 此角色的成员:从可用的数据库用户的列表中选择角色的成员身份。 (2) 根据需要,设置“安全对象”及“扩展属性”中的相关选项。 2. 使用T-SQL语句创建与管理数据库角色 (1)添加数据库角色 使用系统存储过程sp_addrole 能够为当前数据库创建一个新的数据库角色。基本语法如下: sp_addrole‘db_role
34、name’,‘db_role_name_owner’ 【例8-12】向数据库JXGL中添加名为“student1”的新数据库角色。 USE JXGL GO EXEC sp_addrole 'student1' (2) 删除数据库角色 使用系统存储过程sp_droprol”删除当前数据库中的角色。基本语法如下: sp_droprole 'db_role_name' 注意:首先应该删除数据库角色的所有成员,然后才能删除该数据库角色。不能在用户定义的事务内执行sp_droprole。 (3)添加数据库角色成员 使用系统存储过程sp_addrolemember添加数据库角色成
35、员。基本语法如下: sp_addrolemember 'db_role_name','db_user_name' (4)删除数据库角色成员 使用系统存储过程sp_droprolemembe删除数据库角色成员。基本语法如下: sp_droprolemember'db_role_name','db_user_name' 8.4.4 授权管理 权限用来指定用户可以使用的数据库对象及对这些数据库对象执行的操作。用户登录到SQL Server服务器后,若要进行任何涉及更改数据库定义或访问数据库的操作,必须拥有相应的权限,而用户账户所归属的NT组或角色所被赋予的权限,决定了该用户能够对哪些数据
36、库对象执行哪些操作(查询、输入、修改、删除)。 在SQL Server 2005中,包括三种权限:默认权限、对象权限和语句权限。 ⑴ 默认权限 系统安装以后,固定服务器角色、固定数据库角色、数据库对象所有者具有的默认权限。 ⑵ 对象权限 是基于数据库访问层的访问和操作权限。这些对象包括表、视图、列和存储过程。常用的对象权限包括SELECT、INSERT、UPDATE、DELETE和EXECUTE,其中EXECUTE用于存储过程,其他几个权限用于表和视图。 ⑶ 语句权限 是用户能否对数据库和数据库对象进行操作,语句权限应用于语句本身,而不是数据库对象。当用户获得了某个语句的权限,
37、也就具有了执行该语句的权力。要进行语句权限授予的语句如表8-3所示。 表8-3 授予权限的语句 序 号 语 句 权 限 含 义 1 CREATE DATABASE 允许用户创建数据库 2 DREATE TABLE 允许用户创建表 3 CREATE VIEW 允许用户创建视图 4 CREATE RULE 允许用户创建规则 5 CREATE DEFAULT 允许用户创建默认对象 6 CREATE PROCEDURE 允许用户创建存储过程 7 CREATE FUNCTION 允许用户创建用户自定义函数 8 BACKUP DA
38、TABASE
允许用户备份数据库
9
BACKUP LOG
允许用户备份事务日志
1. 授予权限
使用GRANT语句授予权限。基本语法如下:
GRANT
39、OKE语句可撤销已授权的权限,其语法结构与GRANT相似。 3.禁止授权 使用DENY语句可防止主体通过GRANT获得特定权限,其语法结构与GRANT相似。 【例8-10】撤销为用户“use03”授予查询学生信息的权限,禁止用户“user03”对学生信息的特定权限。 USE JXGL GO GRANT SELECT ON student_info TO user03 GO DENY SELECT,INSERT,UPDATE,DELETE ON student_info TO user03 GO 任务:充分的了解和认识SQL Server 2005的安全管理模型。
40、 8.5任务8-5 SQL Server 2005的安全管理模型 由于多种原因,进行安全设置的用户常常不理解数据的真正价值,所以,也无法对数据进行合适的保护。将数据只限于需要的人访问,并保证访问的人的合法性,是一个数据库管理人员的重要工作。 在SQL Server中的安全管理模型是基于Windows安全模型实现的,如图8-10所示。 图8-10 第一种安全模式 图8-11 第二种安全模式 使用角色来分配对象权限时,仍需要使用建议的方法为各个用户授予对服务器和数据库的访问权限。 步骤①到步骤④与图8-13中基本相同,不同的只是可能不必创建多个 Windows
41、全局组和本地组。 步骤⑤:将各个Windows账户和Windows组分配给某个角色。 步骤⑥:为角色分配对象访问权限。 使用角色,通过在SQL Server内组织用户而减少了在Windows内组织用户的需要。 8.6知识进阶 8.6.1 登录管理、用户管理、角色管理与权限管理的比较 1.登录管理 登录管理是定义在数据库服务器级的安全对象,主要是增加新的登录名。登录名是基于服务器使用的用户名,既可以创建基于Windows组或用户账号的登录账号,也可以创建SQL Server自己的登录账号。 2.用户管理 用户管理是针对一个具体的数据库来说的数据库级安全对象。在实现数据库安全
42、登录后,检验用户权限的下一步就是数据库的访问权。而数据库的访问权是通过映射数据库的用户和登录账户之间的关系来实现的。一个登录账户在不同的数据库中可以映射成不同得数据库用户,从而可以具有不同的权限。这种映射关系即数据库用户的管理为同一服务器上不同数据库权限管理提供了最大的灵活性。 3.角色管理 角色是SQL Server引进的用来集中管理数据库和服务器权限的概念。数据库管理员(DBA)操作数据库的权限赋予角色,然后再将角色赋给数据库用户或者登录的账户,从而使数据库用户或登录账户有相应的权限。在SQL Server中既包含服务器角色又包含数据库角色。 l 服务器角色:主要于在用户登录时授予的
43、在服务器范围内的安全特权。 l 数据库角色:能为某一用户授予不同级别的管理或访问数据库及其对象得权限。 由于角色管理的应用,使SQL Server在管理中方便了对数据库角色的操作,提高了数据库的工作效率。 4.权限管理 SQL Server 使用权限来指定数据库用户的权限,如可以对哪些数据库或数据库对象,执行哪些操作。如果用户没有被授予这些权限,就不能对数据库或数据库进行访问、查询、修改或删除操作。 当用户执行某项操作时,相应的SQL语句通过网络发送到SQL Server服务器。SQL Server服务器收到SQL语句后,检查该用户是否具有对操作对象的授予权限及执行这些操作语句的
44、权限。如果SQL Server服务器的授权验证通过,系统执行这些操作语句,否则,系统将给出错误信息。 在SQL Server中使用权限管理不仅针对数据库用户而言,同样的对登录账户也起着至关重要的作用。 8.6.2 实施数据库安全管理过程中应注意的问题 l 除非必要,否则尽量以Windows验证来管理可连接SQL Server的使用者,以整合Windows NT/2000的安全机制。 l 善用SQL Server的服务器角色与数据库角色功能。 l 善用SQL Server的加密功能。 l 系统安装完毕后,务必更改预设的sa密码,免得有其他使用者“义务”管理您的SQL Server。
45、 习题 一、填空题 1. SQL Server 2005的安全机制分为 、 、 和 4个等级。 2.SQL Server 2005有哪两种登录验证模式,其为 和 。 3.SQL Server 2005有两种角色分别是: 和 。 4.在SQL Server数据库中执行任何活动一个是 服务器角色。 5.可以使用 删除SQL Server登录,禁
46、止以该登录名访问SQL Server实例。 二、选择题 1. SQL Server 2005中的角色包括 。 A.服务器级别角色 B. 固定数据库角色 C. 用户 D. 程序员 2.SQL Server用来管理权限的命令是 。 A.GRANT、DENY、REVOKE B. DELETE、DENY、REVOKE C. SELECT、DROP、INSERT D. CREATE、ALTER、DROP 3.以下服务器角色成员中能够创建、更改、删除和还原任何数
47、据库的是 。 A.bulkadmin B. diskadmin C. securityadmin D. dbcreator 4.可以使用 更改SQL Server登录名的默认数据库。 A.sp_addlogin B. sp_defaultdb C. sp_addserverolemember D. sp_password 5.可以使用 更改SQL Server登录名或更改密码。 A.sp_addlogin B. sp_addrolemember C. sp_addserverolemember D. sp_password 三、简答题(或操作题) 1.简述SQL Server 2005安全机制是怎样的? 2.简述SQL Server 2005的登录验证模式,这两种验证模式有何区别? 3.什么是服务器角色,数据库管理员能不能创建和删除服务器角色? 4.简述数据库用户的作用,以及其与服务器登录账号的关系。 5.权限类型有哪几种?请分别举例说明?






