第七部分
数据库安全
7.1 数据库安全概述
7.2 数据库安全策略和评估
7.3 数据库安全的基本技术
7.4 数据库备份和恢复
内容
7.1 数据库安全概述
? 引言
? 7.1.1 数据库概念
? 7.1.2 数据库的数据结构模型
? 7.1.3 数据库的要求与特性
? 7.1.4 数据库安全的重要性
? 7.1.5 数据库的安全需求
7.1 数据库安全概述
? 引言
– 数据库安全
? 指保护数据库以防止非法使用所造成的信息泄露、
更改或破坏。
– 数据库系统安全
? 系统运行安全:用户的合法权利;物理控制安全;
硬件运行安全;操作系统安全;灾害、故障恢复;
电磁信息泄漏的预防。
? 系统信息安全:用户口令鉴别;用户存取权限控
制;数据存取权限、方式控制; 审计跟踪;数
据加密。
7.1 数据库安全概述
? 7.1.1 数据库概念
– 数据库系统
? 数据库,存储在一起的相关数据的集合,这些数
据是结构化的、无有害的或不必要的冗余,并为
多种应用服务;数据的存储独立于使用它的程序。
? 数据库管理系统 DBMS,为用户及应用程序提供
数据访问,并具有对数据库进行管理、维护等多
种功能。
7.1 数据库安全概述
? 7.1.2 数据库的数据结构模型
– 数据结构 DS,数据的组织形式或数据之间
的联系
– DS= (D,R)
? D表示数据
? R表示数据对象之间存在的关系集合
7.1 数据库安全概述
? 7.1.2 数据库的数据结构模型
– 1.数据结构种类
? 数据的逻辑结构是从逻辑的角度 (即数据间的联
系和组织方式 )来观察数据,分析数据,与数据
的存储位置无关。
? 数据的物理结构是指数据在计算机中存放的结构,
即数据的逻辑结构在计算机中的实现形式,所以
物理结构也被称为存储结构。
7.1 数据库安全概述
? 7.1.2 数据库的数据结构模型
– 2.层次、网状和关系数据库系统
? 层次结构模型
? 网状结构模型
? 关系结构模型:把一些复杂的数据结构归结为简
单的二元关系 (即二维表格形式 )
– 表中每一行表示一个记录值,每一列表示一个属性
(即字段或数据项 )。该表一共有 m个记录。每个记录包
含 n个属性。
7.1 数据库安全概述
? 7.1.2 数据库的数据结构模型
– 二维表,必须满足以下条件:
? 表中每一列必须是基本数据项 (即不可再分解 )。
? 表中每一列必须具有相同的数据类型 (例如字符型
或数值型等 )
? 表中每一列的名字必须是唯一的。
? 表中不应有内容完全相同的行。
? 行的顺序与列的顺序不影响表格中所表示的信息
的含义。
7.1 数据库安全概述
? 7.1.3 数据库的要求与特性
– 1.建立数据库文件的要求
? 尽量减少数据的重复,使数据具有最小的冗余度。
? 提高数据的利用率,使众多用户都能共享数据资
源。
? 注意保持数据的完整性。
? 注意同一数据描述方法的一致性,使数据操作不
致发生混乱 。
? 对于某些需要保密的数据,必须增设保密措施。
? 数据的查找率高,根据需要数据应能被及时维护。
7.1 数据库安全概述
? 7.1.3 数据库的要求与特性
– 2.数据库文件的特征
? 文件的记录格式相同,长度相等。
? 不同的行是不同的记录,因而具有不同的内容。
? 不同的列表示不同的字段名,同一列中的数据的
性质 (属性 )相同。
? 每一行各列的内容是不能分割的,但行的顺序和
列的顺序不影响文件内容的表达。
7.1 数据库安全概述
? 7.1.3 数据库的要求与特性
– 3.数据库的文件分类
? 主文件
? 事务文件
? 表文件
? 备用文件
? 档案文件
? 输出文件
7.1 数据库安全概述
? 7.1.4 数据库安全的重要性
– 保护敏感信息和数据资产
– 少数数据库安全漏洞不光威胁数据库的安
全,也威胁到操作系统和其他可信任的系

