第8章 数据库保护及SQL Server的数据库保护技术.ppt_第1页
第8章 数据库保护及SQL Server的数据库保护技术.ppt_第2页
第8章 数据库保护及SQL Server的数据库保护技术.ppt_第3页
第8章 数据库保护及SQL Server的数据库保护技术.ppt_第4页
第8章 数据库保护及SQL Server的数据库保护技术.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/8/12,数据库系统原理及应用,机械工业出版社,第8章 数据库保护及SQL Server的数据库保护技术,8.1 数据库的安全性及SQL Server的安全管理 8.1.1 数据库安全性控制的一般方法 8.1.2 SQL Server的安全体系结构和安全认证模式 8.1.3 SQL Server的用户和角色管理 8.1.4 SQL Server的权限管理 8.2 数据库完整性及SQL Server的完整性控制 8.2.1 完整性约束条件及完整性控制 8.2.2 SQL Server的数据库完整性及实现方法 8.3 数据库的并发控制及SQL Server的并发控制机制 8.3.1 事务

2、及并发控制的基本概念 8.3.2 封锁及封锁协议 8.3.3 封锁出现的问题及解决方法 8.4 数据库恢复技术与SQL Server的数据恢复机制 8.4.1 故障的种类 8.4.2 数据恢复的实现技术 8.4.3 SQL Server 的数据备份和恢复机制,8.1 数据库的安全性及SQL Server的安全管理,数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。8.1.1 数据库安全性控制的一般方法,用户标识和鉴别 存取控制 操作系统安全保护 密码存储,1. 用户标识与鉴别,(1) 用输入用户名(用户标识号)来标明用户身份。 系统内部记录着所有合法用户的标识。系统对

3、输入的用户名与合法用户名对照,鉴别此用户是否为合法用户。(2) 通过回答口令标识用户身份。 系统常常要求用户输入口令,只有口令正确才能进入系统。为保密起见,口令由用户自己定义并可以随时变更。为防止口令被人窃取,用户在终端上输入口令时,不把口令的内容显示在屏幕上,而用字符“*”替代其内容。(3) 通过回答对随机数的运算结果表明用户身份。 系统提供一个随机数,用户根据预先约定的计算过程或计算函数进行计算,并将计算结果输给到计算机。系统根据用户计算结果判定用户是否合法。,2. 存取控制,(1) 存取机制的构成。1) 定义用户权限,并将用户权限登记到数据字典中。 用户权限是指用户对于数据对象能够执行的

4、操作种类,其语言称为数据控制语言DCL;具有授权资格的用户使用DCL描述授权决定,并把授权决定告知计算机;计算机分析授权决定,并将编译后的授权决定存放在数据字典中。2) 当用户提出操作请求时,系统进行权限检查,拒绝用户的非法操作。 每当用户发出存取数据库的操作请求后,DBMS先要查找数据字典,进行合法权限检查。若通不过,系统将拒绝执行此操作。 (2) 存取机制的类别。1) 自主存取控制(DAC)。用户对于不同的对象有不同的存取权限;不同的用户对同一对象的存取权限也各不相同;用户可将自己拥有的存取权限转授给其他用户。2) 强制存取控制(MAC)。每一个数据对象被标以一定的密级;每一个用户也被授予

5、某一个级别的许可证;对于任意一个对象,只有具有合法许可证的用户才可以存取。,3. 自主存取控制方法,(1) 关系中的用户权限。用户权限主要包括数据对象和操作类型两个要素。定义用户的存取权限称为授权,通过授权规定用户可以对哪些数据进行什么样的操作。 (2) SQL的数据控制功能。SQL的数据控制功能为GRANT语句(授权)和REVOKE语句(收权)。1) 数据对象的创建者自动获得对于该数据对象的所有操作权限。 2) 获得数据操作权的用户可以通过GRANT语句把权限转授给其他用户。 (3) 授权机制的性能。1) 用户权限定义中数据对象范围越小授权系统就越灵活。授权粒度越细,授权子系统就越灵活,但系

