第6章数据库保护机制_第1页
第6章数据库保护机制_第2页
第6章数据库保护机制_第3页
第6章数据库保护机制_第4页
第6章数据库保护机制_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数据库技术及应用数据库技术及应用DB1第第6章章 数据库保护机制数据库保护机制 完整性控制完整性控制安全性控制安全性控制并发控制并发控制数据库恢复数据库恢复本章主要内容:本章主要内容:2第第6章章 数据库保护机制数据库保护机制数据库中存放着大量的有价值的信息,因此采用怎数据库中存放着大量的有价值的信息,因此采用怎样行之有效的措施保护数据库是非常重要的。样行之有效的措施保护数据库是非常重要的。比如,保护数据库数据的正确性、有效性,保护数比如,保护数据库数据的正确性、有效性,保护数据库安全性,保护数据库既使是出现各种故障据库安全性,保护数据库既使是出现各种故障 ,也,也能对其进行有效地恢复等等。

2、能对其进行有效地恢复等等。36.1 数据库的完整性数据库的完整性数据库的完整性数据库的完整性指数据的正确性和有效性指数据的正确性和有效性 。 数据库的完整性是为了防止数据库中存在数据库的完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入不符合语义的数据,防止错误信息的输入和输出,和输出,即所谓即所谓“垃圾进垃圾出垃圾进垃圾出”所造成所造成的无效操作和错误结果。的无效操作和错误结果。 数据库是否具备完整性关系到数据库系统数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据能否真实地反映现实世界,因此维护数据库完整性是非常重要的。库完整性是非常重要的。46.1 数

3、据库的完整性数据库的完整性 数据库的完整性是由数据库的完整性是由DBMS的完整性控制子系的完整性控制子系统实现的。统实现的。其主要功能为其主要功能为: :1.完整性检查功能完整性检查功能。检查用户发出的操作请求是。检查用户发出的操作请求是否违背了完整性约束条件否违背了完整性约束条件;2.2.应对操作应对操作。如果发现用户操作违背了完整性规。如果发现用户操作违背了完整性规则,为保证数据的完整性而采取的则,为保证数据的完整性而采取的动作动作。( (如撤如撤销用户操作销用户操作) ) 56.1.1 完整性规则完整性规则 完整性规则完整性规则是指附加在数据库数据上的语义约是指附加在数据库数据上的语义约

4、束条件。束条件。 每一条完整性规则包括每一条完整性规则包括3个部分个部分:(1)触发条件:确定什么操作使用规则进行检查;触发条件:确定什么操作使用规则进行检查;(2)约束条件约束条件: 确定要检查什么样的错误;确定要检查什么样的错误;(3)应对措施:确定如果查出错误该怎么处理。应对措施:确定如果查出错误该怎么处理。完整性规则作用的对象可以是关系、元组和列。完整性规则作用的对象可以是关系、元组和列。66.1.2 SQL Server的完整性的完整性本节介绍本节介绍SQL Server的完整性控制策略。的完整性控制策略。SQL Server数据完整性有四种类型数据完整性有四种类型: 实体完整性、域

