第四章——数据库安全性
数据库安全性控制的常用方法
- 用户标识和鉴定
用户提供用户名和口令,系统中也存放着同样的东西,用户进入的时候需要提供用户名和口令。 - 存取控制
-
功能
1)定义存取权限:只能够访问他有权限查找的数据
2)检查存取权限:确保用户只执行他的合法操作
在数据库的数据字典里面查找 -
方法
1)自主存取控制
同一用户对于不同的数据对象有不同的存取权限
不同的用户对同一对象也有不同的权限
用户还可将其拥有的存取权限转授给其他用户
(存在有权限,并且权限可以转让)- 存取权限 = 数据对象 + 操作类型
- 授权粒度 操作对象的大小
2)强制存取控制
主体和客体均有相应的安全属性,如主体的可信度与客体的安全标签。
每一个数据对象被标以一定的密级
每一个用户也被授予某一个级别的许可证
对于任意一个对象,只有具有合法许可证的用户才可以存取
(分设主体和客体,主体和客体都需要认证,通过标记的敏感度级别来判断是否可以存取。由于这个敏感度标记不能转让,比权限的分配安全的多。有点像操作系统当中的分配的权限)
在MAC中,DBMS所管理的全部实体被分为主体和客体两大类
主体是系统中的活动实体
1)DBMS所管理的实际用户
2)代表用户的各进程
客体是系统中的被动实体,是受主体操纵的
-
- 文件 * 基表 * 索引 * 视图
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
MAC机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体。
主体的安全属性一般由管理员指定。大量客体的安全属性既可由管理员直接设定,也可以根据一定的规则自动生成。一般主体不能随意更改客体的安全属性。典型的MAC模型包括BLP和Dion模型。
当某一用户(或某一主体)以标记label注册入系统时,系统要求他对任何客体的存取必须遵循下面两条规则:
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。(第5版教材将此款规则变更为小于或等于)
修正规则:
主体的许可证级别 <=客体的密级
主体能写客体
用户可为写入的数据对象赋予高于自
己的许可证级别的密级
一旦数据被写入,该用户自己也不能再读该数据对象了。
强制存取控制的特点
MAC是对数据本身进行密级标记
无论数据如何复制,标记与数据是一个不可分的整体
只有符合密级标记要求的用户才可以操纵数据
从而提供了更高级别的安全性
- 视图
视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,
视图机制更主要的功能在于提供数据独立性,其安全保护功能太不精细,往往远不能达到应用系统的要求。
视图机制与授权机制配合使用:
首先用视图机制屏蔽掉一部分保密数据
视图上面再进一步定义存取权限
间接实现了支持存取谓词的用户权限定义
(我的理解是:在同一张表格里面,有部分数据对用户来说是不应该被看见的,使用视图可以将这部分不该被用户所看尽啊的数据屏蔽。) - 审计
启用一个专用的审计日志(Audit Log)
将用户对数据库的所有操作记录在上面
DBA可以利用审计日志中的追踪信息
找出非法存取数据的人
C2以上安全级别的DBMS必须具有审计功能
(通过操作记录留痕来查找违反规定的人) - 密码存储
有些数据库产品提供了数据加密例行程序
有些数据库产品本身未提供加密程序,但提供了接口
(以加密后的形式存储)
统计数据库安全性
什么是统计数据库?
允许用户查询聚集类型的信息(例如合计、平均值等)。
不允许查询单个记录信息。
(用户可以访问到数据经过统计运算后的值)
统计数据库中特殊的安全性问题
隐蔽的信息通道
推理分析(从合法的查询中推导出不合法的信息)