数据库的特点之一是由数据库管理系统提供统一的数据保护功能来保证数据的安全可靠和正确有效。数据库的数据保护主要包括数据的安全性和完整性。
数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
①数据库的不安全因素
(1)非授权用户对数据库的恶意存取和破坏
数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
(2)数据库中重要或敏感的数据被泄露
数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
(3)安全环境的脆弱性
在计算机安全技术方面逐步发展建立了一套可信计算机系统的概念和标准。
②安全标准简介
计算机以及信息安全技术方面有一系列的安全标准,最有影响的当推TCSEC和CC这两个标准。发展历史如下图所示:

TCSEC又称桔皮书。TCSEC/TDI,即紫皮书。从4个方面来描述安全性级别划分的指标,即安全策略、责任、保证和文档。
TCSEC/TDI将系统划分为4组(division)7个等级,依次是D、C(C1,C2)、B(B1,B2,B3)、A(A1),按系统可靠或可信程度逐渐增高,如下表所示:

D级:该级是最低级别。保留D级的目的是为了将一切不符合更高标准的系统统统归于D组。
C1级:该级只提供了非常初级的自主安全保护,能够实现对用户和数据的分离,进行自主存取控制,保护或限制用户权限的传播。
C2级:该级实际上是安全产品的最低档,提供受控的存取保护。
B1级:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制以及审计等安全机制。(真正意义上的安全产品)
B2级:结构化保护。建立形式化的安全策略模型,并对系统内的所有主体和客体实施DAC和MAC。
B3级:安全域。该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
A1级:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证,以确信各安全保护真正实现。
CC根据系统对安全保证要求的支持情况提出了评估保证级(EAL),从EAL1至EAL7共分为7级,按保证程度逐渐增高。如下表所示。

粗略而言,TCSEC的C1和C2级分别相当于EAL2和EAL3;B1、B2和B3分别相当于EAL4、EAL5和EAL6;A1对应于EAL7。
数据库安全性控制
与数据库有关的安全性,主要包括用户身份鉴别、多层存取控制、审计、视图和数据加密等安全技术。
①用户身份鉴别
用户身份鉴别是数据库管理系统提供的最外层安全保护措施。常用的用户身份鉴别方法有以下几种:
(1)静态口令鉴别
这种方式虽然简单,但容易被攻击,安全性较低。口令的安全可靠对数据库安全来说至关重要。因此,数据库管理系统从口令的复杂度,口令的管理、存储及传输等多方面来保障口令的安全可靠。
(2)动态口令鉴别
它是目前较为安全的鉴别方式。常用的方式如短信密码和动态令牌方式。
(3)生物特征鉴别
生物特征是指生物体唯一具有的,可测量、识别和验证的稳定生物特征,如指纹、虹膜和掌纹等。安全性较高。
(4)智能卡鉴别
智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能。由于每次从智能卡中读取的数据是静态的,存在安全隐患。一般采用个人身份识别码和智能卡相结合的方式。
②存取控制
存取控制机制主要包括定义用户权限和合法权限检查两部分。
(1)定义用户权限,这些定义经过编译后存储在数据字典中,被称做安全规则或授权规则。
(2)合法权限检查,查找数据字典检查用户是否具有该操作的权限。
定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统。
C2级的数据库管理系统支持自主存取控制(DAC),B1级的数据库管理系统支持强制存取控制(MAC)。
(1)在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。
(2)在强制存取控制方法中,每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。
③自主存取控制方法
用户权限是由两个要素组成的:数据库对象和操作类型。定义存取权限称为授权。
存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等),下表列出了主要的存取权限。