5、完整性、实体完整性、域完整性、 参照完整性、用户定义完整性参照完整性、用户定义完整性71. 实体完整性实体完整性构成主键的主属性不能取空值构成主键的主属性不能取空值 。体现为:。体现为: UNIQUE唯一性约束(不允许为唯一性约束(不允许为null) PRIMARY KEY 约束(不允许为约束(不允许为null)例:例: CREATE TABLE 选课选课 (学号学号 CHAR(6) , , PRIMARY KEY(学号学号,课号课号) , )或或 CREATE TABLE 学生学生 (学号学号 CHAR(6) UNIQUE,)6.1.2 SQL Server的完整性的完整性82. 域完整性域

6、完整性 属性列属性列(字段字段)满足的约束条件。体现为:满足的约束条件。体现为:(1)对数据类型的约束对数据类型的约束:包括数据的类型、长包括数据的类型、长度、单位、精度等。度、单位、精度等。(2)对数据格式的约束对数据格式的约束 例例:规定学号的前两位表示入学年份,中:规定学号的前两位表示入学年份,中间两位表示系的编号,后四位班级和序号,间两位表示系的编号,后四位班级和序号,xxxxxxxxxxxxxxxx。 出生日期:出生日期:YY-MM-DD YY-MM-DD 6.1.2 SQL Server的完整性的完整性9(3)对取值范围或取值集合的约束对取值范围或取值集合的约束. 例如例如:规定成

7、绩的取值范围为:规定成绩的取值范围为0100 域级域级check子句子句(4)对空值的约束对空值的约束:有的列允许取空值,有的有的列允许取空值,有的列不允许取空值。列不允许取空值。 (5)设置默认值设置默认值default约束。约束。6.1.2 SQL Server的完整性的完整性103. 参照完整性参照完整性(外键完整性外键完整性) 两个表之间满足的参照两个表之间满足的参照(引用引用)关系的约束。关系的约束。即:外键表中外键的取值参照主键表中主即:外键表中外键的取值参照主键表中主键的值键的值 。 体现为:体现为: CREATE TABLE 选课选课 (. , FOREIGN KEY(学号学号

8、) REFERENCES 学生学生(学号学号) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION, )6.1.2 SQL Server的完整性的完整性说明说明:CASCADE:级联,级联,NO ACTION:受限:受限(默认默认)114. 用户定义完整性用户定义完整性 用户定义完整性是针对应用业务需要而定用户定义完整性是针对应用业务需要而定义的完整性约束条件。义的完整性约束条件。体现为:体现为: (1) 表定义语句中的表定义语句中的CHECK子句子句 (2) 触发器触发器 (3) 规则(下节介绍)规则(下节介绍)6.1.2

9、SQL Server的完整性的完整性126.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性 一般不是很复杂的完整性约束都是在一般不是很复杂的完整性约束都是在create table语句中定义。更复杂的完整性语句中定义。更复杂的完整性实现要用触发器和规则。实现要用触发器和规则。 定义表时没有定义的约束,可以在以后通定义表时没有定义的约束,可以在以后通过创建触发器和规则来实现。过创建触发器和规则来实现。 check约束优先于触发器约束和规则约束执约束优先于触发器约束和规则约束执行。行。13*1. 使用规则实现完整性使用规则实现完整性 规则规则是独立于表的单独定义、存储的数据是独立于表

10、的单独定义、存储的数据库对象。库对象。CREATE RULE 规则名规则名 AS 约束表达式约束表达式规则中规则中可以是能用于可以是能用于WHERE子句中的任何表达式。子句中的任何表达式。如如: 创建规则创建规则6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性14 Birthday=1980-01-01 AND Birthday=GETDATE( ) grade IN(a,A, B,b, C,c, D,d) code LIKE a-z%0-9 例例1 创建创建sno_rule规则,使得学号只能是规则,使得学号只能是6位位数字字符。数字字符。 CREATE RULE sno_ru

11、le AS sno LIKE 0-90-90-90-90-90-9 6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性15 规则的绑定规则的绑定 创建好规则后,规则只是存储在数据库中的对象创建好规则后,规则只是存储在数据库中的对象并没有发生作用,只有将规则绑定到相应表的属并没有发生作用,只有将规则绑定到相应表的属性列,才能实现完整性约束。性列,才能实现完整性约束。 用存储过程用存储过程sp_bindrule绑定规则。绑定规则。语法格式:语法格式:sp_bindrule 规则名规则名, 对象名对象名 例例2 将规则将规则sno_rule绑定到学生表的学号属性绑定到学生表的学号属性列

12、上。列上。 sp_bindrule sno_rule 学生学生.学号学号6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性16 规则的松绑规则的松绑 规则绑定后,可以解除,即松绑。规则绑定后,可以解除,即松绑。 用存储过程用存储过程sp_unbindrule为规则松绑。为规则松绑。 语法格式:语法格式:sp_unbindrule 对象名对象名例例3 解除规则解除规则sno_rule在学生表的学号属性列在学生表的学号属性列上的绑定。上的绑定。 sp_unbindrule 学生学生.学号学号6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性17 删除规则删除规则 DRO

13、P RULE 规则名规则名1,规则规则2, 注意注意:在删除规则前,必须先将其从约束对:在删除规则前,必须先将其从约束对象上解除。象上解除。6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性182. 使用触发器实现完整性使用触发器实现完整性 前面介绍的一些约束机制,属于被动的约束机制。在检查出对数据库的操作违反约束后,只能做些比较简单的动作,比如拒绝操作。 如果我们需要产生比规则更为复杂的限制,希望在某个操作后,系统能自动根据条件转去执行各种操作,甚至执行与原操作无关的操作,那么可以用触发器机制来实现。 第第5章已经介绍过触发器建立和使用。这里我们再章已经介绍过触发器建立和使用。

14、这里我们再 进一步举例说明。进一步举例说明。6.1.3 使用规则和触发器实现完整性使用规则和触发器实现完整性196.2 安全性控制安全性控制6.2.1 安全性概述安全性概述1. 数据库安全性的定义数据库安全性的定义数据库安全性数据库安全性是指保护数据库以防止不合法是指保护数据库以防止不合法的使用造成的数据泄露、更改或破坏的使用造成的数据泄露、更改或破坏。 所有计算机系统都有安全性问题。由于数所有计算机系统都有安全性问题。由于数据库中存放大量有用信息,从而使安全性据库中存放大量有用信息,从而使安全性问题更为突出。系统安全性保护措施是否问题更为突出。系统安全性保护措施是否有效是数据库系统的主要性能

15、指标之一。有效是数据库系统的主要性能指标之一。20远程客户远程客户加密加密加密加密防火墙防火墙不安全的外网不安全的外网( 如如internet )DBMS授权控制授权控制安全的内网安全的内网(intranet)本地客户本地客户DBOS访问控制访问控制图图6.1 典型的多用户数据库应用系统环境典型的多用户数据库应用系统环境 数据库系统的安全性依赖于其所在的计算机和网数据库系统的安全性依赖于其所在的计算机和网络环境的安全性络环境的安全性。见下图。见下图。216.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法1. 用户标识与鉴定用户标识与鉴定 用户标识与鉴别是用户标识与鉴别是DBMS提

16、供的最外层安提供的最外层安全性保护措施。用户只有通过鉴定后才被全性保护措施。用户只有通过鉴定后才被获得系统最外层的权限。获得系统最外层的权限。 用户标识与鉴定的方法很多用户标识与鉴定的方法很多, 常用的有:常用的有:(1)身份认证身份认证: 是系统为用户定义的用户名是系统为用户定义的用户名, 指指用户标识用户标识用户用户ID用户账号。用户账号。(2) 口令口令:往往与身份认证一起使用。:往往与身份认证一起使用。22(3)随机运算认证随机运算认证:指非固定口令认证,即用:指非固定口令认证,即用户每次的口令都不一样。鉴别时系统提供户每次的口令都不一样。鉴别时系统提供一个随机数,用户根据预先约定好的

17、计算一个随机数,用户根据预先约定好的计算过程或函数进行计算,得到口令。过程或函数进行计算,得到口令。2. 存取控制存取控制 用户通过身份鉴别并不意味着他可以任意用户通过身份鉴别并不意味着他可以任意使用数据库,用户究竟能否使用数据,使使用数据库,用户究竟能否使用数据,使用哪些数据,如何使用数据等问题需要进用哪些数据,如何使用数据等问题需要进一步由存取控制来确定。一步由存取控制来确定。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法23 存取控制又称授权控制,其作用是保证有数据访存取控制又称授权控制,其作用是保证有数据访问资格的用户在授权范围内使用数据,并让未被问资格的用户在授权范

18、围内使用数据,并让未被授权的用户无法接近数据。授权的用户无法接近数据。存取控制机制主要包括两部分存取控制机制主要包括两部分:1)定义用户权限,并将用户权限登记到数据字典中定义用户权限,并将用户权限登记到数据字典中。用户权限用户权限是指不同用户对于不同数据对象允许执是指不同用户对于不同数据对象允许执行的操作权限。系统必须提供适当语言定义用户行的操作权限。系统必须提供适当语言定义用户权限,这些定义经过编译后存放在数据字典中,权限,这些定义经过编译后存放在数据字典中,被称为被称为授权规则。授权规则。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法242) 合法权限检查合法权限检查。每