6、统定义与检查权限的开销也会相应地增大。2) 用户权限定义中能够谓词的授权系统比较灵活。3) 用户权限定义中能够谓词、且存取谓词中能够引用系统变量的授权系统更加灵活。 (4) 自主存取控制的不足之处。系统对权限的授予状况无法进行有效的控制可能造成数据的无意泄露。,4. 强制存取控制方法,强制存取控制方法(MAC)是系统所采取的强制存取检查手段,它不是用户能直接感知或进行控制的。 (1) 主体、客体及敏感度标记。主体是系统中的活动实体,它包括DBMS所管理的实际用户和代表用户的各进程。客体是系统中的被动实体,包括文件、基表、索引、视图等。对于主体和客体,DBMS为它们每个实例设置了一个敏感度标记。

7、例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。 (2) 主体对客体的存取规则。1) 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。2) 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。 (3) 由DAC和MAC共同构成的安全机制。系统在安全检察时,首先进行自主存取控制检察,然后进行强制存取控制检察,两者都通过后,用户才能执行其数据存取操作。,5. 视图、审计和数据加密机制,为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内,把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

8、 审计功能就是把用户对数据库的所有操作自动记录下来放入审计日志中,一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 加密是根据一定的算法将原始数据(明文,Plain text)变换为不可直接识别的格式(密文,Cipher text),从而使得不知道解密算法的人无法获得数据的内容。加密方法主要有两种:1) 替换方法。使用密钥将明文中的每一个字符转换为密文中的字符。2) 置换方法。仅将明文的字符按不同的顺序重新排列。,8.1.2 SQL Server的安全体系结构和安全认证模式,1. SQL Server的安全体系结构

9、(1) Windows NT操作系统的安全防线:网络管理员负责建立用户组,设置帐号并注册,同时决定不同的用户对不同系统资源的访问级别。 (2) SQL Server的运行安全防线: 通过另一种帐号设置来创建附加安全层。 (3) SQL Server数据库的安全防线: 特定数据库都有自己的用户和角色,该数据库只能由它的用户或角色访问,其他用户无权访问其数据。 (4) SQL Server数据库对象的安全防线: 对权限进行管理,TSQL的DCL功能保证合法用户既使进入了数据库也不能有超越权限的数据存取操作,即合法用户必须在自己的权限范围内进行数据操作。,2. SQL Server的安全认证模式,(

10、1) Windows(S)安全认证模式 SQL服务器通过使用Windows网络用户的安全性来控制用户对SQL服务器的登录访问。它允许一个网络用户登录到一个SQL服务器上时不必再提供一个单独的登录帐号及口令,从而实现SQL服务器与Windows(S)登录的安全集成。 (2) 混合安全认证模式 使用Windows(S)安全认证模式或SQL Server安全认证模式。在混合安全模式下,如果用户网络协议支持可信任连接,则可使用Windows(S)安全模式;如果用户网络协议不支持可信任连接,则在Windows(S)安全认证模式下会登录失败,SQL Server安全认证模式将有效。SQL Server安全

11、认证模式要求用户必须输入有效的SQL Server登录帐号及口令。,3. 设置SQL Server的安全认证模式,1) 在企业管理器中扩展开SQL服务器组,用鼠标右键击需要设置的SQL服务器,在弹出的菜单中选择“属性”项.2) 在弹出的SQL服务器属性对话框中,选择“安全性”选项卡。3) 在安全性选项卡中的安全性栏选择安全认证模式。,8.1.3 SQL Server的用户和角色管理,1. 登录的管理登录(亦称Login用户)通过帐号和口令访问SQL Server的数据库。(1) 查看安全性文件夹的内容进入企业管理器,打开指定的SQL服务器组和SQL服务器,并选择安全性文件夹的系列操作后,就会出

12、现安全性文件夹。,(2) 创建一个登录用户,1) 用右键击登录文件夹,在弹出单中选择“新建登录” ,出现登录属性对话框。 2) 选择常规选项卡,输入用户的一般特征。 3) 选择服务器角色选项卡,确定用户所属服务器角色。 4) 选择数据库访问选项卡,确定用户能访问的数据库和所属的数据库角色。,2. 数据库用户的管理,(1) dbo用户 dbo用户即数据库拥有者或数据库创建者,dbo在其所拥有的数据库中拥有所有的操作权限。dbo的身份可被重新分配给另一个用户,系统管理员Sa可以作为他所管理系统的任何数据库的dbo用户。 (2) guest用户 如果guest用户在数据库存在,则允许任意一个登录用户