④授权:授予与收回
SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。
(1)GRANT
GRANT<权限>[,<权限>]…
ON<对象类型> <对象名> [,<对象类型><对象名>]…
TO<用户>[<用户>]…
[WITH GRANT OPTION];
其语义为:将对指定操作对象的指定操作权限授予指定的用户。
(2)REVOKE
REVOKE<权限>[,<权限>]…
ON <对象类型><对象名> [,<对象类型><对象名>]…
FROM<用户>[,<用户>]…[CASCADE| RESTRICT];
用户可以“自主”地决定将数据的存取权限授予何人、决定是否也将“授权”的权限授予别人。因此称这样的存取控制是自主存取控制。
(3)创建数据库模式的权限
GRANT和REVOKE语句向用户授予或收回对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
CREATE USER语句一般格式如下:
CREATE USER <username> [WITH] [DBA| RESOURCE| CONNECT];
对CREATE USER语句说明如下:

⑤数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权,用REVOKE语句收回授予角色的权限。
(1)角色的创建
CREATE ROLE<角色名>
(2)给角色授权
GRANT<权限>[,<权限>]…
ON<对象类型>对象名
TO<角色>[,<角色>]…
(3)将一个角色授予其他的角色或用户
GRANT<角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
(4)角色权限的收回
REVOKE<权限>[,<权限>]…
ON <对象类型><对象名>
FROM<角色>[,<角色>]…
⑥强制存取控制方法
自主存取控制(MAC)能够通过授权机制有效地控制对敏感数据的存取。
强制存取控制是指系统为保证更高程度的安全性。
它不是用户能直接感知或进行控制的。强制存取控制适用于那些对数据有严格而固定密级分类的部门。
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。主体是系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记。
敏感度标记被分成若干级别,例如绝密(TS)、机密(S)、可信(C)、公开(P)等。密级的次序是TS>=S>=C>=P。
当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:
仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
如果违反了规则2,就有可能把数据的密级从高流向低,造成数据的泄漏。
强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
视图机制
通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
视图机制间接地实现支持存取谓词的用户权限定义。
审 计
审计功能就是数据库管理系统达到C2以上安全级别必不可少的一项指标。
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
审计功能主要用于安全性要求较高的部门。
(1)审计事件
服务器事件
系统权限
语句事件
模式对象事件
(2)审计功能
基本功能,提供多种审计查阅方式。
提供多套审计规则。
提供审计分析和报表功能。
审计日志管理功能。
系统提供查询审计设置及审计记录信息的专门视图。
(3)AUDIT语句和NOAUDIT语句
AUDIT语句用来设置审计功能,NOAUDIT语句则取消审计功能。
审计一般可以分为用户级审计和系统级审计。
数据库安全审计系统提供了一种事后检查的安全机制。
数据加密
加密的基本思想是根据一定的算法将原始数据——明文变换为不可直接识别的格式——密文,从而使得不知道解密算法的人无法获知数据的内容。
数据加密主要包括存储加密和传输加密。
(1)存储加密
对于存储加密,一般提供透明和非透明两种存储加密方式。透明存储加密是内核级加密保护方式,对用户完全透明;非透明存储加密则是通过多个加密函数实现的。
(2)传输加密
常用的传输加密方式如链路加密和端到端加密。
端到端加密的实现思路包含以下三点:
确认通信双方端点的可靠性
协商加密算法和密钥
可信数据传输
其他安全性保护
为满足较高安全等级数据库管理系统的安全性保护要求,在自主存取控制和强制存取控制之外,还有推理控制以及数据库应用中隐蔽信道和数据隐私保护等技术。
推理控制处理的是强制存取控制未解决的问题。
隐蔽信道处理内容也是强制存取控制未解决的问题。
数据隐私是控制不愿被他人知道或他人不便知道的个人数据的能力。
小 结
随着数据库应用的深入和计算机网络的发展,数据的共享日益加强,数据的安全保密越来越重要。数据库管理系统是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制。
实现数据库系统安全性的技术和方法有多种,数据库管理系统提供的安全措施主要包括用户身份鉴别、自主存取控制和强制存取控制技术、视图技术和审计技术、数据加密存储和加密传输等。本章简要讲解了这些技术。