19、个用户发出存取数据每个用户发出存取数据库的操作请求后,库的操作请求后,DBMS查找数据字典,查找数据字典,根据授权规则进行合法权限检查,若用户根据授权规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒的操作请求超出了定义的权限,系统将拒绝执行此操作。绝执行此操作。 用户权限定义和合法性检查机制一起组成用户权限定义和合法性检查机制一起组成了了DBMS的安全性子系统。的安全性子系统。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法253. 视图机制视图机制 视图把用户可以使用的数据定义在视图视图把用户可以使用的数据定义在视图中,这样用户就不能使用视图定义外的中,这样用

20、户就不能使用视图定义外的其他数据,从而保证了数据库安全性。其他数据,从而保证了数据库安全性。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法264. 审计审计(Audit) 审记功能审记功能就是把用户对数据库的所有操作自动就是把用户对数据库的所有操作自动记录下来放入审记日志中记录下来放入审记日志中。DBA可以利用审记可以利用审记跟踪的信息,重现导致数据库现有状况的一系跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容列事件,找出非法存取数据的人、时间和内容等。等。 审记通常是很费时间和空间的,所有审记通常是很费时间和空间的,所有DBMS往往往往都将

21、其作为可选功能,允许都将其作为可选功能,允许DBA根据应用对安根据应用对安全性的要求,灵活地打开或关闭审记功能。审全性的要求,灵活地打开或关闭审记功能。审记功能一般主要用于安全性要求较高的部门。记功能一般主要用于安全性要求较高的部门。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法275. 数据加密数据加密 对于高度机密数据,例如金融财务数据、军事数对于高度机密数据,例如金融财务数据、军事数据等等,除以上安全措施外,还可以采用数据加据等等,除以上安全措施外,还可以采用数据加密技术。密技术。 数据加密数据加密是防止数据库中数据在存储和传输中泄是防止数据库中数据在存储和传输中泄露的

22、有效手段。露的有效手段。 加密的基本思想是加密的基本思想是:根据一定的算法将原始数据:根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文),(明文)变换为不可直接识别的格式(密文),从而使不知道加密方法的人无法获知数据的内容。从而使不知道加密方法的人无法获知数据的内容。6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法28 加密方法分为两类:加密方法分为两类:6.2.2 数据库安全性控制的一般方法数据库安全性控制的一般方法加密方法加密方法对称密钥加密法对称密钥加密法非对称(公开)密钥加密法非对称(公开)密钥加密法 加密方法涉及要素加密方法涉及要素:加密密钥:加密密钥(

23、 (好比密码好比密码) )、解密密钥和算法。解密密钥和算法。 加密时加密时,用加密算法根据明文和加密密钥,用加密算法根据明文和加密密钥生成密文;生成密文;解密时解密时,用解密算法对密文和解,用解密算法对密文和解密密钥进行运算得到明文。密密钥进行运算得到明文。296.2.3 SQL Seerver的安全性控制的安全性控制SQL Server2000有有3个等级的安全验证:个等级的安全验证: SQL Server安全验证安全验证数据库安全验证数据库安全验证数据库对象的安全验证数据库对象的安全验证SQL Server安全验证安全验证数据库安全验证数据库安全验证数据库对象的安全验证数据库对象的安全验证

