数据库安全性和安全管理
1.数据库安全性控制的一般方法
(1)用户标识与鉴别:由系统提供的最外层安全保护措施,每次用户要求进入系统时都需要输入用户标识。有以下几种方法:
1)用输入用户名来标识
2)通过回答口令来表示(PSW)
3)通过回答对随机数的运算结果表名用户身份(系统提供随机数,事先规定好计算过程/函数)
(2)存取控制:确保具有权限的用户访问数据库,令未授权的人员无法接近数据库
1)存取机制构成:定义用户权限;权限检查(用户提出操作请求时)
2) 存取机制类别: 自主存取控制)(DAC);用户对不同对象有不同的权限,更加灵活
强制存取机制控制(MAC);只允许持有合法许可证(对应级别许可证)的用户访问,较为严格
(3)自主存取控制方法
1)关系中的用户权限
2)SQL的数据控制功能
使用GRANT和REVOKE进行授权和收权(由创建者或获得权限的用户执行)
授权机制的性能: 1.授权对象范围越小授权系统越灵活,授权粒度越细
2.用户权限定义中能够使用谓词的授权系统较灵活
3.用户权限定义中能使用谓词、且存取谓词中能够引用系统变量的授权系统更灵活
4.自主存取控制机制的不足:系统对授权状态无法进行控制,易造成无意数据泄露
(4)强制存取控制方法
1)主体、客体及敏感度标记
主体:系统中的活动实体--管理系统的实际用户、用户的各种进程
客体:系统中的被动实体(受主体控制):文件、基表、索引、视图等
敏感度:绝密、机密、可信、公开
2)主体对客体的存取规则
主体的许可证等级大于客体的密级时才能够访问客体
主体的许可证等级等于客体的密级时才能写客体
3)DAC和MAC共同构成的安全机制
5.视图机制
通过视图将数据对象限制在一定范围内,对无权限用户隐藏,从而自动的提供一定程度的安全保护
6.审计
用户所有操作都会自动放入审计日志
7.数据加密
1)替换方法:使用密钥将明文转换为密文
2)置换方法 :将明文进行重新排列
SQL Server的安全体系结构和安全认证模式
1.MSSQL的安全体系结构
(1)Windows NT操作系统的安全防线(用户组)
(2)SQL Server的运行安全防线(帐号标准登录和集成登录)
(3)SQL Server数据库的安全防线(无权限用户无法访问数据库)
(4)SQL Server数据库对象的安全防线(T-SQL保证了即使是合法用户也无法越权操作)
2.MSSQL的安全认证模式
1)Login的用户管理
2)数据库用户(Database User)的管理
3)服务器级角色的管理
4)数据库角色的管理
SQL Server权限管理
1.MSSQL权限管理
2.对象权限的管理
3.语句权限的管理
SQL Server的完整性控制
1.完整性约束条件及完整性控制
1)静态级约束:
1.列级约束:数据类型约束,数据格式的约束,对取值范围和值集合的约束,对空值的约束,其他约束
2.元组约束
3.表级约束:实体完整性约束,参数完整性约束,函数依赖约束,统计约束
2)动态级约束
1.修改定义时的约束
2.修改列值的约束
3.元组约束
4.表级约束
3)完整性控制机制的功能及执行约束
1.完整性控制机制应具有的功能
1)定义完整性功能
2)检查完整性功能
3)控制完整性功能
2.立即执行约束、延迟执行约束
4)完整性规则约束
5)实现参照完整性要考虑的问题
1.外码能够接收空值
2.在被参照关系中删除元组的问题:
级联删除<全部删除>、
受限删除<没有任何元组的外码与被参照关系中要删除的主码相同时,系统才能执行删除>
置空值删除<将参照关系中相关的元组的外码值置空>
3.在参照关系中插入元组的问题
受限插入,仅在被参照关系存在对应元组的时候且外码相同时插入
递归插入,
修改关系的主码问题
修改表是被参照关系的问题
SQL Server的数据库完整性及实现方法
1.SQL Server的数据完整性的种类
1)域完整性
2)实体完整性
3)参照完整性
2.SQL Server数据完整性的两种关系
1)声明数据完整性
2)过程数据完整性
3.SQL Server实现数据完整性的具体关系
1)约束的类型
2)声明数据完整性约束的定义方法
SQL Server数据库的并发控制
1.事务的概念和特征
事务是用户定义的一个数据库操作序列,这些操作要么不做要么全做,是一个不可分割的工作单位。
事务的特性:原子性、一致性(提交前后都是一致的)、隔离性(不能被干扰)、持续性(提交后改变时永久的)
持续性遭到破坏的原因:1.多个事务并行运行、不同事务的操作交叉执行
2.运行中被强制停止
事务并发操作可能产生的数据不一致:1.丢失修改、2.不可重复读、3.读"脏"数据
2.封锁及封锁协议
锁的类型: 1.排他锁 X(独占锁/写锁)
2.共享锁 S(读锁)
封锁协议: 1.一级封锁协议:事务T在修改数据之前必须先对其加X锁,直到事务结束才能释放
2.二级封锁协议:修改的数据必须加X锁,事务结束才能释放X锁
读取的数据必须加S锁,事务结束才能释放S锁
3.三级封锁协议:读取数据之前必须加S锁、修改数据前加X锁,直到事务结束后才能释放
3.封锁出现的问题及解决方法
活锁:多个事务请求同一数据封锁,使某一用户等待的情况
解决:先来先服务
死锁: T1封锁了R1,T2封锁了R2,两者又要求封锁对方的数据,它们不会结束,只能等待造成僵持
解决: 采用一定措施预防死锁发生
系统定时检查死锁并将至释放(选择一个代价最小的事务)
死等待:已经锁定了一部分数据,还要求对其他已加锁的事务加锁
一次封锁法:一次性全部加锁,否则事务不在进行
顺序封锁法:预先对数据对象规定一个封锁顺序
4.并发调度的可串行性
5.两段加锁协议 1.对任何一个数据读、写之前,先申请并获得对该数据的封锁
2.在释放一个封锁后,事务不能再申请该对象的封锁(不吃回头草)
6.封锁的粒度:封锁对象的大小,可以是逻辑单元也可以说物理单元(属性值、集合、元组、关系、整个数据库)
粒度越小,并发程度越高
MSSQL的并发
1.锁级别 (1)行级锁 (2)页级锁 (3)簇级锁 (4)表级锁 (5)数据库级锁
2.锁类型 1.X锁 2.S锁 3.IS锁(意向共享锁) 4.IS(意向排他锁)、
数据库恢复技术和恢复机制
1.故障的种类
1)事务内部的故障:事务没有达到终点,强行回滚该任务(撤销修改)
2)系统故障 1.故障发生时未完成的事务的部分数据写入物理数据库造成状态异常,强制清除这些数据修改(UNDO、回滚)来保证数据的一致性
2.故障发生时,①已完成事物的部分甚至全部数据留在缓冲区,未写回物理数据库,造成修改部分丢失,进行重做(REDO)所有已提交事物
3)介质故障
4)计算机病毒
5)用户操作错误
2.数据恢复实现技术
1)数据转储:备份->静态转储(转储的时候不进行事务操作,降低数据库的可行性)、动态转储(转储后的数据不能保重有效性)
海量转储和增量转储-->每次备份全库还是增量数据
2)登记日志文件
日志文件的内容和格式:各个事务的开始标记、结束标记、更新操作、
作用:用于数据库恢复
3.数据库恢复策略
1)事务故障的恢复
1.反向扫描文件日志(从后往前),查找该事务的更新操作
2.对该事务的更新操作执行逆操作
3.重复执行1、2,直到读到事务开始标记
2)系统故障的恢复
1.正向扫描日志文件,找到在故障发生前提交的事务,将该事务列入重做队列;同时找到故障发生时未完成事务,,将其记入撤销队列
2.对撤销队列中的各个事物进行撤销
3.对重做队列的各个事物进行重做操作
3)截止故障的恢复
1.装入最新的数据库后备副本
2.装入相应的日志文件副本
4.具有检查点的数据恢复技术
1)检查点记录和重新开始文件
检查点的记录内容为:建立检查点时所有正在进行的事务清单;
这些事务最近一个日志记录的地址
2)动态维护日志文件的方法
1.将当前日志缓冲中道德所有日志文件记录写入磁盘的日志文件上
2.在日志文件中写入一个检查点记录
3)使用检查点进行数据恢复的步骤
1.从重新开始文件中找到最后一个检查点记录在日志文件中的地址
2.由该检查点记录得到检查点
3.从检查点开始正向扫描日志文件
4.对撤销事务清单和重做清单进行执行
MSSQL的数据备份与恢复机制
略