数据库原理详解第四~五章
第四章:数据库安全性
一、数据库安全性概述
1、数据库的不安全因素
① 非授权用户对数据库恶意存取和破坏
② 数据库中重要或敏感的数据被泄露
③ 安全环境的脆弱性
2、安全标准简介
① 安全标准
TCSEC:美国国防部,桔皮书
ITSEC:法、英、荷、德四国,欧洲白皮书
CC:美、加、英、法、德、荷)联合提出了信息技术安全评价的通用标准
ISO 15408:1999年,CC 2.1版被ISO采纳为国际标准ISO 15408。
② 安全等级
C1:自主存取控制
B1:对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制,B1级别的产品才是真正意味上的安全产品。
③ CC安全等级划分
二、数据库安全性控制
1、用户身份鉴别
① 静态口令鉴别
用户自己制定
② 动态口令鉴别
口令动态变化,每次鉴别使用新的口令
③ 生物特征鉴别
类似指纹,人脸识别
④ 智能卡鉴别
类似门禁卡
2、存取控制技术(DAC/MAC)
存取控制主要包括用户权限定义和合法权限检查两部分,组成了数据库管理系统的存取子系统
① 定义用户权限
对数据的操作权力称为权限
DBMS提供适当语言定义用户权限,存放在数据字典中,称为安全规则或授权规则
② 合法权限检查
用户发出数据库操作请求时,DBMS查找数据字典,进行合法权限检查
③ 定义用户权限检查顺序:
3、自主存取控制(DAC)
C2级,用户对不同的数据对象有不同的存取权限,用户可以授权给其它用户
① 自主存取控制方法
实现:通过SQL的GRANT语句和REVOKE语句实现
用户权限组成:
- 数据对象
- 操作类型
定义用户存取权限:定义用户可以在哪些数据库对象进行哪些类型的操作。定义存取权限称为授权。
② 存取控制的对象以及操作类型
③ 授权:GRANT X ON T X TO X
④ 收回:REVOKE X ON T X FROM X
⑤ 创建数据库模式的权限
⑥ 角色及给角色授权
4、强制存取控制(MAC)
B1级,对数据对象标以密级,对用户授予级别许可证,只有许可证级别高于密级才能拥有存取权限
5、视图机制
6、审计
7、数据加密
第五章:数据库完整性
一、实体完整性
① 实体完整性定义
在CREATE TABLE中用PRIMARY KEY定义。
单属性构成的码可以定义为列级约束条件或者表级约束条件。
多个属性构成的码只有一种说明方式,即为表级约束条件。
② 实体完整性检查与违约处理
在插入或对主码列进行更新操作时,关系数据库管理系统会安装实体完整性规则自动进行检查。
实体完整性规则:
- 检查主码值是否唯一,不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空,一个为空则拒绝插入或修改
检查主码是否唯一的方式是进行全表扫描,十分耗时,所以一般RDBMS核心都在主码上自动建立一个索引。
二、参照完整性
① 参照完整性定义
- 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码
- 用REFERENCES短语指明这些外码参照哪些表的主码
② 参照完整性规则
外键的值只能由以下两种情况:
- 为空
- 等于其所参照的关系中的某个元组的主键值
③ 可能破坏参照完整性的情况
- 参照的表中增加一个元组,外码的值在另外一个表中可能不存在
- 修改参照的表中的一个元组,外码的值可能被修改
- 删除被参照表的一个元组,导致参照表中的外码不合法
- 修改被参照表中一个元组的主码,导致参照表中的外码不合法
④ 参照完整性检查和违规处理
三、用户定义的完整性
① 属性约束条件
- 列值非空(NOT NULL)
- 列值唯一(UNIQUE)
- 检查列值是否满足一个条件表达式(CHECK)
② 元组级限制
③ 属性约束条件的违约处理
插入元组或修改属性的值时,关系数据库管理系统检查属性上的约束条件是否被满足,如果不满足则拒绝执行
四、完整性约束命名字句
① 完整性约束命名子句
SQL中可以在CREATE TABLE语句使用CONSTRAINT子句定义完整性约束条件,从而灵活地增加、删除完整性约束条件。
CONSTRAINT<完整性约束条件名><完整性约束条件>
② 修改表中的完整性限制
五、断言
在断言中设置检查语句,涉及该语句的操作触发断言进行判断
SQL中可以用CREATE ASSERTION语句,通过声明性断言来指定更具有一般性的约束。
任何对断言中所涉及的关系的操作都会触发关系数据库管理系统对断言的检查。任何使断言不为真值的操作都会被拒绝执行。
① 创建断言的语句格式
② 删除断言
六、触发器(Trigger)
① 触发器
触发器是用户定义在关系表的一类由事件驱动的特殊过程。
- 触发器保存在数据库服务器中
- 任何用户对表的增删改操作均由服务器自动激活相应的触发器
- 触发器可以实施更为复杂的检查和操作,具有更精细和更强大的数据控制能力