24、306.2.3.1 SQL Server 安全验证安全验证 SQL Server安全验证安全验证是根据用户登录是根据用户登录 SQL Server时提供的登录名和密码验证用户是否时提供的登录名和密码验证用户是否可以连接可以连接SQL Server。 SQL Server安全身份验证机制提供两种模安全身份验证机制提供两种模式:式:Windows验证模式验证模式和和混合验证模式混合验证模式。Windows验证模式验证模式混合验证模式混合验证模式SQL Server安全验证安全验证311. Windows身份身份验证模式验证模式 Windows 验证利用验证利用Windows 操作系统本身操作系统本

25、身验证用户合法性的能力,验证用户合法性的能力,允许用户通过允许用户通过 Windows 用户帐户连接到用户帐户连接到SQL Server。 使用这种模式,用户只能使用使用这种模式,用户只能使用Windows验验证登录证登录, 不能使用不能使用SQL Server 验证登录。验证登录。6.2.3.1 SQL Server 安全验证安全验证322.混合验证模式混合验证模式 使用这种验证模式,用户可以使用使用这种验证模式,用户可以使用Windows 验证或者验证或者SQL Server验证连接到验证连接到SQL Server 。登录时两者中选择一种。登录时两者中选择一种。6.2.3.1 SQL Se

26、rver 安全验证安全验证33 SQL Server 把设定的用户名身份信息把设定的用户名身份信息(比如登录名比如登录名和密码和密码)存在存在Master数据库的表数据库的表sysxlogins中。中。 SQL Server有一个特殊的有一个特殊的内置登录名内置登录名: sa(System Administrator,系统管理员,系统管理员),拥有在,拥有在SQL Server上的一切权限;上的一切权限; BUILTIN Administrator是另一个内置登录名,是另一个内置登录名,这是这是SQL Server为为Windows NT(基于基于NT的的)系统管系统管理员设置的默认登录名,也

27、拥有理员设置的默认登录名,也拥有SQL Server上一上一切权限。切权限。6.2.3.1 SQL Server 安全验证安全验证34 在在SQL Server上管理用户身份信息主要有上管理用户身份信息主要有两种方法两种方法: 一是在企业管理器中利用图形界面来管理;一是在企业管理器中利用图形界面来管理; 另一种是利用另一种是利用SQL Server提供的提供的管理用户管理用户身份的存储过程,来管理用户身份的存储过程,来管理用户。这些存储。这些存储过程必须在系统数据库过程必须在系统数据库Master中使用(当中使用(当然要有足够的权限)。然要有足够的权限)。6.2.3.1 SQL Server

28、安全验证安全验证356.2.3.1 SQL Server 安全验证安全验证可视化定义可视化定义新登录用户新登录用户36(1) sp_addlogin:创建用户身份信息创建用户身份信息 Exec sp_addlogin s1, 111111, 教学数据教学数据库库 创建一条用户身份信息,登录名创建一条用户身份信息,登录名s1,密码密码111111,默认数据库默认数据库教学数据库教学数据库。(2) sp_droplogin:删除用户身份信息删除用户身份信息 Exec sp_droplogin s1 删除删除s1用户身份信息。用户身份信息。6.2.3.1 SQL Server 安全验证安全验证37(

29、3) sp_grantlogin:将:将Windows的用户或用户组添加的用户或用户组添加成成SQL Server的登录名。的登录名。 Exec sp_grantlogin zhujing-pcu1将将Windows用户用户u1添加成添加成SQL Server的登录名。的登录名。 (zhujing-pc为计算机域名为计算机域名)(4) sp_denylogin:拒绝某拒绝某Windows用户用户(或用户组或用户组)连接到连接到SQL Server。 Exec sp_denylogin u1 拒绝拒绝Windows用户用户u1连接到连接到SQL Server 。6.2.3.1 SQL Serve

30、r 安全验证安全验证38(5) sp_revokelogin:删除某:删除某Windows用户在用户在SQL Server上的用户身份信息。上的用户身份信息。 Exec sp_revokelogin zhujing-pcu1删除删除Windows用户用户u1在在SQL Server上的身份信息。上的身份信息。6.2.3.1 SQL Server 安全验证安全验证396.2.3.2 数据库安全验证数据库安全验证 用户成功连接到用户成功连接到SQL Server后,如果想后,如果想访问某个数据库,他们还必须在数据库访问某个数据库,他们还必须在数据库中有账号,否则对该数据库的访问就会中有账号,否则对

31、该数据库的访问就会遭到拒绝。遭到拒绝。406.2.3.2 数据库安全验证数据库安全验证 数据库账号与登录名区别:数据库账号与登录名区别: 登录名登录名作用范围是整个作用范围是整个SQL Server,使用,使用一个登录名可以跟服务器上所有数据库进一个登录名可以跟服务器上所有数据库进行交互。行交互。 数据库账号数据库账号的作用范围只是一个数据库,的作用范围只是一个数据库,它是一个或多个登录名在某个数据库上的它是一个或多个登录名在某个数据库上的映射,数据库账号相关信息存储在各个数映射,数据库账号相关信息存储在各个数据库的据库的sysusers表中。表中。41 数据库账号与登录名关系:数据库账号与登