– 数据库是电子商务,ERP系统和其他重要
的商业系统的基础
7.1 数据库安全概述
? 7.1.5 数据库的安全需求
– 物理上的数据库完整性,预防数据库数据物理方面
的问题
– 逻辑上的数据库完整性,保持数据的结构
– 元素的完整性,包含在每个元素中的数据是准确的
– 可审计性,能够追踪到谁访问修改过数据的元素
– 访问控制,允许用户只访问被批准的数据,以及限
制不同的用户有不同的访问模式,如读或写
– 用户认证,确保每个用户被正确地识别,既便于审
计追踪也为了限制对特定的数据进行访问
– 可获(用)性,用户一般可以访问数据库以及所有
被批准访问的数据
7.2 数据库安全策略和评估
? 7.2.1 数据库的安全威胁
? 7.2.2 数据库的安全策略
? 7.2.3 数据库的审计
7.2 数据库安全策略和评估
? 7.2.1 数据库的安全威胁
– 硬件故障引起的信息破坏或丢失
– 软件保护失效造成的信息泄露
– 应用程序设计出现漏洞
– 病毒入侵系统,造成信息丢失、泄露或破坏
– 计算机放置在不安全的地方被窃听
– 授权者制定不正确或不安全的防护策略
– 数据错误输入或处理错误
– 非授权用户的非法存取,或授权用户的越权存取
7.2 数据库安全策略和评估
? 7.2.2 数据库的安全策略
– 最小特权策略
– 最大共享策略
– 粒度适当策略
– 按内容存取控制策略
– 开系统和闭系统策略
– 按存取类型控制策略
– 按上下文存取控制策略
– 根据历史的存取控制策略
7.2 数据库安全策略和评估
? 7.2.3 数据库的审计
– 作用:用来监视各用户对数据库施加的动

– 实现步骤
? 第一步,收集审计事件,产生审记记录;
? 第二步,根据记录进行安全违反分析;
? 第三步,采取处理措施;
– 审计方式分类
? 用户审计
? 系统审计
7.2 数据库安全策略和评估
? 7.2.3 数据库的审计
– 审计跟踪与日志恢复结合
– 审计功能与告警功能结合
– 审计的流程:数据库安全审计工作的流程是
收集来自库内和库外的事件,根据相应的审
计条件,判断是否是审计事件。对审计事件
的内容按日志的模式记录到审计日志中。当
审计事件满足报警阀的报警值时,则向审计
人员发送报警信息并记录其内容。
7.2 数据库安全策略和评估
? 7.2.3 数据库的审计
– 审计跟踪的特点
? 对被审计的系统是透明的
? 支持所有的应用
? 允许构造事件实际顺序
? 可以有选择地、动态地开始或停止记录
? 记录的事件一般应包括以下内容:被审讯的时间、日期、
数据库的操作、事务类型、用户名、终端号等
? 可以对单个事件的记录进行指定
– 审计人员可以查询、检查审计日志以形成审计报告
7.3 数据库安全的基本技术
? 7.3.1 数据库的完整性与可靠性
? 7.3.2 存取控制
? 7.3.3 视图机制
? 7.3.4 数据库加密
7.3 数据库安全的基本技术
? 7.3.1 数据库的完整性与可靠性
– 1.数据库的完整性
? 实体完整性 (Entity Integrity),指表和它模仿的实体
一致
? 域完整性 (Domain Integrity),某一数据项的值是合理

