目录
前言:
数据库的安全性是指保护数据库以防止不合法使用造成数据的泄漏、更改或破坏。
数据库系统中由于大量数据集中存放,而众多的用户直接共享数据,从而使得数据库安全问题尤为突出。
一、数据库安全概述
1.数据库的不安全因素
(1)非授权用户对数据库的恶意存取和破坏。
(2)数据库中重要或敏感的数据被泄漏。
(3)安全环境的脆弱性
2.安全标准
1999年CC(通用准则) V2.1版成为国际标准(2001年被我国采用为国家标准)。
TCSEC/TDI安全级别划分:
二、数据库安全性控制
数据库安全性主要包括用户身份鉴定、多层存取控制、审计、视图和数据加密等。
1.用户身份鉴定
用户身份鉴定是数据库管理系统提供的最外层安全保护措施。每个用户在系统中拥有一个用户标识(由用户名和用户标识号两部分组成)。
常用的用户身份鉴定方法:
(1)静态口令鉴别
静态口令一般由用户自己设定,鉴别时按要求输入正确的口令,系统将允许用户使用数据库管理系统。例如:电话、生日等
(2)动态口令鉴定
每次鉴别时均使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。例如:短信密码、动态令牌等
(3)生物特征鉴别
采用图像处理和模式识别等技术实现基于生物特征的认证,例如:指纹、虹膜等
(4)智能卡鉴别
登录数据库管理系统时用户将智能卡插入专用的读卡器进行身份验证。
2.存取控制
存取控制机制包括定义用户权限和合法权限检查两部分。
(1)定义用户权限(用户对某一数据对象的操作权力),将用户权限登记到数据字典中
(2)合法权限检查(用户发出存取数据库的操作请求后,数据库管理系统就和查找数据字典,进行合法权限检查,对超出权限的操作,系统拒绝执行此操作)
3.自主存取控制
SQL标准对于自主存储控制提供了相关支持,通过 grant 和 revoke 实现。
用户权限:数据库对象+操作类型
授权:定义存取权限
在非关系数据库中,用户只能对数据进行操作,存取控制的数据库对象也仅限于数据本身。
在关系数据库中,存取控制的对象不仅有数据本身(基本表的数据、属性列上的数据),还有数据库模式(包括模式、基本表、视图、索引等的创建)
关系数据库系统中的存取权限:
(1)GRANT(向用户授予对数据的操作权限)
一般语法规则:
GRANT <权限>...
ON <对象类型><对象名>,..
TO <用户>
[with grant option]
【注意】
接受权限的用户可以是一个或多个具体用户,也可以是public(全体用户)。
指定了with grant option,则获得某种用户权限的用户还可以将此权限再授予其他用户(不允许循环授权)。如果没有此语句,获得某权限的用户只能使用该权限,不能传播权限。
(2)REVOKE(回收用户对数据的操作权限)
一般语法规则:
REVOKE <权限>...
ON <对象类型><对象名>,..
FROM <用户>...[CASCADE|RESTRICT]
【注意】
cascade(级联)
用户可以自主决定将数据的存取权限授予任何人、决定是否授权的权限授予别人,因此称这种存取控制为自主存取控制。
(3)数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
①角色创建
create role <角色名>
②给角色授权
grant <权限1>,<权限2>...
ON <对象类型>对象名
TO <角色1>,<角色2>...
③将一个角色授予其他的角色或用户
grant <角色1><角色2>...
TO <角色3><用户>...
[with admin option]
授予者或角色创建者拥有这个角色的admin option。
指定了with admin option子句,则获得某种权限的角色或用户还可以把这个权限再授予其他角色。
④角色权限的回收
REVOKE <权限1>,<权限2>...
ON <对象类型>对象名
from <角色1>,<角色2>...
4.强制存取控制
强制存取控制中,数据库管理系统所管理的全部实体分为主体和客体两大类。
主体:系统中的活动实体,既包括数据库管理系统所管理的实际用户,也包括代表用户的各进程。
客体:系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。
对于主体和客体,数据库管理系统为它们每个实例指派一个敏感度标记。
敏感度标记分级:绝密(Top Secret,TS),机密(Secret,S),可信(Confidential,C),公开(public,P)密级逐次递减
强制存取控制对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供更高级别的安全性。
5.视图机制
可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。即通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
6.审计
审计功能是数据库管理系统达到C2以上安全级别必不可少的指标。
审计功能把用户对数据库的所有操作自动记录下来放入审计日志(audit log)。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。
审计通常是很费时间和空间的,所有数据库管理系统往往都将审计设置为可选特征,允许数据库管理员根据具体应用对安全性的要求灵活打开或关闭审计功能。、
(1)审计事件
①服务器事件:数据库服务器的启动、停止、服务器配置文件的重新加载
②系统权限:对系统拥有的结构或模式对象进行操作的审计
③语句事件:对特定模式对象进行select和数据定义语言操作的审计。
(2)审计功能
- 提供多种审计阅读方式
- 提供多套审计规则
- 提供审计分析和报表功能
- 审计日志管理功能(防止审计员误删审计记录)
- 系统提供查询审计设置及审计记录信息的专门视图。
(3)audit(设置审计功能)和NOAUDIT(取消审计功能)
数据库安全审计系统提供了一个事后检查的安全机制。
7.数据加密
加密基本思想:根据一定算法将原始数据(明文)变换为不可直接识别的格式(密文),从而使得不知道解密算法的人无法获知数据的内容。
数据加密包括存储加密和传输加密。
(1)存储加密
存储加密一般提供透明和非透明两种存储加密方式。
透明加密是内核级加密保护方式,对用户完全透明;非透明加密是通过多个加密函数实现。
透明存储加密是数据在写到磁盘时对数据进行加密,授权用户读取数据时在对其进行解密。
(2)传输加密
在客户/服务器结构中,数据库用户与服务器之间若采用明文方式传输数据,容易被网络恶意用户截获或篡改,存在网络安全隐患。因此为了保证两者之间安全数据交换,数据库管理系统提供了传输加密功能。
①链路加密
链路加密对传输数据在链路层进行加密,它的传输信息由报头和报文两部分组成,前者是路由选择信息,而后者是传送的数据信息。这种方式对报头和报文都加密。
②端到端加密
端到端加密对传输数据在发送端加密,接收端解密。它只对报文加密,不加密报文头。(容易被非法监听者发现并从中获取敏感信息)
基于安全套接层协议SSL(Security Socket Layer)的数据传输方案。通信双方协议建立可信连接,一次会话采用一个密钥,传输数据在发送端加密,接收端解密,有效降低重放攻击和恶意篡改
8.其他安全保护
(1)推理控制
推理控制机制用来避免用户利用其能够访问的数据推知更高密级的数据,即用户利用其被允许的多次查询的结果,结合相关领域背景知识以及数据之间的约束,推导出其不能访问的数据。
(2)隐蔽通道
利用未被强制存取控制的SQL执行后反馈的信息进行间接信息传递。
高安全等级用户按事先约定方式主动向低安全等级用户传输信息,使得信息流从高安全等级向低安全等级流动,从而导致高安全等级敏感信息泄露。
(3)数据隐私
控制不愿被他人知道或他人不便知道的个人数据的能力。