32、录名关系: 同一个登录名可以映射到不同数据库上的同一个登录名可以映射到不同数据库上的不同数据库账号;但在一个数据库上,一个不同数据库账号;但在一个数据库上,一个登录名只能有一个映射,多个登录名可以映登录名只能有一个映射,多个登录名可以映射到同一个数据库账号。射到同一个数据库账号。 默认情况下,新创建的每个数据库只有一个默认情况下,新创建的每个数据库只有一个账号账号dbo,系统管理员登录名,系统管理员登录名sa默认映射到默认映射到每个数据库的每个数据库的dbo账号。账号。6.2.3.2 数据库安全验证数据库安全验证42 guest账号账号:一般情况下,数据库账号总:一般情况下,数据库账号总跟某个

33、(或某些)登录名之间有映射关系,跟某个(或某些)登录名之间有映射关系,但是但是guest账号除外,他不跟特定登录名账号除外,他不跟特定登录名建立映射关系,那些在数据库中没有对应建立映射关系,那些在数据库中没有对应账号的登录名都映射到账号的登录名都映射到guest。 master和和tempdb数据库中必须存在数据库中必须存在guest账号,其他数据库中可以任意添加账号,其他数据库中可以任意添加或删除或删除guest账号。账号。6.2.3.2 数据库安全验证数据库安全验证43 当一个登录名请求访问一个数据库时,当一个登录名请求访问一个数据库时,SQL Server在该数据库的在该数据库的sysu

34、sers表中表中查找该登录名对应的数据库账号,如果查查找该登录名对应的数据库账号,如果查到,则可以访问该数据库,如果没找到,到,则可以访问该数据库,如果没找到, SQL Server则试图将该登录账号映射成则试图将该登录账号映射成guest数据库账号,如果还失败,那么这数据库账号,如果还失败,那么这个登录名就不能访问该数据库。个登录名就不能访问该数据库。6.2.3.2 数据库安全验证数据库安全验证44 管理数据库账号的核心是管理登录名跟数管理数据库账号的核心是管理登录名跟数据库账号之间的映射关系。管理数据库账据库账号之间的映射关系。管理数据库账号可用企业管理器的图形界面。也可以通号可用企业管理

35、器的图形界面。也可以通过系统存储过程进行。过系统存储过程进行。(1)(1)sp_grantdbaccess 创建数据库账号,创建数据库账号,并建立登录名到账号的映射。该存储过程并建立登录名到账号的映射。该存储过程只能对当前数据库使用。只能对当前数据库使用。例:例:use use 教学数据库教学数据库 Exec Exec sp_grantdbaccesssp_grantdbaccess s1 s1 ,u1,u16.2.3.2 数据库安全验证数据库安全验证45说明:说明: 如果数据库账号如果数据库账号u1不存在,则创建该账号,不存在,则创建该账号,在数据库中把登录名在数据库中把登录名s1映射到账号

36、映射到账号u1。第。第二个参数二个参数(数据库账号数据库账号)可省略,省略时表可省略,省略时表示它跟第一个参数示它跟第一个参数(登录名登录名)相同。相同。6.2.3.2 数据库安全验证数据库安全验证46(2) (2) sp_revokedbaccess 删除数据库账号,删除数据库账号,该存储过程只能对当前数据库使用。该存储过程只能对当前数据库使用。例:例:Exec sp_revokedbaccess s1,u1 删除数据库中的账号删除数据库中的账号u1。在删除任何登录。在删除任何登录名之前,必须先删除各个数据库中该账号名之前,必须先删除各个数据库中该账号映射的账号,以免留下映射的账号,以免留下

37、“孤立孤立”账号,没账号,没有任何登录名映射到它。每个数据库的有任何登录名映射到它。每个数据库的dbo账号都不能删除。账号都不能删除。6.2.3.2 数据库安全验证数据库安全验证476.2.3.2 数据库对象的安全验证数据库对象的安全验证一个用户通过登录名的映射在一个数据库中一个用户通过登录名的映射在一个数据库中拥有账号后就可以访问这个数据库了,但是拥有账号后就可以访问这个数据库了,但是用户在这个数据库上究竟可以做些什么操作,用户在这个数据库上究竟可以做些什么操作,这要由这个数据库上的权限设置来决定。数这要由这个数据库上的权限设置来决定。数据库的权限设置在数据库账号之上(只有据库的权限设置在数

38、据库账号之上(只有CREATE DATABASE语句权限例外,它由语句权限例外,它由sa授权登录名),有效作用范围是单个数据授权登录名),有效作用范围是单个数据库,权限不能跨越数据库。库,权限不能跨越数据库。48数据库的权限分为两类数据库的权限分为两类:语句权限和对象权限。语句权限和对象权限。1. 语句权限语句权限 语句权限语句权限是指创建数据库和数据库对象以是指创建数据库和数据库对象以及备份数据库的权限。及备份数据库的权限。 语句权限针对的是语句权限针对的是SQL语句的执行,而不语句的执行,而不是数据库中已经存在的某些对象。表是数据库中已经存在的某些对象。表6-1列出列出了了SQL Serv