13、作为guest用户访问数据库,其中包括那些不是数据库用户的SQL服务器用户。除系统数据库master和临时数据库tempdb的guest用户不能被删除外,其他数据库都可以将自己guest用户删除,以防止非数据库用户的登录用户对数据库进行访问。,(3) 创建新的数据库用户,1) 在企业管理器中用右击用户文件夹,在弹出单中选择“新建数据库用户” 。 2) 在对话框的登录名栏中选择SQL服务器登录用户名,在用户名栏中输入数据库用户名。在数据库角色栏中选择该数据库用户参加的角色。,3. 数据库角色的管理(1) 在数据库角色中增加或移去用户,1) 展开一个SQL服务器、数据库文件夹,选中角色文件夹。 2

14、) 用选中要加入的角色,右击它,在弹出单中选择“属性” 。 3) 单击“添加”按钮后,出现选择该数据库用户的对话框,选择要加入角色的用户,单击“确定” 。 4) 要移走一个用户,在用户栏中选中它,后单击“删除” 。,(2) 创建新的数据库角色,1) 打开SQL服务器组、服务器、数据库文件夹和特定的数据库文件夹。 2) 选中角色子文件夹,右击任意角色,在弹出单中选择“新建数据库角色” 。 3) 输入新角色名;在用户栏增加或移去角色的用户;确定数据库角色的类型。,8.1.4 SQL Server的权限管理1. SQL Server权限种类:对象权限和语句权限,2. 对象权限的管理,1)选中一个数据

15、库对象。击鼠标右键,使之出现弹出菜单。 2) 选择“全部任务”中的“管理权限”项。随后就会出现对象权限对话框。 3) 选择“列出全部用户/用户定义的数据库角色”项,或选择“仅列出对此对象具有权限的用户/用户定义的数据库角色”项。 4) 在权限表中对各用户或角色的各种对象操作权授予或撤消。,3. 语句权限的管理,1) 用鼠标右键击指定的数据库文件夹。出现数据库属性对话框。2)选择“权限”选项卡,单击表中的各复选小方块可分别对各用户或角色授予、撤消和废除数据库的语句操作权限。,8.2.1 完整性约束条件及完整性控制,数据完整性约束可以分为: 表级约束,若干元组间、关系中以及关系之间联系的约束; 元

16、组级约束,元组中的字段组和字段间联系的约束; 属性级约束,针对列的类型、取值范围、精度、排序等而制定的约束条件。 完整性约束分为: 静态约束,数据库每一确定状态时的数据对象所应满足的约束条件; 动态约束,数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件,8.2 数据库完整性及SQL Server的完整性控制,1. 完整性控制机制的功能及执行约束,(1) 完整性控制机制应具有的功能。1) 定义完整性功能,提供定义完整性约束条件的机制。2) 检查完整性功能,检查用户发出的操作请求,看其是否违背了完整性约束条件。3) 控制完整性功能,监视数据操作的整个过程,如果发现有违背了完整性约

17、束条件的情况,则采取一定的动作来保证数据的完整性。 (2) 立即执行约束和延迟执行约束。 有关数据操作语句执行完后立即进行完整性检查为立即执行约束;在整个事务执行结束后再进行完整性检查为延迟执行约束。,2. 实现参照完整性要考虑的几个问题,(1) 外码能够接受空值的问题。 (2) 在被参照关系中删除元组的问题。1) 级联删除(CASCADES)。将参照关系中所有外码值与被参照关系中要删除的元组主码值相同的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去。2) 受限删除(RESTRICTED)。仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码

18、值相同时,系统才执行删除操作,否则拒绝此删除操作。3) 置空值删除(NULLIFIES)。删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。,(3) 在参照关系中插入元组时的问题。 1) 受限插入。仅当被参照关系存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。 2) 递归插入。该策略首先在被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。 (4) 修改关系的主码问题。 1) 不允许修改主码。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。 2) 允许修改主码。允许修改关

19、系主码,但必须保证主码的惟一性和非空,否则拒绝修改。 (5) 修改表是被参照关系的问题。 1) 级联修改。如果要修改被参照关系中的某个元组的主码值,则参照关系中相应的外码值也作相应的修改。 2) 拒绝修改。如果参照关系中,有外码值与被参照关系中要修改的主码值相同的元组,则拒绝修改。 3) 置空值修改。修改被参照关系的元组,并将参照关系中相应元组的外码值置空值。,8.2.2 SQL Server的数据库完整性及实现方法,1. SQL Server的数据完整性的种类 (1) 域完整性。域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。 (2) 实体完整性。实体