? 参照 (引用 )完整性 (Reference Integrity),在一个数据
库的多个表中保持一致性
? 用户定义完整性 (User- defined Integrity)。由用户自
定义
? 分布式数据完整性 (Distributed Data Integrity)
7.3 数据库安全的基本技术
? 7.3.1 数据库的完整性与可靠性
– 2,数据库的完整一致性受到破坏的原因
? 应用程序的不完善造成
? 由人为的对数据的操作造成
? 由多个事务并发执行造成
7.3 数据库安全的基本技术
? 7.3.1 数据库的完整性与可靠性
– 3.解决数据库完整性问题的几种实用方法
? 非空约束;缺省值约束;唯一性约束;主键约束;外
部键约束;规则约束。
? 使用数据库存储过程
? 大业务量峰值时并发事务的处理
7.3 数据库安全的基本技术
? 7.3.2 存取控制
– 1.存取控制的安全策略
? 最小特权策略
? 最大共享策略
? 开放与封闭系统
? 类型不同的存取控制
– 与名字相关的存取控制
– 与内容相关的存取控制
– 上下文相关的存取控制
– 防止推理的发生
7.3 数据库安全的基本技术
? 7.3.2 存取控制
– 2.传统的存取控制模型
? 1972年 Graham和 Denning首先提出有关存取控制
的抽象保护模型
? 此模型包含下列三个基本元素:
– 保护系统的主体,通常是使用者 (Subject)
– 保护系统的客体:这里指的是数据库 (Object)
– 存取控制矩阵 (Access Control Matrix)
? 每一列对应一个使用者或主体
? 每一行对应着一个元素或客体
? 矩阵中的每一个元素相位对应着一个主体对客体
的存取权限
7.3 数据库安全的基本技术
? 7.3.2 存取控制
– 2.传统的存取控制模型
? 采用四种方式来设计存取控制矩阵
– 存取控制矩阵法
– 客体列法 (Capability—List System)
– 主体列法 (Access—List System)
– 键锁核对法 (Key—Look Macking System)
7.3 数据库安全的基本技术
? 7.3.2 存取控制
– 3.基于角色的存取控制模型
? 根据安全策略划分出不同的角色,对每个角色分配不同
的操作许可,同时为用户指派不同的角色,用户通过角
色间接的对数据进行存取。
? 三个实体,用户 U(User),角色 R(Role),许可
P(Permission).
– 用户指对数据库的操作人员
– 角色指执行特定任务的能力
– 许可指在系统中对一个或多个客体进行特定模式的操作许可
7.3 数据库安全的基本技术
? 7.3.3 视图机制
– 视图的安全性
? 用户可以访问某些数据,进行查询和修改,但是表或数据库的其
余部分是不可见的,也不能进行访问
? 通过定义不同的视图及有选择地授予视图上的权限,可以将用户、
组或角色限制在不同的数据子集内
– 可以将访问限制在表中行的子集内
– 可以将访问限制在基表中列的子集内
– 可以将访问限制在基表中列和行的子集内
– 可以将访问限制在符合多个基表联接的行内
– 可以将访问限制在基表中数据的统计汇总内
– 可以将访问限制在另一个视图的子集内或视图和基表组合的子集内
7.3 数据库安全的基本技术
? 7.3.4 数据库加密
– 1.数据库加密的基本流程
? 数据库密码系统要求将明文数据加密成密文数据,
数据库中存储密文数据,查询时将密文数据取出
解密得到明文信息。
– 2.数据库加密的特点
? 数据库密码系统应采用公开密钥
? 多级密钥结构
? 加密机制
7.3 数据库安全的基本技术
? 7.3.4 数据库加密
? 加密机制
– 数据库加密解密的密钥应该是相同的、公开的,而加密算法
应该是绝对保密的
– 数据库公开密钥加密机制应是一个二元函数:
? 密文 =F(密钥,明文 )
– 解密过程即是加密过程的逆过程
? 明文 =F(密钥,密文 )
? 加密算法
– 3.数据库加密的范围
? 索引字段不能加密
? 运算的比较字段不能加密
? 表间的连接码字段不能加密
7.3 数据库安全的基本技术
? 7.3.4 数据库加密
– 数据库加密对数据库管理系统原有功能的影