39、er中语句权限适用的语句。中语句权限适用的语句。6.2.3.2 数据库对象的安全验证数据库对象的安全验证49语句语句权限说明权限说明(只能由只能由sa授予登录名授予登录名)CREATE DATABASE允许创建数据库允许创建数据库CREATE DEFAULT允许创建默认值允许创建默认值CREATE PROCEDURE允许创建存储过程允许创建存储过程CREATE RULE允许创建规则允许创建规则CREATE TABLE允许创建表允许创建表CREATE VIEW允许创建视图允许创建视图BACKUP DATABASE允许备份数据库允许备份数据库BACKUP LOG允许备份日志允许备份日志表表6.1

40、语句权限适用的语句语句权限适用的语句6.2.3.2 数据库对象的安全验证数据库对象的安全验证502. 对象权限对象权限是指操作数据和执行存储过程的权限。是指操作数据和执行存储过程的权限。表表6.2 对象权限适用的对象和操作对象权限适用的对象和操作操作操作权限说明权限说明适用范围适用范围SELECT允许查询允许查询表、视图、表的列表、视图、表的列UPDATE允许修改允许修改表、视图、表的列表、视图、表的列INSERT允许插入允许插入表、视图表、视图DELETE允许删除允许删除表、视图表、视图EXECUTE允许调用过程允许调用过程 存储过程存储过程REFERENCE 允许引用允许引用(参参照完整性

41、照完整性)表、表的列表、表的列513. 权限管理权限管理 权限管理可以通过企业管理器进行,也可权限管理可以通过企业管理器进行,也可以用以用T-SQL完成。下面我们简单介绍一下如完成。下面我们简单介绍一下如何用何用T-SQL管理权限。管理权限。权限管理主要有授权、收回权限和拒绝三类。权限管理主要有授权、收回权限和拒绝三类。授权授权是规定某数据库账号可以执行某个操作,是规定某数据库账号可以执行某个操作,用用GRANT语句进行授权操作。语句进行授权操作。6.2.3.2 数据库对象的安全验证数据库对象的安全验证52授权语句授权语句: GRANT ALL PRIVILEGES |权限权限1,权限权限2

42、, ON 对象名对象名 TO 用户账号用户账号1,账号账号2, 6.2.3.2 数据库对象的安全验证数据库对象的安全验证例例1:授予授予u1账号创建视图的权限。账号创建视图的权限。 GRANT CREATE VIEW TO u153例例2:授予授予u1账号对学生表具有账号对学生表具有insert权限。权限。 GRANT INSERT ON 学生学生 TO u1 例例3:把查学生表和修改学生学号的权限授予用户把查学生表和修改学生学号的权限授予用户u4。 GRANT SELECT, UPDATE(学号学号) ON 学生学生 TO u46.2.3.2 数据库对象的安全验证数据库对象的安全验证54回收

43、权限语句回收权限语句: REVOKE 权限权限1, ON 对象名对象名 FROM 用户名用户名例例4:回收:回收u1账号创建视图的权限。账号创建视图的权限。 REVOKE CREATE VIEW FROM u16.2.3.2 数据库对象的安全验证数据库对象的安全验证回收权限回收权限:是撤销某数据库账户在某数据对:是撤销某数据库账户在某数据对象上的操作权限。象上的操作权限。55拒绝语句拒绝语句:DENY 权限权限1, ON 对象名对象名 TO 用户名用户名例例4:规定:规定u1账号不能创建视图。账号不能创建视图。 DENY CREATE VIEW TO u16.2.3.2 数据库对象的安全验证数

44、据库对象的安全验证拒绝拒绝:是显式地规定某数据库账户不能执行:是显式地规定某数据库账户不能执行某个操作。某个操作。564. 角色角色 用户在用户在SQL Server系统内进行任何操作,系统内进行任何操作,必须要有相应的权限,因此为不同用户分配必须要有相应的权限,因此为不同用户分配合适的权限是数据库管理员例行公事。然后,合适的权限是数据库管理员例行公事。然后,如果一个数据库用户太多,如有如果一个数据库用户太多,如有5000人,要人,要为他们一一分配权限工作量就显得太大。而为他们一一分配权限工作量就显得太大。而现实中许多用户权限是相同的,或者大部分现实中许多用户权限是相同的,或者大部分的权限只是

45、少数几种情形的组合,为此,的权限只是少数几种情形的组合,为此,SQL Server提供了提供了“角色角色”,以方便权限管,以方便权限管理。理。6.2.3.2 数据库对象的安全验证数据库对象的安全验证57实际工作时,权限管理大多通过角色进行,实际工作时,权限管理大多通过角色进行,很少直接对用户(数据库账号)分配权限。很少直接对用户(数据库账号)分配权限。角色有三种类型:角色有三种类型: 用户定义的角色用户定义的角色固定的数据库角色固定的数据库角色(SQL Server系统定义系统定义)固定的服务器角色固定的服务器角色 (SQL Server系统定义系统定义)6.2.3.2 数据库对象的安全验证数

