




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章数据库安全保护 本章重点 理解数据库安全性控制含义 掌握数据库安全性控制方法 理解数据库的完整性控制 理解事务的概念 掌握数据库并发控制的方法 掌握数据库备份及恢复的原理和技术 3 6 1数据库的安全性控制6 2数据库完整性控制6 3事务和并发控制6 4数据库恢复 4 6 1数据库的安全性 数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一 一般来说 对数据库的破坏主要来自以下4个方面 1 非法用户 2 非法数据 3 多用户的并发访问 4 各种故障 针对以上四种对数据库破坏的可能情况 数据库管理系统 DBMS 已采取相应措施对数据库实施保护 具体如下 1 利用权限机制 2 利用完整性约束 防止非法数据进入数据库 3 提供并发控制 ConcurrentControl 机制 控制多个用户对同一数据的并发操作 以保证多个用户并发访问的顺利进行 4 提供故障恢复 Recovery 能力 以保证各种故障发生后 能将数据库中的数据从错误状态恢复到一致状态 2 数据库的安全标准 目前国际上广泛采用的是美国标准TCSEC TDI 在此标准中将数据库安全划分为4大类 由低到高依次为D C B A 其中C级由低到高分为C1和C2 B级由低到高分为B1 B2和B3 我国的国家标准的基本结构与TCSEC相似 我国标准分为5级 从第1级到第5级依次与TCSEC标准的C级 C1 C2 及B级 B1 B2 B3 一致 7 6 1 2安全性控制的方法 数据库的安全性是指在信息系统的不同层次保护数据库 防止未授权的数据访问 避免数据的泄漏 不合法的修改或对数据的破坏 图6 1计算机系统的安全模型 8 安全性控制的一般方法用户认证存取权限控制视图隔离数据加密审计跟踪 9 1 用户认证用户标识与鉴别 即用户认证 是系统提供的最外层安全保护措施 其方法是由系统提供一定的方式让用户标识自己的名字或身份 每次用户要求进入系统时 由系统进行核对 通过鉴定正确后才提供机器使用权 用户标识和鉴定的方法常用的方法是通过用户名和口令 系统内部会记录着所有合法用户的标识及口令 通过比对来核实是否为合法用户 用户口令的输入不显示在屏幕上 通过用户名和口令来鉴定用户的方法简单易行 但其可靠程度差 近年来 一些更加有效的身份认证技术迅速发展起来 例如使用某种计算机过程和函数 智能卡技术 物理特征 指纹 声音 手图等 等具有高强度的认证技术 10 2 存取权限控制用户存取权限确保只授权给有资格的用户访问数据库的权限 同时令所有未被授权的人员无法查看或操作数据 在存取控制技术中 DBMS所管理的全体实体分为主体和客体两类 数据库存取控制机制包括两个部分 1 定义用户权限 并将用户权限记录到数据字典中2 合法性权限检查存取控制包括自主型存取控制 DAC 和强制型存取控制 MAC 两种类型 3 视图隔离视图是是从一个或几个基表 或视图 导出的表 与基表不同 是一个虚表 数据库中只存放视图的定义 而不存放视图对应的数据 这些数据仍存放在原来的基本表中 在实际应用中 常将视图机制与存取控制机制结合起来使用 首先用视图机制屏蔽一部分保密数据 再在视图上进一步定义存取权限 通过定义不同的视图及有选择地授予视图上的权限 可以将用户 组或角色限制在不同的数据子集内 12 4 数据加密加密的基本思想是根据一定的算法将原始数据 术语为明文 变换为不可直接识别的格式 术语为密文 从而使得不知道解密算法的人无法获知数据的内容 数据解密是加密的逆过程 即将密文数据转变成可见的明文数据 一个密码系统包含明文集合 密文集合 密钥集合和算法 其中密钥和算法构成了密码系统的基本单元 算法是一些公式 法则或程序 它规定明文与密文之间的变换方法 密钥可以看作算法中的参数 加密方法可分为对称加密与非对称加密两种 13 5 审计跟踪审计功能是一种监视措施 它跟踪记录有关数据的访问活动 审计功能把用户对数据库的所有操作自动记录下来 存放在审计日志文件中 常用两种审计方式包括用户审计和系统审计 14 6 1 3SQLServer2012的安全性策略 SQLServer2012的安全模型分为三层结构 分别为服务器安全管理 数据库安全管理和数据库对象的访问权限管理 第一层安全性是SQLServer服务器级别的安全性 建立在控制服务器登陆账号和密码的基础上 第二层安全性是数据库级别的安全性 即是否具有访问某个数据库的权利 第二层安全性是数据库对象级别的安全性 15 SQLServer2012的身份验证模式 Windows身份验证模式Windows身份验证模式使用由Windows授权的用户 并允许通过身份验证的用户登陆SQLServer2012 用户登录到SQLServer2012时 只需选择Windows身份验证模式 无需再提供登录帐户和密码 系统会从用户登录到Windows时提供的用户名和密码中查找用户的登录信息 以判断其是否为SQLServer2012的合法用户 该模式是SQLServer2012的默认登陆模式 支持Windows的密码策略和锁写策略 16 TCP IPSockets 命名管道 SQLServer身份验证模式 Windows身份验证模式 混合验证模式混合身份验证模式允许以SQLServer身份验证模式或者Windows身份验证模式来进行验证 如果在混合模式下选择使用SQLServer授权用户登录SQLServer2012 则用户必须提供登录名和密码 SQLServer使用这两部分内容来验证用户 SQLServer2012通过检查是否已设置SQLServer登录帐户 以及指定的密码是否与记录的密码匹配 进行身份验证 17 SQLServer在安装时 会自动创建一个DB服务器的登录用户sa 即系统管理员 用以创建其他登录用户和授权 SQLServer2012保障服务器作用域安全可以通过管理登陆名来实现 创建服务器的登录账号利用EnterpriseManage利用存储过程EXECsp addlogin 登录账号名称 密码 默认数据库名 使用的语言 例 建立了一个名称为Jake的登录账号 EXECsp addlogin Jake p2015 Teach NULL 18 SQLServer的服务器角色角色 Role 是对权限集中管理的一种机制 将不同的权限组合在一起就形成了一种角色 服务器角色是执行服务器级管理操作的用户权限的集合 19 2 SQLServer的数据库用户 数据库的用户账号用户账号要在特定的数据库内创建 并关联一个登录账号 当一个数据库的用户创建时 必须关联一个登录账号 每个登录账号在一个数据库中只能有一个用户账号 但每个登录账号可以在不同的数据库中各有一个用户账号 注意 登录账号具有对某个数据库的访问权限 并不表示该登录账号对该数据库具有存取的权限 20 查看数据库的用户账号利用存储过程EXECsp helpuser创建数据库的用户账号使用存储过程sp adduser 登录账号 用户账号 所属的数据库角色 设置数据库用户账号的权限对数据库对象的操作 具体含义如下SELECT 对表或者视图进行查询 INSERT 在表或者视图中插入记录 UPDATE 对表或者视图中的数据进行修改 DELETE 删除表或者视图中的数据 EXEC 执行存储过程 DRI 可对表的外键加以限制 以完成表的参照完整性 3 存取控制SQLServer对权限的管理包含如下三个内容 1 授予权限 允许用户或角色具有某种操作权 2 收回权限 删除以前在当前数据库内的用户上授予或拒绝的权限 3 拒绝权限 拒绝给当前数据库内的安全帐户授予权限并防止安全帐户通过其组或角色成员继承权限 在SQLServer2012中 权限分为对象权限 语句权限和隐含权限三种 1 对象权限对象权限是指用户对数据库中的表 视图等对象的操作权 相当于数据操作语言的语句权限 表 视图的权限包括SELECT INSERT DELETE UPDATE 列的权限包括SELECT和UPDATE 存储过程的权限包括EXECUTE 授权语句 GRANT对象权限名 ON 表名 视图名 存储过程名 TO 数据库用户名 用户角色名 WITHGRANTOPTION 例如GRANTSELECT INSERTONCustomerTOuser1WITHGRANTOPTION 该语句把对Customer表的查询权和插入权授予给用户user1 user1同时获得将这些权限转授给别的用户的权限 收回权限语句 REVOKE对象权限名 ON 表名 视图名 存储过程名 FROM 数据库用户名 用户角色名 RESTRICT CASCADE 例如REVOKEINSERTONStudentFROMuser1CASCADE该语句表示从用户user1处收回对Student表的插入权 若user1已把获得的对Student表的插入权转授给其他用户 则连锁收回 拒绝权限语句 DENY对象权限名 ON 表名 视图名 存储过程名 TO 数据库用户名 用户角色名 例如DENYUPDATEONCustomerTOuser1该语句表示拒绝用户user1对Customer表进行修改 2 语句权限语句权限是指创建数据库或数据库中的项目的权限 相当于数据定义语言的语句权限 语句权限包括CREATEDATABASE CREATETABLE CREATEVIEW CREATEDEFAULT CREATERULE CREATEFUNCTION CREATEPROCEDURE BACKUPDATABASE BACKUPLOG 授予权限语句 GRANT语句权限名 TO 数据库用户名 用户角色名 例6 1 授予用户user1创建数据库表的权限GRANTCREATETABLETOuser1 收回权限语句 REVOKE语句权限名 FROM 数据库用户名 用户角色名 例6 2 收回用户user1创建数据库表的权限REVOKECREATETABLEFROMuser1 拒绝权限语句 DENY语句权限名 TO 数据库用户名 用户角色名 例6 3 拒绝用户user1创建视图的权限DENYCREATEVIEWTOuser1 3 隐含权限隐含权限是指由SQLServer预定义的服务器角色 数据库角色 数据库拥有者和数据库对象拥有者所具有的权限 隐含权限是由系统预先定义好的 相当于内置权限 不需要再明确地授予这些权限 例如 数据库拥有者自动地拥有对数据库进行一切操作的权限 4 视图通过定义不同的视图及有选择地授予视图上的权限 可以将用户 组或角色限制在不同的数据子集内 例6 4 用户user1只能检索Customer表中性别为女的客户信息 可以先建立视图CS Customer 再给user1授予对CS Customer的查询权 CREATEVIEWCS CustomerASSELECT FROMCustomerWHEREcsex 女 GRANTSELECTONCS CustomerTOuser1 5 数据加密MicrosoftSQLServer的加密机制可以对SQLSercer中存储的登录和应用程序角色密码 作为网络数据包而在客户端和服务器端之间发送的数据 存储过程定义 函数定义 视图定义 触发器定义 默认值定义 规则定义等数据库对象进行加密 6 审计MicrosoftSQLServer2012提供审计功能 用以跟踪和记录每个SQLServer实例上已发生的活动 如成功和失败的记录 SQLServer2012还提供管理审计记录的接口 即SQL事件探查器 31 6 2数据库完整性控制 6 2 1数据库完整性的概述数据库的完整性是指数据库中数据的正确性 有效性和相容性 其主要目的是防止错误的数据进入数据库造成无效操作 正确性是指数据的合法性 例如数值型数据只能含有数字而不能含有字母 有效性是指数据是否属于所定义域的有效范围 相容性是指表示同一事实的两个数据应当一致 不一致即是不相容 数据库管理系统的完整性控制机制应具有三个方面的功能 来防止合法用户在使用数据库时 向数据库注入不合法或不合语义的数据 1 定义功能 提供定义完整性约束条件的机制 2 验证功能 检查用户发出的操作请求是否违背了完整性约束条件 3 处理功能 如果发现用户的操作请求使数据违背了完整性约束条件 则采取一定的动作来保证数据的完整性 33 6 2 2完整性约束条件的分类 从约束条件使用的对象分 值的约束和结构的约束值的约束即主要是对数据类型 数据格式 取值范围和空值等进行规定 1 对数据类型的约束 包括数据的类型 长度 单位和精度等 2 对数据格式的约束 3 对取值范围的约束 4 对空值的约束 结构的约束即对数据之间联系的约束 1 函数依赖约束 2 实体完整性约束 3 参照完整性约束 4 统计约束 34 从约束对象的状态分 静态约束和动态约束静态约束静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件 它是反映数据库状态合理性的约束 是最重要的一类完整性约束 上面介绍的值的约束和结构的约束均属于静态约束 动态约束动态约束是指数据库从一个正确状态向另一个正确状态的转化过程中新 旧值之间所应满足的约束条件 反映数据库状态变迁的约束 例如 更新职工表时 工资 工龄这些属性值一般只会增加 不会减少 6 2 3SQLServer2012的数据库完整性策略 36 6 3事务和并发控制 数据库系统是面向多用户的 当多个用户同时访问数据库时如何保证数据的一致性和有效性 事务控制和并发处理为多用户同时访问数据库问题的解决提供了一种有效的途径 事务是数据库并发控制技术涉及的基本概念 是并发控制的基本单位 37 事务 Transaction 是指作为单个逻辑工作单元执行的一系列数据库操作 一个事务可以是一组SQL语句 一条SQL语句或整个程序 一个应用程序可以包括多个事务 一个事务内的所有语句被作为整体执行 要么全部执行 要么全部不执行 6 3 1事务的概念和特点 38 事务的特征原子性 Atomicity 事务是数据库操作的逻辑工作单位 就操作而言 事务中的操作是一个整体 不能再被分割 要么全部成功执行 要么全部不成功执行 一致性 Consistency 事务一致性是指事务执行前后都能够保持数据库状态的一致性 即事务的执行结果是将数据库从一个一致性状态变到另一个一致性状态 隔离性 Isolation 隔离性是指多个事务在执行时不互相干扰 事务具有隔离性意味着一个事务的内部操作即其使用的数据库对其他事务是不透明的 其他事务不会干扰这些操作和数据 持久性 Durability 指事务一旦提交 则其对数据库中数据的改变就应该是永久的 即使是出现系统故障等问题 DBMS也应该能恢复 为了充分利用数据库资源 很多时候数据库用户都是对数据库系统并行存取数据 因此会发生多个用户并发存取同一数据块的情况 若对并发操作不加控制可能会产生不正确的数据 破坏数据的完整性 并发控制就是解决这类问题 以保持数据库中数据的一致性 即在任何一个时刻数据库都将以相同的形式给用户提供数据 6 3 2并发控制概述 40 例6 5 并发火车订票操作 以下为火车订票系统中的一个活动序列 甲售票点 甲事务 读出某车次的火车票余额A 设A 25 乙售票点 乙事务 读出同一车次的火车票余额A 也为25 甲售票点卖出一张火车票 修改余额A A 1 所以A为24 把A写回数据库 乙售票点也卖出一张火车票 修改余额A A 1 所以A为24 把A写回数据库 结果明明卖出两张火车票 数据库中火车票余额却只减少1 是因为乙事务的修改覆盖了甲事务的修改 而这种情况就是甲乙两个事务并发操作而引起的数据不一致性 41 表6 2丢失修改 42 数据库的并发操作导致的数据库不一致性主要有以下三种 丢失更新 LostUpdate 当两个事务T1和T2读入同一数据 并发执行修改操作时 T2把T1或T1把T2的修改结果覆盖掉 造成了数据的丢失更新问题 导致数据的不一致 污读 DirtyRead 事务T1更新了数据R 事务T2读取了更新后的数据R 事务T1由于某种原因被撤销 修改无效 数据R恢复原值 事务T2得到的数据与数据库的内容不一致 这种情况称为 污读 不可重读 UnrepeatableRead 事务T1读取了数据R 事务T2读取并更新了数据R 当事务T1再读取数据R以进行核对时 得到的两次读取值不一致 这种情况称为 不可重读 43 表6 3不可重复读 表6 4读 脏 数据 45 6 3 3封锁和封锁协议 并发控制的主要技术包括封锁 Locking 时间戳 Timestamp 和乐观控制法 商用的DBMS一般都采用封锁方法 封锁类型 LockType 锁就是事务T在对某个数据对象 例如表 记录等 操作之前 先向系统发出请求 对其进行加锁 以保证数据操作的正确性和一致性 46 基本的封锁类型有两种排它锁 ExclusiveLock 排它锁又称为写锁 若事务T对数据对象A加上X锁 则只允许T读取和修改A 其他任何事务都不能再对A加任何类型的锁 直到T释放A上的锁 共享锁 ShareLock 共享封锁又称读封锁 简称为S锁 若事务T对数据对象A加上S锁 则事务T可以读A但不能修改A 其他事务只能再对A加S锁 而不能加X锁 直到T释放A上的S锁 封锁协议 LockProtocol 封锁可以保证合理地进行并发控制 保证数据的一致性 在封锁时 要考虑一定的封锁规则 例如 何时开始封锁 封锁多长时间 何时释放等 这些封锁规则称为封锁协议 47 上面讲述过的并发操作所带来的丢失更新 污读和不可重读等数据不一致性问题 可以通过三级封锁协议在不同程度上给予解决 一级封锁协议事务T在修改数据R之前必须先对其加X锁 直到事务结束才释放 二级封锁协议一级封锁协议加上事务T在读取数据R之前必须先对其加S锁 读完后即可释放S锁 三级封锁协议一级封锁协议加上事务T在读取数据R之前必须先对其加S锁 直到事务结束才释放 48 表6 5解决丢失修改问题 49 表6 6解决读 脏 数据问题 50 表6 7解决不可重复读问题 51 封锁粒度 LockGranularity 并发控制程序选择的作为保护单位的数据项的大小被称为封锁粒度 根据对数据的不同处理 封锁的对象可以是这样一些逻辑单元 字段 记录 表 数据库等 封锁粒度越小 系统中被封锁的对象就越多 并发性就越高 但封锁机构越复杂 系统开销就越大 封锁粒度越大 系统中被封锁的对象就越少 并发性就越低 但封锁机构越简单 系统开销就越小 52 活锁和死锁活锁 Livelock 若事务T1对数据A进行X排他封锁 由于其他事务对该数据的操作而使事务T1一直处于等待状态 这种状态成为活锁 死锁 Deadlock 在同时处于等待状态的两个或多个事务中 其中的每一个在它能够进行之前 都等待着某个数据 而这个数据已被它们中的某个事务所封锁 这种状态称为死锁 53 表6 8活锁 54 表6 9死锁 55 目前 在数据库中解决死锁问题主要包括两种方法 1 死锁的预防一次加锁法 一次封锁法要求是每个事务一次将所有要使用的数据项全部加锁 否则就不能继续执行 顺序加锁法 顺序封锁法是预先对数据对象规定一个封锁顺序 所有事务都按照这个顺序进行封锁 2 死锁的诊断与解除数据库系统中诊断死锁的方法与操作系统类似 一般使用超时法或事务等待图法 设法解除死锁 通常采用的方法是选择一个处理死锁代价最小的事务 将其撤消 释放此事务所持有的全部锁 使其他事务得以继续运行下去 6 3 5SQLServer2012的并发控制 根据事务的设置 用途的不同 SQLServer2012将事务分为多种类型 1 根据系统的设置分类根据系统的设置 SQLServer2012将事务分为两种类型 系统提供的事务和用户定义的事务 2 根据运行模式分类根据运行模式 SQLServer2012将事务分为四种类型 自动提交事务 显示事务 隐式事务和批处理级事务 3 事务处理语句BEGINTRANSACTION语句 事务开始 COMMITTRANSACTION语句 成功提交事务 ROLLBACKTRANSACTION语句 事务回滚 SAVETRANSACTION语句 事务内设置保存点 4 事务的启动在SQLServer中 启动事务的方式有三种 显示启动 自动提交和隐式启动 5 终止事务终止方法有两种 一种是使用COMMIT命令 提交命令 另一种是使用ROLLBACK命令 回滚命令 但这俩种方法有本质上的区别 当执行COMMIT命令是 会将语句执行结果保存到数据库中 并终止事务 当执行ROLLBACK命令时 数据库将返回到事务开始时的初始状态 并终止事务 2 锁 SQLServer数据库引擎使用不同的锁模式锁定资源 这些锁模式确定了并发事务访问资源的方式 SQRSERVER2012提供了以下锁模式 如表6 10所示 表6 10锁模式 61 6 4数据库的恢复 数据库恢复是指当数据库发生故障时 将数据库从错误状态恢复到某一已知的正确状态 亦称为一致状态或完整状态 的过程 数据库恢复的基本原理就是利用数据的冗余 而数据库恢复机制涉及的两个关键问题就是如何生成冗余数据以及如何利用这些冗余数据恢复数据库 生成冗余数据对可能发生的故障作某些准备冗余重建利用这些冗余数据恢复数据库 登记日志文件 数据转储 62 数据转储 DataDump 数据转储 也成为数据库备份 是数据库管理员定期地将整个数据库复制到辅助存储设备上 比如磁带 磁盘等 当数据库遭到破坏后可以利用转储的数据库进行恢复 但这种方式只能将数据库恢复到转储时的状态 若想恢复到故障发生时的状态 则必须利用转储后的事务日志 重新执行日志中的事务 按照转储状态 数据转储可以分为静态转储和动态转储 按照转储方式 数据转储还可以分为海量转储和增量转储两种方式 63 登记日志文件日志文件是用来记录事务对数据库的更新操作的文件 典型的日志文件主要包含以下内容 1 操作的事务标识 标明是哪个事务 2 操作类型 插入 删除或修
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新版部编人教版小学三年级数学上册全册教案
- 重庆直播红娘培训课件
- 重大手术知识培训课件
- 老年人讲文明课件
- 老年人护肤基础知识培训课件
- 企业项目管理流程
- 酿酒培训知识大全课件
- 人教版八年级英语下册专练:语法填空20篇(含答案)
- 2025版私人运输车辆融资租赁服务合同
- 2025版砂石场员工劳动合同补充协议
- 离婚协议书下载电子版完整离婚协议书下载
- 《Photoshop图像处理》课件-第一讲 认识PS
- 大众Polo 2014款说明书
- 新媒体运营全套PPT完整教学课件
- 出境竹木草制品自检自控计划书(2021年报海关)
- 压力容器材料
- 招标投标法9个课件
- 100个最具争议的涉税经典稽查案例深度解析1增值税退税
- 高等数学上册ppt课件完整版
- 网店美工与视觉设计全书ppt完整版课件最全电子教案正本书教学教程
- 胸部检查(二)肺与胸膜检查
评论
0/150
提交评论