? 无法实现对数据约束条件的定义
? 密文数据的排序、分组和分类
? SQL语言中的内部函数将对加密数据失去作用
? DBMS的一些应用开发工具的使用受到限制
7.4 数据库备份和恢复
? 7.4.1 事务的基本概念
? 7.4.2 数据库故障的种类
? 7.4.3 数据库恢复的策略
? 7.4.4 数据库的恢复技术
? 7.4.5 数据库的镜像
7.4 数据库备份和恢复
? 7.4.1 事务的基本概念
– 1.事务( Transaction)
? 数据库环境下的逻辑工作单位
? 操作要么全部都作,要么一个都不作
? 在应用程序中它往往以 BEGIN TRANSACTION语句开头,而以
COMMIT语句或者 ROLLBACK语句结束。
BEGIN TRANSACTION
… …
COMMIT ( 或者 ROLLBACK)
7.4 数据库备份和恢复
? 7.4.1 事务的基本概念
– 2.事务的性质
? 原子性( Atomicity)
? 一致性( Consistency)
? 隔离性( Isolation)
? 持久性( Durability)
– 事务的更新操作应当在事务完成之前写入磁盘
– 事务的更新与写入磁盘这两个操作应当保存足够的信
息,足以使数据库在发生故障后重新启动时重构更新
操作
7.4 数据库备份和恢复
? 7.4.2 数据库故障的种类
– 事务故障
– 系统故障(软故障 soft crash)
– 介质故障 (硬故障 hard crash)
– 计算机病毒
7.4 数据库备份和恢复
? 7.4.3 数据库恢复的策略
– 事务故障的恢复
? 反向扫描文件日志(即从最后向前扫描日志文
件),查找该事务的更新操作
? 对该事务的更新操作执行逆操作
? 继续反向扫描日志文件,查找该事务的其他更新
操作,并做同样处理
? 如此处理下去,直至读到此事务的开始标记,事
务故障恢复就完成了
7.4 数据库备份和恢复
? 7.4.3 数据库恢复的策略
– 系统故障的恢复
? 系统故障造成数据库不一致状态的原因有两个
– 一是未完成事务对数据库的更新可能已写入数据库
– 二是已提交事务对数据库的更新可能还留在缓冲区没
来得及写入数据库
? 系统的恢复步骤
– 正向扫描日志文件,找出在故障发生前已经提交事务,
同时找出故障发生时尚未完成的事务
– 撤消队列中的各个事务进行撤消 (UNDO)处理
– 重做队列中的各个事务进行重做 (REDO)处理
7.4 数据库备份和恢复
? 7.4.3 数据库恢复的策略
– 介质故障的恢复
– 装入最新的数据库备份副本,使数据库恢复到最近一
次转储时的一致性状态
– 装入相应的日志文件副本,重做已完成的事务
7.4 数据库备份和恢复
? 7.4.4 数据库的恢复技术
– 1.数据 备份
即 DBA定期地将整个数据库复制到磁带或另一
个磁盘上保存起来的过程
? 脱机备份:在系统中无运行事务时进行的备份操

? 联机备份,指备份期间允许对数据库进行存取或
修改, 即备份和用户事务可以并发执行。
? 全备份:每次转储全部数据库
? 增量备份,每次只备份上一次备份后更新过的
数据
7.4 数据库备份和恢复
? 7.4.3 数据库恢复的策略
– 2.登记日志
? 日志文件中登记的内容包括:
– 各个事务的开始 (BEGIN TRANSACTION)标记
– 各个事务的结束 (COMMIT或 ROLL BACK)标记
– 各个事务的所有更新操作
? 日志文件中以记录为单位,每个记录包含的内容:
– 事务标识(标明是哪个事务)
– 操作的类型(插入、删除或修改)
– 操作对象 (记录内部标识 )
– 更新前数据的旧值(对插入操作而言,此项为空值)
– 更新后数据的新值(对删除操作而言,此项为空值)
7.4 数据库备份和恢复
? 7.4.3 数据库恢复的策略
– 2.登记日志
? 日志的作用:可以用来进行事务故障恢复和系统
故障恢复,并协助备份副本进行介质故障恢复
? 登记日志 (logging)
– 次序严格按并发事务执行的时间次序
– 必须先写日志文件,后写数据库
7.4 数据库备份和恢复
? 7.4.5 数据库的镜像
– 为避免磁盘介质出现故障影响数据库的可用性,许多
数据库管理系统提供了数据库镜像( Mirror)功能用
于数据库恢复
– 整个数据库或其中的关键数据被复制到另一个磁盘上。
每当主数据库更新时,DBMS自动把更新后的数据复
制过去,即 DBMS自动保证镜像数据与主数据的一致

– 一旦出现介质故障,可由镜像磁盘继续提供使用,同
时 DBMS自动利用镜像磁盘数据进行数据库的恢复,
不需要关闭系统和重装数据库副本。