46、据库对象的安全验证58角色角色权限权限Public包含数据库中用户的所有默认权限包含数据库中用户的所有默认权限Db_owner数据所有者数据所有者, 拥有数据库一切权限拥有数据库一切权限Db_accessadmin添加或删除数据库账号、组和角色添加或删除数据库账号、组和角色Db_ddladmin添加、修改或删除数据库中对象添加、修改或删除数据库中对象Db_securityadmin可以管理语句权限和对象权限可以管理语句权限和对象权限Db_backupoperator可以进行数据库备份和恢复可以进行数据库备份和恢复表表6.3 固定的数据库角色固定的数据库角色6.2.3.2 数据库对象的安全验证数

47、据库对象的安全验证59角色角色权限权限Db_datareader可以对任何表查询可以对任何表查询, ,但不能更新但不能更新Db_datawriter可以对任何表进行插入、删除和修可以对任何表进行插入、删除和修改,但不能查询。改,但不能查询。Db_denydatareader不能读取任何表中数据不能读取任何表中数据Db_denydatawriter不能写不能写(插入、修改、删除插入、修改、删除)任何表任何表中数据中数据表表6.3 固定的数据库角色固定的数据库角色(续续)固定的服务器角色,固定的服务器角色,如下表如下表6.4 6.2.3.2 数据库对象的安全验证数据库对象的安全验证60角色角色权限

48、权限Server Administrators配置服务器范围的设定配置服务器范围的设定Security Administrators管理和审核服务器登录管理和审核服务器登录System Administrators可以执行可以执行SQL Server的任何操作的任何操作Process Administrators管理管理SQL Server进程进程Disk Administrators管理磁盘文件管理磁盘文件Setup Administrators管理扩展的存储过程管理扩展的存储过程Bulk Insert Administrators可以执行大量数据的测试可以执行大量数据的测试Database

49、 Creators可以创建数据库可以创建数据库表表6.4 固定的服务器角色固定的服务器角色6.2.3.2 数据库对象的安全验证数据库对象的安全验证61一般情况下用户从多个角色获得的权限是叠一般情况下用户从多个角色获得的权限是叠加的,如果其中一个角色没有被授予某个权加的,如果其中一个角色没有被授予某个权限(或者授予后又回收了),而另一个角色限(或者授予后又回收了),而另一个角色被授予了该权限,则该用户仍然拥有该权限。被授予了该权限,则该用户仍然拥有该权限。实际工作中实际工作中 ,有时也需要排除某角色的某个,有时也需要排除某角色的某个操作权限,凡成为该角色的用户,都不能拥操作权限,凡成为该角色的用

50、户,都不能拥有该权限。对此可以用有该权限。对此可以用“拒绝拒绝”权限管理方权限管理方法。法。“拒绝拒绝”具有最高优先权。具有最高优先权。 用户定义的角色:用户定义的角色:6.2.3.2 数据库对象的安全验证数据库对象的安全验证62如果某个用户同时是几个角色的成员,如果如果某个用户同时是几个角色的成员,如果其中一个角色拒绝了某个权限其中一个角色拒绝了某个权限A,则不管其,则不管其他角色是否授权了他角色是否授权了A,该用户都没有,该用户都没有A权限。权限。 例例:用户:用户u是角色是角色A、B和和C的成员。三个角的成员。三个角色权限如表色权限如表6.5所示。则用户所示。则用户u的权限如表的权限如表

51、6.6 。6.2.3.2 数据库对象的安全验证数据库对象的安全验证63权限权限角色角色A角色角色B角色角色CSelect on table1 Select on view1 Update on tables2Delete on table3 表表6.5 角色角色A、B和和C的权限的权限6.2.3.2 数据库对象的安全验证数据库对象的安全验证64权限权限角色角色ASelect on table1 Select on view1 Update on tables2Delete on table3 表表6.6 用户用户u 的权限的权限6.2.3.2 数据库对象的安全验证数据库对象的安全验证65过了一

52、段时间后,需要对权限调整,调整后过了一段时间后,需要对权限调整,调整后三个角色的权限如表三个角色的权限如表6.7所示。则调整后用所示。则调整后用户户U的权限如表的权限如表6.8 。权限权限角色角色A角色角色B角色角色CSelect on table1 0Select on view10Update on tables2Delete on table3 X表表6.7 角色角色A、B和和C的权限的权限6.2.3.2 数据库对象的安全验证数据库对象的安全验证66权限权限角色角色ASelect on table1 Select on view1Update on tables2Delete on ta

53、ble3X表表6.8 调整后用户调整后用户u 的权限的权限O表示权限被撤销,表示权限被撤销,X表示权限被拒绝。表示权限被拒绝。6.2.3.2 数据库对象的安全验证数据库对象的安全验证 数据库技术及应用数据库技术及应用DB676.3 并发控制并发控制数据库是一个共享资源,从理论上讲,对数数据库是一个共享资源,从理论上讲,对数据库中数据进行存取的用户数目可以是任意据库中数据进行存取的用户数目可以是任意多。让多个用户程序并行地存取数据库,可多。让多个用户程序并行地存取数据库,可以提高数据库系统的利用率。但这样可能出以提高数据库系统的利用率。但这样可能出现多个用户程序并发地访问同一数据资源的现多个用户

