数据库安全性:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
系统安全保护措施是否有效是数据库系统主要的性能指标之一。
一、数据库安全安全性概论
1. 数据库的不安全因素
(1)非授权用户对数据库的恶意存取和破坏,dbms 提供的安全措施主要包括:用户身份鉴别、存取控制和视图等技术。
(2)数据库中重要或敏感的数据被泄露,dbms系统主要技术有强制存取控制、数据加密存储和加密传输等。
(3)安全环境的脆弱性:数据库的安全性与计算机系统的安全性紧密联系,要建立一套可信计算机系统的概念和标准。
二、数据库安全性控制
计算机系统中,安全措施是一级一级层层设置
系统根据用户表示鉴定用户身份,合法用户才准许进入计算机系统。
数据库管理系统还要进行存取控制,只允许用户执行合法操作。
操作系统有自己的保护措施。
数据以密码形式存储在数据库中。
数据库安全性控制的常用方法(重点)
(1)用户标识和鉴定
(2)存取控制
(3)视图
(4)审计
(5)数据加密
用户身份鉴别(identitication & Authentication)
系统提供的最外层的安全措施
用户识别:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一)
用户身份鉴别的方法
(1)静态口令鉴别:静态口令一般由用户自己设定,这些口令是静态不变的
(2)动态口令鉴别:口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法。
(3)生物特征鉴别:通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等
(4)智能卡鉴别:智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
存取控制
(1)DBMS的存取子系统控制子系统组成
①定义用户权限,并将用户权限登记到数据字典中。
(权限:用户对某一数据对象的操作权利)
②合法权限检查:用户发出存取数据库操作请求
DBMS查找数据字典,进行合法权限检查
(2)常用的存取控制方法
①自主存取控制方式(DAC)
C2级、用户对不同的数据对象有不同的存取权限、不同的用户对同一对象也有不同的权限、用户还可将其拥有的存取权限转授给其他用户。
通过sql的grant和revoke语句实现。
用户权限组成:操作对象,操作类型
授权:定义存取权限
1)授权grant
(1) 将对指定操作对象的指定操作权限授予指定的用户。 grant的发出者:DBA,数据库的创建者(owner),拥有该权限的用户
(2)grant的接受者:一个或多个具体的用户,public(即全体用户) with grant
(3)option子句:指定:可以再授予,没有指定:不可以再授予。
(4)不允许循环授权
eg:把查询student表授权给用户U1
//创造一个用户
//授权
eg:把把对Student表和Course表的全部权限授予用户U2和U3
grant all priviliges
eg:把对表SC的查询权限授予所有用户
to public
eg:把查询Student表和修改学生学号的权限授给用户user1。
eg:把对表SC的INSERT权限授予user1用户,并允许他再将此权限授予其他用户。
2)回收(revoke)
在【例4.10】中U6与U7对SC表的INSERT的权限由U5授予
3)创建数据库模式的权限
(1) DBA在创建用户时实现。
(2) create user 语句格式:
create user 《username》
【with】【DBA|resource|connect】
(3) create user 不是sql标准,在各个系统中是不同的。
4)数据库角色:被命名的一组与数据库操作相关的权限。
角色是权限的集合
可以为一组具有相同权限的用户创建一个角色
简化授权过程
创建角色:
给角色授权:
将一个角色授予其他角色或用户:
一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限
收回角色权限:
一、自主存取控制的缺点:
可能存在数据的“无意泄露”
原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略
二、强制存取控制(MAC):
保证更高程度的安全性
用户不能直接感知或进行控制
适用于对数据有严格而固定密级分类的部门
军事部门
政府部门
②强制存取控制方式(MAC)
B1级、每一个数据对象被标以一定的密级、每一个用户也被授权某一个级别的许可证、对于任意一个对象,只有具有合法许可证的用户才可以存取。
在强存取控制空,DBMS所管理的全部试题被分为主体和客体两大类:
1)主体:系统中的活动实体,即实际用户或代表用户的各进程
2)客体:系统中的被动实体,受主体操纵,即文件、基本表、索引、视图。
敏感度标记(Label)
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
1)绝密(Top Secret,TS)
2)机密(Secret,S)
3)可信(Confidential,C)
4)公开(Public,P)
TS>=S>=C>=P
许可证级别:主体的敏感度标记
密级:客体的敏感度标记
强制存取控制规则:
1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
实现强制存取控制时要首先实现自主存取控制
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
自主存取控制与强制存取控制共同构成数据库管理系统的安全机制
3)
3. 视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义。
5. 数据加密
防止数据库中数据在存储和传输中失密的有效手段
(1)加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—**密文(Cipher text
(2)加密方法
1)存储加密
①透明存储加密:内核级加密保护方式,对用户完全透明将数据在写到磁盘时对数据进行加密,授权用户读取数据时再对其进行解密数据库的应用程序不需要做任何修改,只需在创建表语句中说明需加密的字段即可。
内核级加密方法: 性能较好,安全完备性较高
②非透明存储加密,通过多个加密函数实现
2)传输加密
①链路加密:在链路层进行加密,传输信息由报头和报文两部分组成,报文和报头均加密。
②端到端加密:在发送端加密,接收端解密;只加密报文不加密报头;所需密码设备数量相对较少,容易被非法监听者发现并从中获取敏感信息