数据库技术与应用第6章-数据库保护机制.ppt
《数据库技术与应用第6章-数据库保护机制.ppt》由会员分享,可在线阅读,更多相关《数据库技术与应用第6章-数据库保护机制.ppt(114页珍藏版)》请在三一办公上搜索。
1、1,第6章 数据库保护机制,完整性控制安全性控制并发控制数据库恢复,本章主要内容:,2,第6章 数据库保护机制,数据库中存放着大量的有价值的信息,因此采用怎样行之有效的措施保护数据库是非常重要的。比如,保护数据库数据的正确性、有效性,保护数据库安全性,保护数据库既使是出现各种故障,也能对其进行有效地恢复等等。,3,6.1 数据库的完整性,数据库的完整性指数据的正确性和有效性。数据库的完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓“垃圾进垃圾出”所造成的无效操作和错误结果。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库完整性是非常重要的
2、。,4,6.1 数据库的完整性,数据库的完整性是由DBMS的完整性控制子系统实现的。其主要功能为:1.完整性检查功能。检查用户发出的操作请求是否违背了完整性约束条件;2.应对操作。如果发现用户操作违背了完整性规则,为保证数据的完整性而采取的动作。(如撤销用户操作),5,6.1.1 完整性规则,完整性规则是指附加在数据库数据上的语义约束条件。每一条完整性规则包括3个部分:(1)触发条件:确定什么操作使用规则进行检查;(2)约束条件:确定要检查什么样的错误;(3)应对措施:确定如果查出错误该怎么处理。完整性规则作用的对象可以是关系、元组和列。,6,6.1.2 SQL Server的完整性,本节介绍
3、SQL Server的完整性控制策略。SQL Server数据完整性有四种类型:实体完整性、域完整性、参照完整性、用户定义完整性,7,1.实体完整性构成主键的主属性不能取空值。体现为:UNIQUE唯一性约束(不允许为null)PRIMARY KEY 约束(不允许为null)例:CREATE TABLE 选课(学号 CHAR(6),,PRIMARY KEY(学号,课号),)或 CREATE TABLE 学生(学号 CHAR(6)UNIQUE,),6.1.2 SQL Server的完整性,8,2.域完整性 属性列(字段)满足的约束条件。体现为:(1)对数据类型的约束:包括数据的类型、长度、单位、精
4、度等。(2)对数据格式的约束 例:规定学号的前两位表示入学年份,中间两位表示系的编号,后四位班级和序号,xxxxxxxx。出生日期:YY-MM-DD,6.1.2 SQL Server的完整性,9,(3)对取值范围或取值集合的约束.例如:规定成绩的取值范围为0100 域级check子句(4)对空值的约束:有的列允许取空值,有的列不允许取空值。(5)设置默认值default约束。,6.1.2 SQL Server的完整性,10,3.参照完整性(外键完整性)两个表之间满足的参照(引用)关系的约束。即:外键表中外键的取值参照主键表中主键的值。体现为:CREATE TABLE 选课(.,FOREIGN
5、KEY(学号)REFERENCES 学生(学号)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION,),6.1.2 SQL Server的完整性,说明:CASCADE:级联,NO ACTION:受限(默认),11,4.用户定义完整性用户定义完整性是针对应用业务需要而定义的完整性约束条件。体现为:(1)表定义语句中的CHECK子句(2)触发器(3)规则(下节介绍),6.1.2 SQL Server的完整性,12,6.1.3 使用规则和触发器实现完整性,一般不是很复杂的完整性约束都是在create table语句中定义。更复杂的完整性实现
6、要用触发器和规则。定义表时没有定义的约束,可以在以后通过创建触发器和规则来实现。check约束优先于触发器约束和规则约束执行。,13,*1.使用规则实现完整性 规则是独立于表的单独定义、存储的数据库对象。,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位数字字符。CR
7、EATE RULE sno_rule AS sno LIKE 0-90-90-90-90-90-9,6.1.3 使用规则和触发器实现完整性,15,规则的绑定 创建好规则后,规则只是存储在数据库中的对象并没有发生作用,只有将规则绑定到相应表的属性列,才能实现完整性约束。用存储过程sp_bindrule绑定规则。语法格式:sp_bindrule 规则名,对象名 例2 将规则sno_rule绑定到学生表的学号属性列上。sp_bindrule sno_rule 学生.学号,6.1.3 使用规则和触发器实现完整性,16,规则的松绑 规则绑定后,可以解除,即松绑。用存储过程sp_unbindrule为规则
8、松绑。语法格式:sp_unbindrule 对象名例3 解除规则sno_rule在学生表的学号属性列上的绑定。sp_unbindrule 学生.学号,6.1.3 使用规则和触发器实现完整性,17,删除规则 DROP RULE 规则名1,规则2,注意:在删除规则前,必须先将其从约束对象上解除。,6.1.3 使用规则和触发器实现完整性,18,2.使用触发器实现完整性前面介绍的一些约束机制,属于被动的约束机制。在检查出对数据库的操作违反约束后,只能做些比较简单的动作,比如拒绝操作。如果我们需要产生比规则更为复杂的限制,希望在某个操作后,系统能自动根据条件转去执行各种操作,甚至执行与原操作无关的操作,
9、那么可以用触发器机制来实现。第5章已经介绍过触发器建立和使用。这里我们再 进一步举例说明。,6.1.3 使用规则和触发器实现完整性,19,6.2 安全性控制,6.2.1 安全性概述1.数据库安全性的定义数据库安全性是指保护数据库以防止不合法的使用造成的数据泄露、更改或破坏。所有计算机系统都有安全性问题。由于数据库中存放大量有用信息,从而使安全性问题更为突出。系统安全性保护措施是否有效是数据库系统的主要性能指标之一。,20,图6.1 典型的多用户数据库应用系统环境,数据库系统的安全性依赖于其所在的计算机和网络环境的安全性。见下图。,21,6.2.2 数据库安全性控制的一般方法,1.用户标识与鉴定
10、用户标识与鉴别是DBMS提供的最外层安全性保护措施。用户只有通过鉴定后才被获得系统最外层的权限。用户标识与鉴定的方法很多,常用的有:(1)身份认证:是系统为用户定义的用户名,指用户标识用户ID用户账号。(2)口令:往往与身份认证一起使用。,22,(3)随机运算认证:指非固定口令认证,即用户每次的口令都不一样。鉴别时系统提供一个随机数,用户根据预先约定好的计算过程或函数进行计算,得到口令。2.存取控制用户通过身份鉴别并不意味着他可以任意使用数据库,用户究竟能否使用数据,使用哪些数据,如何使用数据等问题需要进一步由存取控制来确定。,6.2.2 数据库安全性控制的一般方法,23,存取控制又称授权控制
11、,其作用是保证有数据访问资格的用户在授权范围内使用数据,并让未被授权的用户无法接近数据。存取控制机制主要包括两部分:1)定义用户权限,并将用户权限登记到数据字典中。用户权限是指不同用户对于不同数据对象允许执行的操作权限。系统必须提供适当语言定义用户权限,这些定义经过编译后存放在数据字典中,被称为授权规则。,6.2.2 数据库安全性控制的一般方法,24,2)合法权限检查。每个用户发出存取数据库的操作请求后,DBMS查找数据字典,根据授权规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。用户权限定义和合法性检查机制一起组成了DBMS的安全性子系统。,6.2.2 数据库安
12、全性控制的一般方法,25,3.视图机制视图把用户可以使用的数据定义在视图中,这样用户就不能使用视图定义外的其他数据,从而保证了数据库安全性。,6.2.2 数据库安全性控制的一般方法,26,4.审计(Audit)审记功能就是把用户对数据库的所有操作自动记录下来放入审记日志中。DBA可以利用审记跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。审记通常是很费时间和空间的,所有DBMS往往都将其作为可选功能,允许DBA根据应用对安全性的要求,灵活地打开或关闭审记功能。审记功能一般主要用于安全性要求较高的部门。,6.2.2 数据库安全性控制的一般方法,27,5.数据加
13、密对于高度机密数据,例如金融财务数据、军事数据等等,除以上安全措施外,还可以采用数据加密技术。数据加密是防止数据库中数据在存储和传输中泄露的有效手段。加密的基本思想是:根据一定的算法将原始数据(明文)变换为不可直接识别的格式(密文),从而使不知道加密方法的人无法获知数据的内容。,6.2.2 数据库安全性控制的一般方法,28,加密方法分为两类:,6.2.2 数据库安全性控制的一般方法,加密方法涉及要素:加密密钥(好比密码)、解密密钥和算法。加密时,用加密算法根据明文和加密密钥生成密文;解密时,用解密算法对密文和解密密钥进行运算得到明文。,29,6.2.3 SQL Seerver的安全性控制,SQ
14、L Server2000有3个等级的安全验证:,30,6.2.3.1 SQL Server 安全验证,SQL Server安全验证是根据用户登录 SQL Server时提供的登录名和密码验证用户是否可以连接SQL Server。SQL Server安全身份验证机制提供两种模式:Windows验证模式和混合验证模式。,31,1.Windows身份验证模式Windows 验证利用Windows 操作系统本身验证用户合法性的能力,允许用户通过 Windows 用户帐户连接到SQL Server。使用这种模式,用户只能使用Windows验证登录,不能使用SQL Server 验证登录。,6.2.3.1
15、 SQL Server 安全验证,32,2.混合验证模式使用这种验证模式,用户可以使用Windows 验证或者SQL Server验证连接到SQL Server。登录时两者中选择一种。,6.2.3.1 SQL Server 安全验证,33,SQL Server 把设定的用户名身份信息(比如登录名和密码)存在Master数据库的表sysxlogins中。SQL Server有一个特殊的内置登录名:sa(System Administrator,系统管理员),拥有在SQL Server上的一切权限;BUILTIN Administrator是另一个内置登录名,这是SQL Server为Window
16、s NT(基于NT的)系统管理员设置的默认登录名,也拥有SQL Server上一切权限。,6.2.3.1 SQL Server 安全验证,34,在SQL Server上管理用户身份信息主要有两种方法:一是在企业管理器中利用图形界面来管理;另一种是利用SQL Server提供的管理用户身份的存储过程,来管理用户。这些存储过程必须在系统数据库Master中使用(当然要有足够的权限)。,6.2.3.1 SQL Server 安全验证,35,6.2.3.1 SQL Server 安全验证,可视化定义新登录用户,36,(1)sp_addlogin:创建用户身份信息 Exec sp_addlogin s1
17、,111111,教学数据库 创建一条用户身份信息,登录名s1,密码111111,默认数据库教学数据库。(2)sp_droplogin:删除用户身份信息 Exec sp_droplogin s1 删除s1用户身份信息。,6.2.3.1 SQL Server 安全验证,37,(3)sp_grantlogin:将Windows的用户或用户组添加成SQL Server的登录名。Exec sp_grantlogin zhujing-pcu1将Windows用户u1添加成SQL Server的登录名。(zhujing-pc为计算机域名)(4)sp_denylogin:拒绝某Windows用户(或用户组)连
18、接到SQL Server。Exec sp_denylogin u1 拒绝Windows用户u1连接到SQL Server。,6.2.3.1 SQL Server 安全验证,38,(5)sp_revokelogin:删除某Windows用户在SQL Server上的用户身份信息。Exec sp_revokelogin zhujing-pcu1删除Windows用户u1在SQL Server上的身份信息。,6.2.3.1 SQL Server 安全验证,39,6.2.3.2 数据库安全验证,用户成功连接到SQL Server后,如果想访问某个数据库,他们还必须在数据库中有账号,否则对该数据库的访问
19、就会遭到拒绝。,40,6.2.3.2 数据库安全验证,数据库账号与登录名区别:登录名作用范围是整个SQL Server,使用一个登录名可以跟服务器上所有数据库进行交互。数据库账号的作用范围只是一个数据库,它是一个或多个登录名在某个数据库上的映射,数据库账号相关信息存储在各个数据库的sysusers表中。,41,数据库账号与登录名关系:同一个登录名可以映射到不同数据库上的不同数据库账号;但在一个数据库上,一个登录名只能有一个映射,多个登录名可以映射到同一个数据库账号。默认情况下,新创建的每个数据库只有一个账号dbo,系统管理员登录名sa默认映射到每个数据库的dbo账号。,6.2.3.2 数据库安
20、全验证,42,guest账号:一般情况下,数据库账号总跟某个(或某些)登录名之间有映射关系,但是guest账号除外,他不跟特定登录名建立映射关系,那些在数据库中没有对应账号的登录名都映射到guest。master和tempdb数据库中必须存在guest账号,其他数据库中可以任意添加或删除guest账号。,6.2.3.2 数据库安全验证,43,当一个登录名请求访问一个数据库时,SQL Server在该数据库的sysusers表中查找该登录名对应的数据库账号,如果查到,则可以访问该数据库,如果没找到,SQL Server则试图将该登录账号映射成guest数据库账号,如果还失败,那么这个登录名就不能
21、访问该数据库。,6.2.3.2 数据库安全验证,44,管理数据库账号的核心是管理登录名跟数据库账号之间的映射关系。管理数据库账号可用企业管理器的图形界面。也可以通过系统存储过程进行。(1)sp_grantdbaccess 创建数据库账号,并建立登录名到账号的映射。该存储过程只能对当前数据库使用。例:use 教学数据库 Exec sp_grantdbaccess s1,u1,6.2.3.2 数据库安全验证,45,说明:如果数据库账号u1不存在,则创建该账号,在数据库中把登录名s1映射到账号u1。第二个参数(数据库账号)可省略,省略时表示它跟第一个参数(登录名)相同。,6.2.3.2 数据库安全验
22、证,46,(2)sp_revokedbaccess 删除数据库账号,该存储过程只能对当前数据库使用。例:Exec sp_revokedbaccess s1,u1 删除数据库中的账号u1。在删除任何登录名之前,必须先删除各个数据库中该账号映射的账号,以免留下“孤立”账号,没有任何登录名映射到它。每个数据库的dbo账号都不能删除。,6.2.3.2 数据库安全验证,47,6.2.3.2 数据库对象的安全验证,一个用户通过登录名的映射在一个数据库中拥有账号后就可以访问这个数据库了,但是用户在这个数据库上究竟可以做些什么操作,这要由这个数据库上的权限设置来决定。数据库的权限设置在数据库账号之上(只有CR
23、EATE DATABASE语句权限例外,它由sa授权登录名),有效作用范围是单个数据库,权限不能跨越数据库。,48,数据库的权限分为两类:语句权限和对象权限。,1.语句权限 语句权限是指创建数据库和数据库对象以及备份数据库的权限。语句权限针对的是SQL语句的执行,而不是数据库中已经存在的某些对象。表6-1列出了SQL Server中语句权限适用的语句。,6.2.3.2 数据库对象的安全验证,49,表6.1 语句权限适用的语句,6.2.3.2 数据库对象的安全验证,50,2.对象权限是指操作数据和执行存储过程的权限。,表6.2 对象权限适用的对象和操作,51,3.权限管理 权限管理可以通过企业管
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 应用 数据库 保护 机制
链接地址:https://www.31ppt.com/p-5006443.html