数据库的安全性

数据库的安全性 安全性概述 安全性
? 数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏
数据库安全性保护分层
? 物理层
? 人际层
? 网络层
? 操作系统层
? 数据库系统层
数据库安全保护的任务
? 防止未经过授权的人员访问数据,确保敏感信息没有被不“需要知道”的人员读取到
? 防止未经过授权的人员删除和修改数据
? 监视对数据的访问和更改等使用情况
用户标识与鉴别 用户标识与鉴别
? 用户标识与鉴别是系统提供的最外层安全保护措施
? 其基本方法是:系统提供一定的方式让用户标识自己的名字或身份;系统内部记录着所有合法用户的标识;每次用户要求进入系统(与数据库连接)时,由系统核对用户提供的身份标识;通过鉴别的合法用户才能进入系统,建立数据库连接
更新方式的用户标识与鉴别
? 使用动态产生的新口令登录数据库管理系统,比如短信密码或者动态令牌方式
? 利用只有用户具有的物品鉴别用户:可以使用磁卡、IC卡等作为用户身份的凭证,但必须有相应的读卡设备
? 例如,银行广泛使用磁卡+密码鉴别储户身份,允许合法的储户访问他/她的储蓄信息
? 利用用户的个人特征鉴别用户:指纹、视网膜、声波、人脸等都是用户个人特征
自主存取控制 自主存取控制
? 存取控制的任务
? 数据对象和存取权限
? 角色
? 权限的授予和回收容
存取控制的任务
授权
? DCL中提供了相应的授权语句,允许用户自主地定义存取权限,并将用户的授权登记在数据字典中合法权限检查
? 当用户发出存取数据库的操作请求后,DBMS将查找数据字典,根据用户权限进行合法权限的检查;如果用户的操作请求超出了自身的权限,系统将拒绝执行此操作
数据对象和存取权限
数据库的安全性
文章图片

权限的授予和回收
? 授权语句GRANT,语句格式如下:
GRANT <权限列表> ON <对象名> TO <用户/角色列表> [WITH GRANT OPTION] ? 将一种或多种存取权限赋予一个或多个用户或角色
? 可选项WITH GRANT OPTION,表示获得授权的用户还可以把他/她获得的权限转授给其他用户;缺省时,获得权限的用户不能传播权限
数据库的安全性
文章图片

角色
? SQL-99支持角色
? 使用角色进行授权必须先创建角色,将数据库对象上的存取权限授予角色,才能将角色授予用户,使得用户拥有角色所具有的所有存取权限
? SQL-99允许收回赋予角色的存取权,收回授予用户的角色
? 创建角色使用如下形式的语句:
CREATE ROLE <角色名>
使用角色授权
? 使用如下语句将一个或多个角色授予一个或多个用户/角色:
GRANT <角色列表> TO <用户/角色列表>
[WITH ADMIN OPTION]
? 其中<角色列表>是一个或多个角色名,中间用逗号隔开;
? <用户/角色列表>是一个或多个用户名或角色名,中间用逗号隔开
? 可选项WITH ADMIN OPTION允许获得角色授权的用户转授角色权限;缺省时不能转授
数据库的安全性
文章图片

数据库的安全性
文章图片

数据库的安全性
文章图片

强制存取控制 自主存取控制存在的问题
例如:用户A将自己权限内的数据存取权转授给用户B,本来只是允许用户B本人操纵这些数据。但是,用户B复制了这些数据,并在未
征得用户A的同意情况下传播副本给用户C,这就可能导致数据不安全
? 在自主存取控制中,系统只是根据用户对数据库对象的存取权限来进行安全控制,而没有考虑数据库对象本身的安全等级
? 自主存取控制不能阻止副本的非授权传播
强制存取控制
? 强制存取控制(Mandatory Access Control,简称MAC)是系统为保证更高程度的安全性所采取的强制存取检查手段
? MAC是用户不能直接感知或进行控制的,适用于对数据有严格而固定密级分类的部门,如军事部门、政府部门等
主体与客体
? 在MAC 中,DBMS 所管理的全部实体被分为主体和客体两大类:
? 主体是系统中的活动实体,可以是DBMS管理的实际用户或代表用户的各个进程
? 客体是系统中的被动实体,是受主体操纵的对象。如文件、基本表、索引、视图等
敏感度标记
? 对于主体和客体,DBMS为它们的每个实例值指派一个敏感度标记(Label),敏感度标记分成若干级别
? 绝密(Top Secret)、 机密(Secret)、 秘密(Confidential)、公开(Public)
? 主体的敏感度标记称为许可证级别(Clearance Level) ? 客体的敏感度标记称为密级(Classification Level) ? MAC机制就是通过对比主体和客体的敏感度标记,确定主体是否能够存取客体
强制存取控制规则
? 当某一用户(或某一主体)注册进入系统时,系统要求他对任何客体的存取必须遵循下面两条规则:
? (1) 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
? (2) 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
MAC与DAC
? MAC比DAC具有更高的保护级别,因此支持MAC的系统必须支持DAC,由DAC与MAC共同构成了DBMS的安全机制
? 同时提供DAC和MAC保护的系统称为多级安全系统
? 在多级安全系统中,系统首先进行DAC检查,对通过DAC检查的允许存取的数据对象,再由系统自动进行MAC检查,只有通过MAC检查的访问才是允许的
视图机制 基于视图的授权
? 视图可以隐蔽一些不希望用户看到的数据
? 可以与授权结合,限制用户只能访问所需要的数据,实现一定程度的安全保护
? 利用视图实现安全保护的基本思想是:
? 首先通过定义视图,屏蔽掉一部分需要对某些用户保密的数据
? 然后,在视图上定义存取权限,将对视图的访问权授予这些用户而不允许他们直接访问定义视图的基本表
? 需要说明的是
? 创建视图的用户不一定能够获得该视图上的所有权限
? 为了有效地阻止用户透过视图越权访问数据库,创建视图的用户在视图上所获得的权限不能超过他在定义视图的基本表上所拥有的权限
例如,假设用户U对基本表T1拥有修改权(UPDATE),对基本表T2拥有读取数据权(SELECT),若用户U基于T1和T2创建了一个视图 V,则用户U只能查询(SELECT)该视图
其他安全性技术 审计
? 审计启用一个专门的审计日志(Audit Log),自动记录所有用户对数据库的更新操作(插入、删除和修改)。审计日志记录如下信息:
? 操作类型
? 操作终端标识与操作者标识
? 操作日期和时间
? 操作涉及的数据
? 数据的旧值和新值
数据加密
? 数据加密的基本思想:
? 按照一定的加密算法,将原始数据(明文)变换成不可直接识别的格式(密文),使得不知道解密方法的人即使获得数据,也不知道数据的真实内容,从而达到保护数据的目的
? 合法用户使用数据时,可以使用解密算法还原数据
? 目前商品化的DBMS产品都提供了数据加密例行程序,根据用户要求自动对存储和传输的数据进行加密处理。即使没有提供这种加密程序的DBMS,也都会提供加密接口,以方便用户使用其他厂商提供的加密程序对数据进行加密
? 数据的加密和解密是比较费时的,并且占用大量的系统资源,因此一般只对高度机密的数据进行数据加密
加密算法
【数据库的安全性】? 一个好的加密技术应该具有下面的性质:
? 对授权用户来说,加密数据和解密数据相对简单
? 加密模式不应依赖于算法的保密,而是依赖于算法参数,即依赖于密钥
? 对入侵者来说,确定密钥是极其困难的

    推荐阅读