1. 数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏。
-
数据库的不安全因素
a . 非授权用户对数据库的恶意存取和破坏;
b . 数据库中主要或敏感的数据泄露;
c . 安全环境的脆弱性数据库的安全性与计算机系统的安全性。
2. 数据库安全性控制
在一般计算机系统中,安全措施是一级一级层层设置的。
在下图所示的安全模型中,用户要求进入计算机系统时,系统首先根据输入的用户身份鉴定,只有合法的用户才准许进入计算机系统。对已进入系统的用户,DBMS还要进行存取控制,只允许用户执行合法操作。
(1) 用户身份鉴定
用户身份鉴定是数据库管理系统的最外层安全保护措施。每个用户扎起系统中都有一个用户标识。每个用户标识由用户名和用户标识号两部分组成。UID在系统的整个生命周期内是唯一性的。每次用户要求进入系统时,由系统进行核对,通过鉴定后才能提供使用数据库管理系统的权限。
用户身份鉴定常用方法有:
a . 静态口令鉴别
b . 动态口令鉴别
c . 生物特征鉴别
d . 智能卡鉴别
(2) 存取控制
数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所以未授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现。
a . DBMS的安全子系统
存取控制机制主要包括两方面:
- 定义用户权限,并将用户权限登记到数据字典中。
- 合法权限检查
b . DAC和MAC
大型的DBMS一般都支持C2级的自主存取控制(简记为DAC),有些DBMS同时还支持B1级中的强制存取控制(简记为MAC)。
(3) 自主存取控制方法
SQL标准对自主存取控制提供支持,主要通过SQL的GRANT语句和REVOKE语句来实现。用户权限是由两个要素组成的: 数据库对象和操作类型。在数据库系统中,定义存取权限称为授权。
在非关系系统中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身。再去爱关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据,属性列上的数据),还有数据库模式(包括数据库,基本表,视图和索引的创建等),下表列出了主要的存取权限。
(4) 授权:授予与回收
GRANT语句向用户授予权限,REVOKE语句收回授予的权限。
a . GRANT
GRANT语句的一般格式为:
GRANT<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO<用户>[,<用户>]...
[WITH GRANT OPTION];
其语义为:将对指定操作对象的指定货操作权限授予指定的用户。发出该GRANT语句的可以是DBA,也可以是该数据库对象创建者,也可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体的用户,也可以是PUBLIC,即全体用户。
如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限。
b . REVOKE
授予用户的权限可以由数据库管理员或其他授权者用REVOKE语句收回,REVOKE语句的一般格式为:
REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象化类型><对象名>]...
FROM<用户>[,<用户>]...[CASCADE|RESTRCT];
数据库管理员拥有对数据库中所有对象的所有权限,并可以根据实际情况将不同的权限授予不同的用户。
c . 创建数据库模式的权限
GRANT和REVOKE语句向用户授予或收回对数据的控制权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。
CREATE USER语句一般格式如下:
CREATE USER<username>[WITH][DBA|RESOURCE|CONNECT];
对CREATE USER语句说明如下:
只有系统的超级用户才有权限创建一个新的数据库用户。
新创建的数据库用户有三种权限:CONNECT,RESOURCE和DBA。
权限与可执行的操作可以用下表来总结:
CREATE USER语句不是SQL标准,因此不同的关系数据库管理系统的语法和内容相差甚远。
(5) 数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
在SQL中用CREATE ROLE语句创建角色,用GRANT语句给角色授权,用REVOKE语句回收授予角色的权限。
a . 角色创建
创建角色的SQL语句格式是
CREATEROLE<角色名>
刚刚创建的角色是空的,没有任何内容。
b . 角色授权
角色授权的SQL语句格式是:
GRANT<权限>[,<权限>]..
ON<对象类型>对象名
To<角色>[,<角色>]...
DBA和用户可以利用GRANT语句将权限授予某一个或几个角色
c . 将一个角色授予其他的角色或用户
将角色授权给其他角色或用户的SQL语句格式是:
GRANT<角色1>[,<角色2>]..
TO <角色3>[,<用户1>]...
[WITH ADMIN OPTION]
该语言把角色授予某用户,或授予另一个角色。这样,一个角色(角色3)所拥有的权限就是授予它的全部角色(角色1和角色2)所包含的权限的总和。
一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。
d . 角色权限的回收
回收角色权限的SQL语句格式是:
REVOKE<权限>[,<权限>]...
ON <对象类型><对象名>
FROM<角色>[,<角色>]...
用户可以回收角色的权限,从而修改角色拥有者的权限。
RECOKE动作的执行者或者是角色的创建者,或者拥有这个(些)角色上的ADMIN OPTION。
(6) 强制存取控制方式
自主存取控制(MAC)能够通过授权机制有效地控制对敏感数据的存取。强制存取控制是指系统为保证更高程度的安全性,按照TDL/TCSEC标准中安全策略的要求所采取的强制存取检查手段。
MAC中的主客体
在MAC中,DBMS所管理的全部实体被分为主体和客体两大类。对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记。
- 主体
主体是系统中的活动实体,即包括DBMS所管理的实际用户,也包括代表用户的各进程。主体的敏感度标记为许可证级别。
- 客体
课题是系统中的被动实体,是受主体操纵的,包括文件,基本表,索引,视图等。客体的敏感度标记称为密级。
MAC的存取机制是通过对比主体的Label和客体的Labnel,最终确定主体是否能够存取客体。
存取规则
当某一用户(或某一主体)以标记Label注册系统时,系统要求他对任何客体的存取必须与遵循如下规则:
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
- 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
MAC与DAC的联系
较高安全性级别提供的安全保护要包含较低级别的所有保护,因此在实现MAC时要首先首先DAC,即DAC与MAC共同构成DBMS的安全机制。
系统通过首先进行DAC检查,对通过DAC检查的允许存取的数据库对象再由系统自动进行MAC检查,只有通过MAC检查的数据库对象方可存取。
3. 视图机制
根据不同的用户定义不同的视图,把数据对象限制在一定范围内,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
视图机制间接地实现支持存取谓词的用户权限定义。
4. 审计
定义
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人,时间和内容。
审计事件
(1) 服务器事件
审计数据库服务器发生的事件,包括数据库服务器的启动,停止,数据库服务器配置文件的重新加载。
(2) 系统权限
对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
(3) 语句事件
对SQL语句,如DDL,DML,DQL及DCL语句的审计。
(4) 模式对象事件
对特定模式对象上进行的SELECT或DML操作的审计。
审计功能
(1) 基本功能
(2) 提供多套审计规则
(3) 提供审计分析和报表功能
(4) 审计日志管理功能
(5) 系统提供查询审计设置及审计记录信息的专门视图。
AUDIT语句和NOAUDIT语句
AUDIT语句用来设置审计功能,NOAUDIT语句则取消审计功能。
分类
- 用户级审计
用户级审计是任何用户可设置的审计,主要功能是用户针对自己创建的数据库表或视图进行审计,记录所以用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。
- 系统级审计
系统级审计只能由数据库管理员设置,用以监测成功或失败的登录要求,监测授权和回收操作以及其他数据库级权限下的操作。
5. 数据加密
定义
数据加密是防止数据库数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据-明文变换为不可直接识别的-密文,从而使得不知道解密算法的人无法获知数据的内容。
分类
(1) 存储加密
对于存储加密,一般提供透明和非透明两种存储加密方式。透明存储加密是为了内核级加密保护方式,对用户完全透明;非透明级存储加密则是通过多个加密函数实现
(2) 传输加密
- 链路加密
连理加密对传输数据在链路层进行加密,它的传输信息由报头和报文两部分组成,前者是路由器选择信息,而后者是传送的数据信息。这种方式对报文和报头均加密。
- 端到端的加密
端到端加密对传输数据在发送端加密,接收端解密。它只加密报文,不加密报头。
(3) 通信加密步骤
a . 确定通信双方端点的可靠性
b . 协商加密算法和密钥
c . 可信数据传输
6. 其他安全性保护
(1) 隐蔽信道
隐蔽信道处理内容是强制存取控制未解决的问题。
(2) 数据隐私保护
数据隐私是控制不愿被他人不便知道的个人数据的能力。数据隐私范围很广,涉及数据管理中的数据收集,数据存储,数据处理和数据发布等各个阶段。