




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第12章章 数据库安全数据库安全第第12章章 数据库的安全性数据库的安全性12.1 SQL Server 安全性概述安全性概述12.2 登录帐户管理登录帐户管理12.3 服务器角色管理服务器角色管理12.4 数据库角色管理数据库角色管理12.5 数据库帐户管理数据库帐户管理12.6 权限管理权限管理习题习题 第第12章章 数据库安全数据库安全12.1 SQL Server 安全性概述安全性概述基本概念数据库安全指保护数据库以防止不合法的使用所造成的数据泄密、更改、或破坏。三种安全模型:自主访问控制(DAC)、强制访问控制(MAC)、基于角色的访问控制(RBAC)模型。 第第12章章 数据库安
2、全数据库安全12.1 SQL Server 安全性概述安全性概述12.1.1 数据库的安全性考虑1从使用方式的角度来看SQL Server 2005的安全性分为两类:数据库安全性和应用程序安全性。数据库安全性以信息资源和信息资源的用户为主要管理对象。一个用户只要具有对某个对象的访问权限,则无论使用什么工具,都可以对该对象进行访问。 第第12章章 数据库安全数据库安全应用程序安全性则可以指定一个数据库或其中的某个对象只能由某些特殊的应用程序访问。2从登录的角度来看在SQL Server系统中,安全性采用的是两级权限管理机制。第一级是服务器级的“连接权”。第二级是数据库级的“访问权”。由于绝大多数
3、数据库管理系统都还是运行在某一特定操作系统平台下的应用程序,SQL Server也不例外,而数据库中又包含有很多对象,因而实际上,SQL Server的安全性机制可以划分为4个等级: 第第12章章 数据库安全数据库安全(1) 客户机操作系统的安全性;(2) SQL Server的登录安全性;(3) 数据库的使用安全性;(4) 数据库对象的使用安全性。每个安全等级就好像一道门,如果门没有上锁,或者用户拥有开门的钥匙,则用户可以通过这道门达到下一个安全等级。如果通过了所有的门,则用户就可以实现对数据的访问了。第第12章章 数据库安全数据库安全12.1.2 帐户验证 既然SQL Server的安全性
4、机制可以划分为四个等级,因而使用数据库中数据的帐户也应从四个方面进行验证。1操作系统级别的验证在用户使用客户计算机通过网络实现对SQL Server服务器的访问时,用户首先要获得客户计算机操作系统的使用权。一般来说,在能够实现网络互联的前提下,用户没有必要直接在运行SQL Server服务器的主机上进行登录,除非SQL Server服务器就运行在本地计算机上。 第第12章章 数据库安全数据库安全保证操作系统安全性是操作系统管理员或者网络管理员的任务。由于SQL Server采用了与Windows集成的网络安全机制,因此使得操作系统的安全性也显得尤为重要,同时也加大了管理数据库系统安全性和灵活性
5、的难度。2服务器级别的验证SQL Server的服务器级安全性建立在控制服务器登录帐户和密码的基础上。SQL Server采用了标准SQL Server登录和集成Windows登录两种方式。无论是使用哪种登录,用户在登录时提供的登录帐户和密码决定了用户能否获得SQL Server的访问权,以及在获得访问权以后,用户在访问SQL Server进程时可以拥有的权利。管理和设计合理的登录帐户是SQL Server 系统管理员的重要任务。第第12章章 数据库安全数据库安全3数据库级别的验证在用户通过SQL Server服务器的安全性检验以后,将直接面对不同的数据库入口。这是用户将接受的第三次安全性检验
6、。默认情况下,数据库的所有者可以访问该数据库的对象,还可以分配访问权给别的用户,以便让别的用户也拥有针对该数据库的访问权利。4数据库对象级别的验证数据库对象的安全性是核查用户权限的最后一个安全等级。在创建数据库对象的时候,SQL Server将自动把该数据库对象的拥有权赋予该对象的创建者。对象的所有者可以实现该对象的完全控制。第第12章章 数据库安全数据库安全默认情况下,只有数据库的所有者可以在该数据库下进行操作。当一个非数据库所有者想访问数据库里的对象时,必须事先由数据库的所有者赋予该用户对指定对象的执行特定操作的权限。例如,一个用户想访问“学生图书借阅管理”数据库里“图书信息”表中的信息,
7、则他必须在首先成为数据库合法用户的前提下,获得由“学生图书借阅管理”数据库所有者分配的针对“图书信息”表的访问权限。第第12章章 数据库安全数据库安全12.2 登录帐户管理登录帐户管理12.2.1 标准的SQL帐户管理1帐户的建立如果要采用SQL Server提供的标准登录模式实现SQL Server服务器的登录连接,用户必须拥有合法的帐户和密码。用户建立标准登录帐户的方式有三种:使用查询分析器,通过系统提供的存储过程;通过SQL Server企业管理器;使用SQL Server提供的创建登录向导。第第12章章 数据库安全数据库安全1) 使用系统提供的存储过程sp_addlogin建立标准登录
8、帐户(1) 基本语法如下:sp_addloginloginame =login,passwd =password,=defabdatabase,deflanguage =language(2) 参数解释如下:loginame 登录帐户名。在同一个服务器上用户的帐户名必须惟一。passwd 帐户的密码。第第12章章 数据库安全数据库安全defab 新建立帐户的默认数据库。如果不设置此参数,则默认值为master数据库。 deflanguage 默认的语言。注意:SQL Server的登录帐户名必须符合SQL Server的命名规则。下面的例子创建了一个登录帐户。EXEC sp_addlogin
9、ssq, 518405, masterGO这个例子创建了一个名叫“ssq”,密码是“518405”,默认数据库为“master”的帐户。注意:对于一个没有授予任何权限的新建帐户,默认数据库只能选择“master”。 第第12章章 数据库安全数据库安全2) 通过SQL Server企业管理器建立标准登录帐户用企业管理器创建标准登录帐户的步骤如下:(1) 展开要创建登录帐户的“服务器”节点。 (2) 选中树型结构上的“安全性”节点,展开该节点,如图8-1所示。(3) 在“登录”节点上右击,弹出的快捷菜单如图8-2所示。第第12章章 数据库安全数据库安全图8-1 树型结构上的“安全性”节点 第第12
10、章章 数据库安全数据库安全 图8-2 快捷菜单 第第12章章 数据库安全数据库安全(4) 在图8-2中单击“新建登录”命令,出现如图8-3所示的界面。 图8-3 新建登录窗口第第12章章 数据库安全数据库安全(5) 在界面上输入有关的登录帐户的相关信息,如帐户名、默认的数据库、默认的语言等。在身份验证中,选中SQL Server身份验证。 图8-4 创建登录帐户第第12章章 数据库安全数据库安全(6) 打开“服务器角色”选项卡,为新建的帐户指定服务器级的权限,如图8-5所示。 图8-5 分配固定服务器角色第第12章章 数据库安全数据库安全(7) 打开“数据库访问”选项卡为新建的帐户指定数据库访
11、问权限,如图8-6所示。用户可以在这个界面上决定允许该登录帐户访问的数据库,以及分配给登录帐户的数据库角色。 图8-6 分配帐户可以访问的数据库第第12章章 数据库安全数据库安全(8) 最后,单击“确定”命令按钮,完成新帐户的建立。3) 使用SQL Server提供的创建登录向导建立标准登录帐户使用向导建立标准登录帐户的步骤如下:(1) 从企业管理器的控制台根目录中的“工具”菜单中选择“向导”命令,如图8-7所示。 第第12章章 数据库安全数据库安全图8-7 选择“向导”选项第第12章章 数据库安全数据库安全(2) 在打开的对话框中,展开“数据库”节点,选中“创建登录向导”选项,如图8-8所示
12、。 图8-8 选择向导第第12章章 数据库安全数据库安全(3) 单击“确定”命令按钮,出现欢迎使用创建登录向导界面,其中简介了它所能替您完成的任务,请直接用鼠标左键单击“下一步”按钮,出现如图8-9所示的对话框。 图8-9 选择身份验证模式对话框第第12章章 数据库安全数据库安全(4) 在身份验证模式对话框中,选中SQL Server身份验证模式,单击“下一步”按钮,出现如图8-10所示的对话框。 图8-10 SQL Server身份验证模式第第12章章 数据库安全数据库安全(5) 在图8-10所示的对话框中,输入登录帐户“陈一铭”和密码“518405”,单击“下一步”按钮,出现如图8-11所
13、示的对话框。 图8-11 选择安全性角色第第12章章 数据库安全数据库安全(6) 在图8-11所示的对话框中,为新建登录选择服务器角色。单击“下一步”按钮,出现如图8-12所示的对话框。 图8-12 选择可以访问的数据库第第12章章 数据库安全数据库安全(7) 在图8-12所示的对话框中,为新建登录选择允许访问的数据库。单击“下一步”按钮,出现如图8-13所示的对话框。 图8-13 完成创建向导第第12章章 数据库安全数据库安全(8) 在图8-13所示的对话框中,列出了您所做的所有设置情况。如果满意,单击完成,系统将按照您的设置建立一个新的帐户。2修改和删除帐户建立好的帐户信息还可以进行修改和
14、删除。1) 使用系统存储过程sp_defaultdb修改登录帐户的默认数据库(1) 基本语法如下:sp_defaultdb loginame = login , , defdb = database第第12章章 数据库安全数据库安全(2) 参数解释如下:loginame = login 登录名。defdb = database 新的默认数据库的名称。例如:EXEC sp_defaultdb ssq , pubs2) 使用系统存储过程sp_defaultlanguage修改登录帐户的默认语言(1) 基本语法如下:sp_defaultlanguage loginame = login , lang
15、uage = language 第第12章章 数据库安全数据库安全(2) 参数解释如下:loginame = login 登录名。language = language 登录的默认语言。例如:EXEC sp_defaultlanguage, ssq, english3) 使用系统存储过程sp_password修改登录帐户的密码(1) 基本语法如下:sp_password old = old_password , new = new_password , loginame = login 第第12章章 数据库安全数据库安全(2) 参数解释如下:old = old_password 旧密码。其默认
16、值为 NULL。new = new_password 新密码。loginame = login 受密码更改影响的登录名。例如:EXEC sp_password 518405, 208107, ssq4) 使用系统存储过程sp_droplogin删除SQL Server标准登录帐户(1) 基本语法如下:sp_droplogin loginame = login(2) 参数解释如下:loginame = login 将被删除的登录。第第12章章 数据库安全数据库安全例如:EXEC sp_droplogin, ssq使用企业管理器也可以实现对标准帐户的修改和删除。由于是简单的可视化操作,具体操作方法
17、在此就不介绍了。注意: (1) 在SQL Server中删除帐户信息时,有如下限制: 已经映射到数据库用户的帐户不允许被删除; 系统帐户sa不能被删除,正在使用的帐户不能被删除; 拥有数据库的帐户不能被删除。第第12章章 数据库安全数据库安全(2) 在进行修改和删除操作时用到的所有存储过程和使用企业管理器进行的有关帐户、密码、角色、权限的操作,都只有被赋予sysadmin或securityadmin固定服务器角色的用户才可以使用。12.2.2 与Windows集成的帐户管理1帐户的建立所谓与Windows集成的登录帐户,实际上是将Windows的用户和工作组映射为SQL Server的登录帐户
18、。对于已经映射的Windows帐户,SQL Server可以对这些帐户采取信任登录的方式。如果这些Windows的用户或工作组成员能够成功地登录Windows,则SQL Server就承认他们是合法的用户,从而允许他们连接上服务器。与Windows集成的登录模式实际上是让Windows代替SQL Server执行登录审查任务。第第12章章 数据库安全数据库安全用户建立与Windows集成的登录帐户方式有三种: 使用查询分析器,通过系统提供的存储过程; 通过SQL Server企业管理器; 使用SQL Server提供的创建登录向导。因为后两种与建立标准登录模式帐户相似,所以在这里只介绍第一种方
19、式。使用系统存储过程sp_grantlogin来使Windows的用户或工作组映射成为SQL Server的登录帐户。(1) 基本语法如下:sp_grantlogin loginame = login(2) 参数解释如下:loginame = login 要添加的 Windows用户或组的名称。第第12章章 数据库安全数据库安全例如:sp_grantlogin lgdjsjx这个例子将Windows服务器上lgd域下的工作组jsjx映射成为了SQL Server的登录帐户。注意:映射工作组或用户的前提条件是该工作组或用户必须存在于Windows服务器上。当用户将工作组设置为SQL Server
20、的帐户后,所有工作组的成员都可以使用这个帐户实现针对SQL Server的连接。所有工作组的成员都将享有该帐户的所有权限。在给出工作组或用户名时,必须指定用户或工作组所在的域,并使用定界符将域和用户括起来。第第12章章 数据库安全数据库安全2删除Windows帐户 使用系统存储过程sp_revokelogin可以从SQL Server中删除用sp_grantlogin创建的Windows用户或组的登录项。(1) 基本语法如下:sp_revokelogin loginame = login(2) 参数解释如下:loginame = login Windows 用户或组的名称。注意: 只有sysa
21、dmin或securityadmin固定服务器角色的成员才能执行 sp_revokelogin。 删除SQL Server标准用户帐户和删除Windows帐户应使用不同的系统存储过程。第第12章章 数据库安全数据库安全例如:EXEC sp_revokelogin lgdssq 使用企业管理器也可以实现对Windows帐户的删除。由于是简单的可视化操作,具体操作方法在此就不介绍了。3拒绝登录帐户使用系统存储过程sp_denylogin可以设置不允许Windows的工作组或用户连接SQL Server服务器。(1) 基本语法如下:sp_denylogin loginame = login 第第12
22、章章 数据库安全数据库安全(2) 参数解释如下:loginame = login Windows用户或组的名称。例如:EXEC sp_denylogin lgdjsjx注意:只能拒绝Windows帐户登录,而不能拒绝SQL Server的标准帐户登录。如果一个Windows的用户名叫lgdssq,同时也是lgdjsjx的成员;如果使用了EXEC sp_revokelogin lgdssq,但lgdjsjx与SQL Server帐户的映射关系依然存在而且可以连接,则lgdssq依然可以连接上SQL Server服务器。第第12章章 数据库安全数据库安全然而,如果使用了EXEC sp_denylo
23、gin lgdssq,虽然lgdjsjx与SQL Server帐户的映射关系依然存在而且可以连接,但是lgdssq用户将无法再连接上SQL Server服务器。使用企业管理器也可以拒绝已授权Windows帐户的访问。由于是简单的可视化操作,具体操作方法在此就不介绍了。 第第12章章 数据库安全数据库安全12.3 服务器角色管理服务器角色管理12.3.1 固定服务器角色1固定服务器角色服务器角色是一些系统定义好操作权限的用户组,其中的成员是登录帐户。服务器角色不能增加或删除,只能对其中的成员进行修改。服务器角色是SQL Server在安装时就创建好的用于分配服务器级管理权限的实体。第第12章章
24、数据库安全数据库安全 常用的固定服务器角色有:sysadmin、serveradmin、securityadmin、dbcreator、diskadmin、processadmin、setupadmin和bulkadmin。2浏览服务器角色有两种方法可以浏览服务器角色:1) 使用系统存储过程sp_helpsrvrole浏览服务器角色(1) 基本语法如下:sp_helpsrvrole srvrolename = role 第第12章章 数据库安全数据库安全(2) 参数解释如下:srvrolename = role 固定服务器角色的名称。例如:EXEC sp_helpsrvrole2) 使用企业管
25、理器浏览服务器角色展开企业管理器“服务器名/安全性/服务器角色”也可以看到所有的服务器角色,以及它们的描述,如图8-14所示。第第12章章 数据库安全数据库安全图8-14 服务器角色列表第第12章章 数据库安全数据库安全12.3.2 管理服务器角色成员一个登录帐户可以不属于任何角色,也可以同时属于多个角色。将一个登录帐户加入一个角色,可以令使用该帐户登录的用户自动地具有角色预定义的权限。Windows系统管理员组(即BUILTINadministrators)自动属于sysadmin角色。更改一个角色的成员可以使用系统存储过程或使用企业管理器。 1使用系统存储过程更改服务器角色成员(1) 将一
26、个帐户加入一个服务器角色,可使用系统存储过程sp_addsrvrolemember。第第12章章 数据库安全数据库安全系统存储过程sp_addsrvrolemember的功能是将某固定服务器角色分配给某指定的登录帐户,这时该用户被授予服务器角色所拥有的权力。 基本语法如下:sp_addsrvrolemember loginame = login rolename = role 参数解释如下:loginame = login 添加到固定服务器角色的登录帐户名称。rolename = role 要将登录帐户添加到的固定服务器角色的名称。 第第12章章 数据库安全数据库安全例如:EXEC sp_ad
27、dsrvrolemember lgdjsjx,sysadmin这个例子将固定服务器角色sysadmin分配给了登录帐户lgdjsjx,从此lgdjsjx就拥有了角色sysadmin所拥有的所有权限。(2) 将某个帐户从服务器角色中删除,可使用系统存储过程sp_dropsrvrolemember。系统存储过程sp_dropsrvrolemember的功能是收回分配给某登录帐户的指定固定服务器角色。 基本语法如下:sp_dropsrvrolemember loginame = login , rolename = role 第第12章章 数据库安全数据库安全 参数解释如下:loginame = l
28、ogin 将要从固定服务器角色删除的登录的名称。rolename = role 服务器角色的名称。例如:EXEC sp_dropsrvrolemember lgdjsjx, sysadmin这个例子回收了分配给登录帐户lgdjsjx的固定服务器角色sysadmin。 第第12章章 数据库安全数据库安全2使用企业管理器更改服务器角色成员(1) 从角色管理的角度更改服务器角色的成员需要以下步骤: 在企业管理器中展开服务器组,再展开服务器: 展开“安全性”节点,选中“服务器角色”目录。右边的窗口中列出了服务器中的所有角色,如图8-14所示。 在列表中双击要修改成员的角色(比如,sysadmin),打
29、开如图8-15所示的角色属性对话框。第第12章章 数据库安全数据库安全图8-15 角色属性对话框 第第12章章 数据库安全数据库安全 角色属性对话框中列出了角色现在包括的成员。sysadmin当前的成员只有“sa”。单击图8-15中的“添加”按钮,可以打开选择成员的对话框,从中选择要增加到角色中的服务器登录帐户。图8-16中选择将“陈一铭”增加到sysadmin角色中。 图8-16 添加成员对话框 第第12章章 数据库安全数据库安全 单击“确定”按钮,确认修改。(2) 从登录帐户的角度改变帐户所属的角色的步骤如下: 在企业管理器中展开服务器组,再展开服务器。 展开“安全性”节点,选中“登录”目
30、录。 在右边窗口的帐户列表中,用鼠标右键单击要改变所属角色的帐户,并在弹出的快捷菜单中选择“属性”命令,打开如图8-17所示的帐户属性对话框。第第12章章 数据库安全数据库安全图8-17 帐户属性对话框第第12章章 数据库安全数据库安全 在图8-17所示的对话框中单击“服务器角色”选项卡,如图8-18所示。 在图8-18的“服务器角色”列表中选中或取消选中即可以将帐户加入服务器角色或从服务器角色中删除。 单击“确定”按钮,确认修改。图8-18 “服务器角色”选项卡第第12章章 数据库安全数据库安全12.3.3 服务器角色的权限1固定服务器角色的权限(1) sysadmin拥有最高的权限,可以执
31、行服务器范围内的一切操作。(2) Securityadmin可以在服务器范围内进行有关权限的一切管理操作。如管理登录帐户,管理数据库对象权限,阅读日志文件等。(3) serveradmin可以设置服务器范围的配置选项,关闭服务器。(4) Dbcreator可以创建、更改和除去数据库。第第12章章 数据库安全数据库安全(5) setupadmin可以管理链接服务器和启动过程。(6) processadmin可以管理在 SQL Server 中运行的进程。(7) diskadmin可以管理磁盘文件。(8) bulkadmin可以执行 BULK INSERT 语句。2使用系统存储过程sp_srvro
32、lepermission浏览固定服务器角色的权限(1) 基本语法如下:sp_srvrolepermission srvrolename = role 第第12章章 数据库安全数据库安全(2) 参数解释如下:srvrolename = role 为其返回权限的固定服务器角色名。如果未指定,则返回所有固定服务器角色的权限。例如: 下例显示与 sysadmin 固定服务器角色关联的权限。EXEC sp_srvrolepermission sysadmin 下例显示所有固定服务器角色的权限。EXEC sp_srvrolepermission第第12章章 数据库安全数据库安全*12.4 数据库角色管理数
33、据库角色管理12.4.1 固定数据库角色固定数据库角色是在每个数据库中都存在的预定义组。管理员可以将一个用户加入一个或多个数据库角色中。固定数据库角色不能被添加、修改或删除。SQL Server在数据库级设置了固定数据库角色来提供最基本的数据库权限的综合管理。第第12章章 数据库安全数据库安全1固定数据库角色1) 使用系统存储过程sp_helpdbfixedrole浏览固定数据库角色(1) 基本语法如下:sp_helpdbfixedrole rolename = role (2) 参数解释如下:rolename = role 固定数据库角色的名称。如果指定了 role,则返回有关该角色的信息;
34、反之,将返回所有固定数据库角色的列表和描述。 第第12章章 数据库安全数据库安全例如:(1) EXEC sp_helpdbfixedrole sysadmin(2) EXEC sp_helpdbfixedrole2) 使用企业管理器浏览固定数据库角色具体操作步骤如下:(1) 展开指定的服务器节点。(2) 展开该服务器节点下面的“数据库”的子节点。(3) 选中“角色”节点,窗口的右边会显示数据库中已存在的角色。在未创建角色之前,数据库中只有固定数据库角色,如图8-19所示。第第12章章 数据库安全数据库安全图8-19 固定数据库角色列表第第12章章 数据库安全数据库安全3) 固定数据库角色的权限
35、public:维持所有的默认权限。db_owner:可以执行所有数据库角色的活动。db_accessadmin:可以加入或删除数据库用户、组和角色。db_ddladmin:可以加入、修改或删除数据库对象。db_securityadmin:管理角色、角色成员,管理对象和语句权限。db_backupoperator:备份数据库。db_datareader:可以从所有表中读数据。第第12章章 数据库安全数据库安全db_datawriter:可以在所有表中增加、修改或删除数据。db_denydatareader:看不到数据库任何数据。db_denydatawriter:不能改变任何表的数据。默认情况下
36、,每个新添加的用户都是public数据库角色的成员。第第12章章 数据库安全数据库安全2管理固定数据库角色成员1) 使用系统存储过程sp_addrolemember将某个登录帐户加入某个固定数据库角色。(1) 基本语法如下:sp_addrolemember rolename = role , membername = security_account(2) 参数解释如下:rolename = role 当前数据库中 SQL Server 角色的名称。membername = security_account 添加到角色的安全帐户。第第12章章 数据库安全数据库安全例如:USE 学生图书借阅管理
37、GOEXEC sp_addrolemember db_owner, chenmiaoGO这个例子使登录帐户也具有了数据库所有者的权限。2) 使用系统存储过程sp_droprolemember从某个固定数据库角色中删除指定的登录帐户。(1) 基本语法如下:sp_droprolemember rolename = role , membername = security_account 第第12章章 数据库安全数据库安全(2) 参数解释如下:rdename=role 某个角色的名称。membername=security_account 正在从角色中删除的安全帐户的名称。例如:USE 学生图书借阅
38、管理GOEXEC sp_droprolemember db_owner, chenmiaoGO注意:由于sp_droprolemember和sp_addrolemember系统存储过程只能对本数据库的用户进行控制。因此在执行上述操作之前,必须保证指定的登录帐户已经映射为该数据库的用户。 第第12章章 数据库安全数据库安全3角色的应用1) public角色在前面提到的数据库角色中,SQL Server还有一个特殊的数据库角色public。所有的数据库用户都属于public角色。public角色的特点是: 替数据库用户捕获所有的数据库默认权限。 不能将public角色分配给任何用户、工作组,因为所
39、有用户都默认为属于该角色。 public角色存在于每一个数据库中,包括系统数据库和用户建立的数据库。 public角色不允许被删除。第第12章章 数据库安全数据库安全2) sysadmin角色与dbo在所有数据库用户中,特殊用户dbo具有最高的管理权限。它被认为是所有数据库对象的所有者,可以访问所有的数据库对象,可以在数据库范围内执行一切操作。在固定数据库级角色和dbo之间有着一种奇特的对应关系。任何被赋予sysadmin固定服务器角色的用户都映射着每个数据库的特殊用户dbo。所有由sysadmin成员创建的数据库对象都自动将所有者设置为dbo。第第12章章 数据库安全数据库安全例如,如果用户
40、chenmiao是一个sysadmin固定服务器角色成员,而且在“学生图书借阅管理”数据库里创建了一个表名叫T1,则表T1属于“学生图书借阅管理”数据库的dbo用户,应该表示为dbo.T1,而不是chenmiao.T1。相反,如果chenmiao不是数据库所有者或者sysadmin固定服务器中的成员,那么由chenmiao创建的表T1属于chenmiao,应该表示为chenmiao.T1。注意:只有由数据库所有者和sysadmin固定服务器成员创建的数据库对象才属于dbo。由任何其他用户(包括db_owner固定数据库角色)创建的对象只属于创建对象的用户,而不属于dbo。第第12章章 数据库安
41、全数据库安全8.4.2 用户定义数据库角色很多时候,固定的数据库角色并不能满足需要。用户的需求并不总是能够映射到一个固定的数据库角色,或者有时数据库管理员要给一些用户设置相同的权限,但他没有管理Windows用户和组的权限,不能将这些用户组织在一个Windows组中。这时可以通过自定义数据库角色统一管理这些用户的权限。1用户定义数据库角色的创建创建用户定义数据库角色的方法有两种:一是使用系统存储过程;二是通过企业管理器。第第12章章 数据库安全数据库安全1) 使用系统存储过程sp_addrole创建数据库角色(1) 基本语法如下:sp_addrole rolename = role , own
42、ername = owner(2) 参数解释如下:rolename= rolename 数据库角色的名字。ownername= ownername 该角色所有者的名字,默认为dbo。owner必须是当前数据库里的用户或角色。例如:下面的例子创建了一个名叫“rjz”的数据库角色。USE 学生图书借阅管理GOEXEC sp_addrole rjzGO第第12章章 数据库安全数据库安全2) 通过企业管理器创建数据库角色使用企业管理器创建数据库角色的步骤如下:(1) 展开指定的“服务器”节点;(2) 展开“数据库”节点;(3) 展开指定的“数据库”子节点;(4) 选中“角色”节点,用鼠标右键单击该节点
43、,从弹出快捷菜单中选择“新建数据库角色”命令,则系统弹出如图8-20所示的对话框。第第12章章 数据库安全数据库安全图8-20 数据库角色属性对话框第第12章章 数据库安全数据库安全(5) 用户可以输入数据库角色名字,也可以单击“添加”按钮添加数据库用户,还可以将用户自己建立的数据库角色添加到列表中。这样,新建的数据库角色就继承了原有数据库角色的所有权限。(6) 用户也可以选择将该角色设置为“应用程序角色”,“应用程序角色”要求用户输入密码。(7) 单击“确定”按钮完成数据库角色的创建。第第12章章 数据库安全数据库安全2用户定义数据库角色的删除1) 使用系统存储过程sp_droprole删除
44、指定的数据库角色(1) 基本语法如下:sp_droprole rolename = role(2) 参数解释如下:rolename = role 将要从当前数据库中删除的角色的名称。例如:USE 学生图书借阅管理GOEXEC sp_droprole rjzGO这个例子删除了刚才建立的数据库角色。第第12章章 数据库安全数据库安全*12.5 数据库帐户管理数据库帐户管理12.5.1 内置用户帐户SQL Server的数据库级别上存在着两个特殊的数据库用户。这两个用户分别是dbo和guest。dbo是数据库的所有者,在安装SQL Server时,被设置到model数据库中,而且不能被删除,dbo在
45、每个数据库中都存在。dbo是数据库的最高权利所有者,可以在数据库范围内执行一切操作。dbo永远无法从数据库中删除,并且它的用户ID(UID)总是为1。dbo用户对应于创建数据库的登录帐户,所有系统数据库dbo都对应于sa帐户。 第第12章章 数据库安全数据库安全guest用户可以使任何已经登录到SQL Server的用户都可以访问数据库。所有的系统数据库除model以外都有guest用户。guest用户的存在意味着所有登录到SQL Server服务器的用户都可以访问数据库,即使他还没有成为本数据库的用户。guest用户可像其他用户一样操作。对guest用户应小心使用,如果使用不当有可能成为安全
46、的隐患。 8.5.2 添加和管理用户帐户1添加数据库用户将登录帐户添加为数据库用户后,使用该登录帐户登录的SQL Server用户就可以实现对数据库的访问了。第第12章章 数据库安全数据库安全添加数据库用户的方法有两种:一是使用系统存储过程;二是通过企业管理器。1) 使用系统存储过程sp_grantdbaccess添加数据库用户(1) 基本语法如下:sp_grantdbaccess loginame = login ,name_in_db = name_in_db (2) 参数解释如下:loginame = login 当前数据库中新安全帐户的登录名称。name_in_db = name_in
47、_db 数据库中帐户的名称。 第第12章章 数据库安全数据库安全(3) 说明:所有有关数据库级权限的设置修改等操作,包括系统存储过程的调用和使用企业管理器进行的操作,都只有被分配了db_accessadmin或db_owner固定服务器角色的用户可以执行。例如: 下面的例子为“学生图书借阅管理”数据库添加了guest用户。USE 学生图书借阅管理EXEC sp_grantdbaccess guestGO第第12章章 数据库安全数据库安全 下面的例子建立了一个SQL Server标准登录帐户,然后将该帐户添加为“学生图书借阅管理”数据库的用户。EXEC sp_addlogin miaomiao,
48、 mm, pubsGOUSE 学生图书借阅管理GOEXEC sp_grantdbaccess miaomiaoGO第第12章章 数据库安全数据库安全2) 使用企业管理器创建数据库用户 使用企业管理器创建数据库用户的步骤如下:(1) 展开要创建用户的数据库所在的服务器节点;(2) 展开该服务器节点下面的“数据库”节点;(3) 展开指定的“数据库”的子节点;(4) 在“用户”节点上右击,从弹出的快捷菜单中选择“新建数据库用户”命令,系统弹出如图8-21所示的对话框;(5) 从“登录名”下拉列表中选择要映射的登录帐户,然后输入对应的数据库用户名,再选择分配给该用户的角色;(6) 单击“确定”按钮完成
49、新用户的添加。 第第12章章 数据库安全数据库安全图8-21 数据库用户属性对话框第第12章章 数据库安全数据库安全2删除数据库用户 1) 使用系统存储过程sp_revokedbaccess删除数据库用户。(1) 基本语法如下:sp_revokedbaccess name_in_db = name(2) 参数解释如下:name_in_db = name 要删除的帐户名。例如:下面的例子是断开帐户miaomiao与“学生图书借阅管理”数据库之间的对应关系。USE 学生图书借阅管理GOEXEC sp_ revokedbaccess miaomiaoGO第第12章章 数据库安全数据库安全2) 使用企
50、业管理器删除数据库用户若要在企业管理器里删除某数据库用户,请选择指定的数据库用户并右击,再从快捷菜单中选择“删除”命令即可。第第12章章 数据库安全数据库安全12.6 权限管理权限管理12.6.1 权限的种类SQL Server 2000 中的权限分为三种:对象权限、语句权限和隐含权限。1对象权限当数据库对象刚刚创建完后,只有所有者可以访问该数据库对象。任何其他用户想访问该对象必须首先获得所有者赋予他们的权限。所有者可以授予权限给指定的数据库用户。这种权限被称为对象权限(Object Permission)。第第12章章 数据库安全数据库安全概括地说,对象权限是指用户对数据库中的表、存储过程、
51、视图等对象的操作权限。例如,是否可以查询数据库表中数据,是否可以执行存储过程等。具体包括: (1) 对表和视图,所有者可以授予其他用户INSERT、UPDATE、DELETE、SELECT和DRI权限。或者使用ALL permissions代替前面五种权限。(2) 对表和视图的列,所有者可以授予SELECT、UPDATE权限。(3) 对存储过程,所有者可以授予EXECUTE权限。第第12章章 数据库安全数据库安全说明: 在数据库用户要对表执行相应的操作之前,必须事先获得相应的操作权限。 DRI权限允许别的表的所有者引用本表的列作为外键约束。 存储过程的所有者可以授予EXECUTE权限给别的数据
52、库用户。 具有sysadmin固定服务器角色的用户,还有数据库对象的所有者,默认拥有对数据库对象进行所有操作的权限。 第第12章章 数据库安全数据库安全2语句权限数据库所有者还可以授予执行某些T-SQL命令的权限,这种权限在SQL Server中被称为语句权限(Statement Permission)。这些命令只有特定的用户dbo可以使用。如果dbo希望别的用户也可以创建表和视图,必须首先授予执行这些命令的权限给那些用户。概括地说,语句权限是指是否可以执行一些数据定义语句。具体包括:CREATE DATABASE:创建一个新数据库及存储该数据库的文件。BACKUP DATABASE:备份整个
53、数据库。第第12章章 数据库安全数据库安全BACKUP LOG:备份事务日志。CREATE DEFAULT:创建称为默认值的对象。CREATE FUNCTION:创建用户定义函数。CREATE PROCEDURE:创建存储过程。CREATE RULE:创建规则。CREATE TABLE:创建表。CREATE VIEW:创建视图。3隐含权限隐含权限是指系统预定义的服务器角色或数据库角色,或数据库所有者和数据库对象所有者所拥有的权限。隐含权限不能明确地赋予和撤销。第第12章章 数据库安全数据库安全12.6.2 权限的管理一个用户或角色的权限可以有以下三种存在形式:授权、拒绝、剥夺。管理权限的方法有
54、两种:一是使用T-SQL语句;二是通过企业管理器。1使用T-SQL语句实现对权限的管理1) 授予权限(1) 授予对象权限。基本语法如下:第第12章章 数据库安全数据库安全GRANTALL PRIVILEGES | permission,.n (column ,.n) ON table | view | ON table | view (column,.n) | ON stored_procedure TO security_account ,.nWITH GRANT OPTION第第12章章 数据库安全数据库安全参数解释如下:ALL 表示授予所有可以应用的权限。在授予对象权限时,固定服务器角色
55、sysadmin、固定数据库角色db_owner成员和数据库对象所有者可以使用ALL关键字。permission 表示在对象上执行某些操作的权限。column 在表或视图上允许用户将权限局限到某些列上,column表示列的名字。WITH GRANT OPTION 定义是否给用户以授予该权限给别的用户的权利。第第12章章 数据库安全数据库安全security_account 定义被授予权限的用户单位。security_account可以是SQL Server的数据库用户,可以是SQL Server的角色,也可以是Windows的用户或工作组。说明:权限只能授予本数据库的用户,或者获准访问本数据库
56、的别的数据库的用户。如果将权限授予了public角色,则所有数据库里的所有用户都默认为获得了该项权限。如果将权限授予了guest角色,则所有可连接上服务器的用户都默认获得了该项权限。 第第12章章 数据库安全数据库安全(2) 授予命令权限。基本语法如下:GRANT ALL statement ,.nTO security_account ,.n参数解释如下:ALL 表示授予所有可以应用的权限。在授予命令权限时,只有固定服务器角色sysadmin成员可以使用ALL关键字。statement 表示可以授予权限的命令。security_account 定义被授予权限的用户单位。security_ac
57、count可以是SQL Server的数据库用户,可以是SQL Server的角色,也可以是Windows的用户或工作组。 第第12章章 数据库安全数据库安全说明:CREATE DATABSE权限一般不授予给用户,它只为服务器管理员保留。权限只能授予本数据库的用户,或者获准访问本数据库的别的数据库的用户。例如:USE 学生图书借阅管理GOGRANT SELECT第第12章章 数据库安全数据库安全ON 图书信息TO publicGOGRANT INSERT ON 图书信息To miaomiao这个例子将“学生图书借阅管理”数据库的“图书信息”表中查询数据的权限授予了public角色;将在“图书信
58、息”表中执行INSERT操作的权限授予了miaomiao。2) 撤销权限(1) 撤销语句权限。 第第12章章 数据库安全数据库安全基本语法如下:REVOKE ALL | statement ,.n FROM security_account ,.n 参数解释如下:ALL 指定将删除所有适用的权限。对于对象权限,sysadmin固定服务器角色成员、db_owner 固定数据库角色成员和数据库对象所有者都可以使用ALL关键字。statement 要删除其权限的授权语句。FROM 指定安全帐户列表security_account 当前数据库内将要被删除权限的安全帐户。第第12章章 数据库安全数据库安
59、全(2) 撤销对象权限。基本语法如下: REVOKEALL|permission,.n | ON table | view (column,.n) | ON stored_procedure TO | FROM security_account ,.n第第12章章 数据库安全数据库安全参数解释如下:ALL 指定将删除所有适用的权限。permission 要废除的对象权限。column 当前数据库内要被删除权限的列名。table 当前数据库内要被删除权限的表名。view 当前数据库内要被删除权限的视图名称。stored_procedure 当前数据库内要被删除权限的存储过程名称。TO 指定安全帐
60、户列表。FROM 指定安全帐户列表。security_account 当前数据库内将要被删除权限的安全帐户。第第12章章 数据库安全数据库安全说明:不能废除系统角色(如 sysadmin)的权限。当从 SQL Server 或 Windows 用户帐户中废除权限时,指定的 security_account 是惟一受权限影响的帐户。如果从 SQL Server 角色或 Windows 组废除权限,这些权限将影响当前数据库中作为组或角色成员的用户,除非用户已被显式赋予或拒绝权限。REVOKE 可用于两种特殊的安全帐户。在public角色上废除的权限适用于数据库内的所有用户;在guest用户上废除的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年特种氯乙烯共聚物项目可行性分析报告
- 小学数学教学中素养导向的实践体会
- 餐饮行业食品安全年终总结范文
- 八年级物理家庭作业设计计划
- 大型活动现场治安保卫实施方案
- 聚酯油毡基布项目绿色建筑方案分析
- 幼儿园小班下学期活动安排范文
- 2025年智能交通系统中的智能交通检测技术研究与应用
- 初中道德与法治七年级上册教学框架
- 金针菇生产项目可行性研究报告
- 修理厂清洁合同协议书
- 数据中心的网络管理实践试题及答案
- 2025年河北省启光二模语文
- 2025-2030沉香木行业市场深度调研及前景趋势与投资研究报告
- 2025年四川省成都市青羊区中考二诊化学试题(原卷版+解析版)
- 【MOOC】软件质量保证-西安交通大学 中国大学慕课MOOC答案
- 2024年湖南省高考生物试卷真题(含答案解析)
- MOOC 物理与艺术-南京航空航天大学 中国大学慕课答案
- 中山市中考英语英语阅读理解(含答案)
- 共青团特色工作项目策划
- 病例汇报ppt课件
评论
0/150
提交评论