54、程序并发地访问同一数据资源的情况,对此并发不加控制,就会破坏数据的情况,对此并发不加控制,就会破坏数据的一致性。所以,必须对并发操作加以控制,一致性。所以,必须对并发操作加以控制,以正确顺序方式调度并发操作。以正确顺序方式调度并发操作。686.3.1 事务事务1事务(事务(Transaction)事务事务是是用户定义的一个数据库操作序列,用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不这些操作要么全做要么全不做,是一个不可分割的整体可分割的整体。 在在RDB中,一个事务可以是一个中,一个事务可以是一个SQL语句,语句,或一组或一组SQL语句或整个程序。语句或整个程序。 但事务

55、与程序是不同的概念,一个程序中但事务与程序是不同的概念,一个程序中可以包含多个事务。可以包含多个事务。 为什么要引入事务的概念呢?让我们来看为什么要引入事务的概念呢?让我们来看个例子。个例子。69例如例如:假设你来到假设你来到ATM机前进行转帐工作,让机器机前进行转帐工作,让机器“把把100元从你的活期存款帐户转到定期帐户元从你的活期存款帐户转到定期帐户”。你插入信用卡,进行了必要的操作,机器将对银你插入信用卡,进行了必要的操作,机器将对银行数据库做两次更新:行数据库做两次更新:(1)首先从你的活期存款余额取出首先从你的活期存款余额取出100元元;(2) 接着将接着将100元转到你的定期存款帐

56、户中。你确元转到你的定期存款帐户中。你确信你转帐的钱已经在你的定期存款帐户。信你转帐的钱已经在你的定期存款帐户。 若若100元从你的活期存款帐户刚刚转出后,突然元从你的活期存款帐户刚刚转出后,突然停电,你的定期帐户中又没得到这笔钱,怎么办,停电,你的定期帐户中又没得到这笔钱,怎么办,你的钱丢失了?你的钱丢失了?6.3.1 事务事务70事务定义事务定义: 事务可由用户使用事务开始和结束语句显事务可由用户使用事务开始和结束语句显式定义。式定义。BEGIN TRANSACTION (事务开始)(事务开始) COMMIT(ROLLBACK)(事务结束)(事务结束)End TRANSACTION 事务结

57、束事务结束n如果用户没有显式定义事务,则由如果用户没有显式定义事务,则由DBMS按缺省规定自动划分事务。按缺省规定自动划分事务。6.3.1 事务事务71v解释解释:COMMIT:提交,提交事务的所有操作。提交,提交事务的所有操作。即,将事务对数据库所做的所有更新写回即,将事务对数据库所做的所有更新写回到物理数据库中去,事务正常结束。到物理数据库中去,事务正常结束。ROLLBACK:回滚。在事务运行过程中发回滚。在事务运行过程中发生了某种故障,事务不能继续进行,系统生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作撤将事务中对数据库的所有已完成的操作撤消,使数据库恢复到该事务

58、执行前的状态。消,使数据库恢复到该事务执行前的状态。6.3.1 事务事务722事务的特性事务的特性(1)原子性原子性(Atomicity):一个事务中对数据一个事务中对数据库的所有操作,是一个不可分割的整体,库的所有操作,是一个不可分割的整体,要么都做,要么都不做。要么都做,要么都不做。( (由由DBMSDBMS的事务的事务管理子系统来实现原子性。管理子系统来实现原子性。) )(2)一致性一致性(Consistency):一个事务独立执):一个事务独立执行的结果,将保持数据库的一致性。即事行的结果,将保持数据库的一致性。即事务的执行结果必须是使数据库从一个一致务的执行结果必须是使数据库从一个一

59、致状态变到另一个一致状态。状态变到另一个一致状态。( (完整性控制完整性控制子系统保证子系统保证) )6.3.1 事务事务73(3)隔离性隔离性(Isolation):在多个事务并发执):在多个事务并发执行时,一个事务的执行不受其他事务干扰。行时,一个事务的执行不受其他事务干扰。系统应保证这些事务的并发执行与这些事系统应保证这些事务的并发执行与这些事务先后单独执行时的结果一样。务先后单独执行时的结果一样。 ( (隔离性由隔离性由DBMSDBMS的并发控制子系统保证。的并发控制子系统保证。) )6.3.1 事务事务74(4)持续性持续性(Durability):也称持久性。指):也称持久性。指一

60、个事务一旦提交,它对数据库中数据的一个事务一旦提交,它对数据库中数据的改变就应该是永久的。即使以后发生故障,改变就应该是永久的。即使以后发生故障,也应保留这个事务的执行结果。也应保留这个事务的执行结果。 ( (持续性由持续性由DBMSDBMS的恢复子系统保证。的恢复子系统保证。) ) 上述四个性质简称事务的上述四个性质简称事务的ACID性质。保性质。保证事务的证事务的ACID性质是事务处理的重要任性质是事务处理的重要任务。务。6.3.1 事务事务75 事务的事务的ACID性质可能遭到破坏的因素:性质可能遭到破坏的因素:(1) 多个事务并发运行时,不同事务的操作交多个事务并发运行时,不同事务的操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论