问题的提出
(1)数据库的一大特点是数据可以共享
(2)数据共享必然带来数据库的安全性问题
(3)数据库系统中的数据共享不能是无条件的共享
这就引发了数据库安全性问题
1.数据库安全性概述
数据库的安全性是指保护数据库
以防止不合法使用所造成的数据泄露,更改或破坏
系统安全保护措施是否有效是数据库系统
主要的性能指标之一
1.1数据库的不安全因素
1.2安全标准简介
最重要的两个数据库安全标准
TCSEC标准和CC标准最为重要:
TCSEC(trusted computer system evaluation criteria)1985年美国国防部
可信计算机系统评估标准准则
后来1993年
加拿大,美国,欧洲将这三种准则集合成统一的,恁被广泛使用的IT安全准则
标准,这一行动被称为通用准则CC(common criteria)项目
CC 2.1于1999年被ISO采用国际标准
2001年被我国采用为国家标准
目前CC已经基本取代了TCSEC,成为评估信息产品安全性的主要标准。
从这4个方面来描述安全性级别划分的标准:
安全策略
责任
保证
文档
更具计算机系统对各项指标的支持情况,TCSEC将系统分为
4组(division)7个等级
将一切不符合更高标准的系统归于D组
ep:
dos是安全标准为D级的操作系统
它具有操作系统的基本功能:文件系统,进程调度等
dos在安全性方面几乎没有什么机制来保障
C1级
非常初级的自我安全保护
能够实现用户和数据的分离,进行自我存取控制(DAC),
保护或限制用户权限的传播
现有的商业系统稍作改进即可满足
2.数据库安全性控制
在一般计算机系统中,安全措施是一级一级层层设置的。
例如,在图4.2所示的安全
模型中,用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,
只有合法的用户才准许进入计算机系统;
对已进入系统的用户,数据库管理系统还要进行
存取控制,只允许用户执行合法操作;
操作系统也会有自己的保护措施;
数据最后还可以
以密码形式存储到数据库中。
2.1用户身份鉴别
用户身份鉴别(identification&authentication)
系统提供的最外层安全保护措施
用户标识:由用户名和用户标识号(UID)组成
4.2存取控制
存取控制机制组成:
(1)定义用户权限,并将用户权限登记到数据字典中
用户对某一数据对象的操作权力称为权限
DBMS提供适当的语言来定义用户权限,存放在数据字典中
称作安全规则或授权规则
(2)合法权限检查
用户发出存取数据库操作请求
DBMS查找数据字典,进行合法权限检查
用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统
自主存取控制方法
(1)用户对不同的数据对象有不同的存取权限
(2)不同的用户对同于同一对象也有不同的权限
(3)用户还可以将其拥有的存取权限转授给其他用户
结构化查询语言通过
grant语句和revoke语句实现自主存取控制
数据库权限是由两个部分组成的:
对象和操作类型
所以grant语句:
就是对指定操作对象的指定操作权限授予给指定的用户
有with grant option
则可以再转授权限,没有指定,则不能传播权限
DBMS不允许循环授权
能够进行权限授予的人有:
数据库管理员
数据库对象创建者
拥有给权限的用户
接受该权限的用户可以是
一个或多个具体用户
或者PUBLIC
最简单的一种授权操作:
将一种权限授予一个用户
全部权限可以用简单的
all privileges来代表
一次向多个用户传播多种同类对象的权限
所有用户可以用public来代表
记住对属性列的授权必须明确指出对应的属性列名
(一次完成了对基本表和属性列这些不同对象的授权
属性列对象放在权限名称后面)
with grant option
我们由上可知:
U5不仅拥有了对表SC的insert权限,还可以传播此权限
前面我们讨论了如何授予权限
授予的权限可以由数据库管理员或者其他授权这用revoke语句收回
注意这还有可选选项
cascade:级联回收——如果回收了这个用户的权限,那么你还可以把他
传播出去的权限回收回来
回收权限时,如果使用了级联回收,那么如果出现循环授权,那么
会找不到起始点。
前面的例子中,U5将insert权限传播给了U6和U7
DBA想把这些完全相同的权限
授权给不同的用户
非常麻烦!!!!
to 的对象不再是用户,而是特定的用户
授予者是角色的创建者或拥有在这个角色上的ADMIN
OPTION
除了对学生表的更新,插入和查找
我们现在还增加了
delete权限
财务人员可以创建一个工资副本表
将原本工资表上的数据查询到上面(变成它自己的数据)
再将副本表的查询权限设为公开
自主存取控制仅仅通过对数据的存取权限来进行安全控制
数据本身并无安全性标识
原来是机密的信息,把他存到公开中。那么都能看到机密信息
数据的密级标记会被带过去
就不会数据泄密了
4.3视图机制
可以对不同的用户定义不同的视图,把数据对象限制在一定的范围内。
视图机制间接地实现支持存取谓词的用户权限定义。
例如,
在某大学中
假定王平老师只能检索计算机系学生的信息,
系主任张明具有检索和增删改计算机系学生信息的所有权限。
这就要求系统能支持“存取谓词”的用户权限定义。在不直接支持存取
谓词的系统中,可以先建立计算机系学生的视图CS_ Student, 然后在视图上进一步定
义存取权限。
这样我们就可以先建立视图
然后将视图的不同权限授权给王平和张明老师
4.4审计
审计功能是DBMS达到C2以上安全级别必不可少的一项指标
审计功能是把用户对数据库的所有操作放到审计日志(audit log)中
审计员可以用审计日志监控数据库中的各种行为
重现导致数据现有状况的一系列事件
找除非法存取数据的人,时间和内容
1.审计事件
2.审计功能
3.audit语句和noaudit语句
audit语句用于设置审计功能
noaudit语句取消审计功能
审计一般可分为用户级审计和系统级审计:
用户级审计是任何用户可设置的审计:主要是用户对自己创建的数据库表
或视图进行审计,记录用户对这些表或视图的成功或不成功的访问要求以及
各种类型的SQL操作。
系统级审计只能由数据管理员设置,是以监测成功或失败的登陆要求,
检测授权和收回操作以及其他数据库级权限下的操作
审计什么
audit DML
on 对象
审计设置以及审计日志一般都存储在数据字典中。
必须把审计开关打开(即把系统参数audit _trail 设为true),
才可以在系统表SYS_ AUDITTRAIL中查看到审计信息。
数据库安全审计系统提供了一种事后检查的安全机制。
安全审计机制将特定用户或者
特定对象相关的操作记录到系统审计日志中,作为后续对操作的查询分析和追踪的依据。
通过审计机制,可以约束用户可能的恶意操作。
4.5数据加密
对于高敏感数据:财务数据,军事数据等
还可以采用数据加密技术
数据加密是防止数据库数据在存储和传输中失密的有效手段
加密的基本思想是
更具一定的算法将原始数据——明文(plain text)
变换为不可直接识别的格式——密文(cipher text)
从而使得不知道解密算法的人无法获知数据的内容
数据加密包括存储加密和传输加密
1.存储加密
提供透明和不透明两种存储加密方式
透明存储加密是内核级加密保护方式,对用户完全透明
而非透明存储加密则是通过多个加密函数实现的。
2.传输加密
在客户/服务器结构中,
数据库用户与服务器之间若采用明文方式传输数据,容易被网
络恶意用户截获或篡改,存在安全隐患。
因此,为保证二者之间的安全数据交换,数据库
管理系统提供了传输加密功能。
常用的传输加密方式如链路加密和端到端加密。
其中,链路加密对传输数据在链路层进行加密,
它的传输信息由报头和报文两部分组成,前者是路由选择信息,而后者是传送
的数据信息。这种方式对报文和报头均加密。
相对地,端到端加密对传输数据在发送端加
密,接收端解密。它只加密报文,不加密报头。
与链路加密相比,它只在发送端和接收端
需要密码设备,而中间节点不需要密码设备,因此它所需密码设备数量相对较少。但这种
方式不加密报头,从而容易被非法监听者发现并从中获取敏感信息。
上图是基于安全套接协议(security socket layer,SSL)的数据库管理系统可信方案
采用端到端的传输加密方式
通信双方协商建立可信连接
一次会话采用一个密钥
传输数据在发送端加密,接收端解密
有效降低重放攻击和恶意篡改的风险
实现思路包含:
数据库加密使用已有的密码技术和算法对数据库中存储的数据和传输的数据进行保
护。
加密后数据的安全性能够进一步提高。
即使攻击者获取数据源文件,也很难获取原始
数据。
但是,数据库加密增加了查询处理的复杂性,查询效率会受到影响。
加密数据的密钥的管理和数据加密对应用程序的影响也是数据加密过程中需要考虑的问题。
6.其他安全保护
在自主存取控制和强制存取控制外
还有推理控制以及数据库应用中的隐蔽信道和数据隐私保护技术
利用低安全等级信息推导出
函数依赖关系的推理出
其无权访问的高安全等级信息