数据库___ 数据库安全性
概述
信息安全标准的发展历史
TCSEC标准
TCSEC/TDI标准的基本内容
TCSEC/TDI,从四个方面来描述安全性级别划分的指标
- 安全策略
- 责任
- 保证
- 文档
CC标准
安全性控制
非法使用数据库的情况
- 编写合法程序绕过数据库管理系统及其授权机制
- 直接或编写应用程序执行非授权操作
- 通过多次合法查询数据库从中推导出一些保密数据
数据库管理系统安全性控制模型
数据库安全性控制的常用方法
-
用户标识和鉴定
系统提供的最外层安全保护措施
用户标识:由用户名和用户标识号组成(用户标识号在系统整个生命周期内唯一) -
存取控制
机制组成:
1定义用户权限,并将用户权限登记到数据字典中
2合法权限检查
用户权限定义和合法权检查机制一起组成了数据库管理系统的存取控制子系统 -
视图
-
审计
-
数据加密
常用存取控制方法
-
自主存取控制(Discretionary Access Control ,简称DAC)C2级
用户对不同的数据对象有不同的存取权限
不同的用户对同一对象也有不同的权限
用户还可将其拥有的存取权限转授给其他用户 -
强制存取控制(Mandatory Access Control,简称 MAC)
B1级
每一个数据对象被标以一定的密级
每一个用户也被授予某一个级别的许可证
对于任意一个对象,只有具有合法许可证的用户才可以存取
授权:授予与回收
自主存取控制方法
通过 SQL 的GRANT 语句和REVOKE 语句实现
用户权限组成
- 数据对象
- 操作类型
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
定义存取权限称为授权
创建用户
CREATE USER语句格式
CREATE USER <username>
[WITH][DBA|RESOURCE|CONNECT];
只有系统的超级用户才有权创建一个新的数据库用户
GRANT
一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
语义:将对指定操作对象的指定操作权限授予指定的用户:
全部权限: ALL PRIVILIGES
授予所有用户TO PUBLIC;
WITH GRANT OPTION子句:
指定:可以再授予
没有指定:不能传播
不允许循环授权
REVOKE
授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回
一般格式为:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
cascade收回联机的用户的权限
默认是RESTRICT
数据库角色
数据库角色: 被命名的一组与数据库操作相关的权限,角色是权限的集合
可以为一组具有相同权限的用户创建一个角色,简化授权的过程
角色的创建
CREATE ROLE <角色名>
给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
强制存取控制方法
自主存取控制缺点 可能存在数据的“无意泄露”
原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记
解决:对系统控制下的所有主客体实施强制存取控制策略
强制存取控制方法
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类
-
主体是系统中的活动实体
数据库管理系统所管理的实际用户
代表用户的各进程 -
客体是系统中的被动实体,受主体操纵
文件、基本表、索引、视图
敏感度标记(Label)
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)
敏感度标记分成若干级别
- 绝密(Top Secret,TS)
- 机密(Secret,S)
- 可信(Confidential,C)
- 公开(Public,P)
TS>=S>=C>=P
主体的敏感度标记称为许可证级别(Clearance Level)
客体的敏感度标记称为密级(Classification Level)
强制存取控制规则
- 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
- 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
[例4.14] 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明
先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
在视图上进一步定义存取权限
GRANT SELECT
ON CS_Student
TO 王平;
给张明
GRANT ALL PRIVILIGES
ON CS_Student
TO 张明;
审计(Audit)
什么是审计
启用一个专用的审计日志(Audit Log)
将用户对数据库的所有操作记录在上面
审计员利用审计日志,监控数据库中的各种行为,找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有审计功能
数据加密
数据加密
防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想
根据一定的算法将原始数据—明文(Plain text)变换为不可直接识别的格式—密文(Cipher text)
加密方法
存储加密
传输加密