20、完整性为表级完整性,它要求表中所有的元组都应该有一个惟一的标识符,这个标识符就是平常所说的主码。 (3) 参照完整性。参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。如果在被参照表中某一元组被外码参照,那么这一行既不能被删除,也不能更改其主码。,2. SQL Server数据完整性的两种方式,(1) 声明数据完整性。 声明数据完整性通过在对象定义中定义、系统本身自动强制来实现。声明数据完整性包括各种约束、缺省和规则。 (2) 过程数据完整性。过程数据完整性通过使用脚本语言 。,8.3 数据库的并发控制及SQL Server的并发控制机制,数据库的并发控制就是控制数据库,

21、防止多用户并发使用数据库时造成数据错误和程序运行错误,保证数据的完整性。 8.3.1 事务及并发控制的基本概念1. 事务的概念 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在SQL语言中,定义事务的语句有三条: BEGIN TRANSACTION; COMMIT; ROLLBACK;,2. 事务并发操作可能产生的数据不一致问题,T1,(a)丢失数据 (b)不可重复读 (c)读“脏”数据,8.3.2 封锁及封锁协议,封锁是使事务对它要操作的数据有一定的控制能力。封锁具有3个环节:一个环节是申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;第二个

22、环节是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;第三个环节是释放锁,即完成操作后事务放弃数据的控制权。,1. 锁的类型,(1) 排它锁(Exclusive Locks,简称X锁)。 排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。 (2) 共享锁(Share Locks,简称S锁)。 共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。,2. 封锁协议,(1) 一

23、级封锁协议。一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。(2) 二级封锁协议。二级封锁协议是:事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。 (3) 三级封锁协议。三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。,(a) 没有丢失修改 (b) 可重复读 (c) 不读“脏”数据,用封锁机制解决三种数据不一致性的例子,8.3.3 封锁出现的问题及解决方法,1. 活锁和死锁(1) 活锁。 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活

24、锁。解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。(2) 死锁。多事务交错等待的僵持局面称为死锁。解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则解除之。 防死锁通常有两种方法:1) 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。2) 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。,2. 并发调度的可串行性和3. 两段锁协议,多个事务并发执行的结果与按串行执行的结果相同,这种调度策略称为可串行化(Serializable)的调

25、度,反之称为不可串行化调度。 两段锁协议1) 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。2) 在释放一个封锁之后,事务不再申请并获得对该数据的封锁。,8.4 数据库恢复技术与SQL Server的数据恢复机制8.4.1 故障的种类,1. 事务内部的故障 事务内部的故障有的是可以通过事务程序本身发现的,但是更多的则是非预期的,它们不能由事务处理程序处理。例如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。2. 系统故障系统故障是指造成系统停止运转的任何事件,从而使得系统必须重新启动。3. 介质故障介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时磁场干扰

26、等。4. 计算机病毒计算机病毒是一种人为的故障或破坏。5. 用户操作错误由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。,8.4.2 数据恢复的实现技术,1. 数据转储 (1) 静态转储和动态转储。 (2) 海量转储和增量转储。 2. 登记日志文件(Logging)(1) 日志文件的格式和内容。日志文件是用来记录对数据库的更新操作的文件。(2) 日志文件的作用。日志文件的主要用于数据库恢复。 当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用日志文件,把已完成的事务进行重做处理。,8.4.3 SQL Server 的数据备份和恢复机制,1. SQL Server的备份形式和操作方式(1) 三种备份形式。1) 完全备份:海量备份,将数据库完全复制到备份文件中。2) 事务日志备份:将备份发生在数据库上的事务。3) 增量备份:备份最近一次完全备份以后数据库发生变化的数据。(2) 数据库进行备份和恢复操作的方式。1) 静态的备份和恢复方式。在进行数据备份或恢复操作时,SQL服务器不接受任何应用程序的访问请求,只执行备份或恢复操作。2) 动态的备份和恢复方式。在进行数据备份或恢复操作时,SQL服务器同时接受应用程序的访问请求。,2. SQL Server的数据备份或恢复策略,(1)

温馨提示

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

评论

0/150

提交评论