04.数据库安全性
数据库安全性概述
数据库的不安全因素
安全标准简介
-
TESEC标准
- 四组七个等级:D、C(C1, C2)、B(B1, B2, B3)、A(A1)
-
CC标准
数据安全性控制
-
非法使用数据库的情况
- 编写合法程序绕过数据库管理系统及其授权机制
- 直接或编写应用程序执行非授权操作
- 通过多次合法查询数据库从中推导出一些保密数据
-
计算机系统的安全模型
-
数据库有关的安全性
-
存储控制流程
- 首先, 数据库管理系统对提出SQL访问请求的数据库用户进行身份鉴别, 防止不可信用户使用系统
- 然后, 在SQL处理层进行自主存取控制和强制存取控制, 进一步可以进行推理控制
- 还可以对用户访问行为和系统关键操作进行审计, 对异常用户行为进行简单入侵检测
用户身份鉴别
存取控制
-
用户权限定义和合法权检测机制一起组成了数据库管理系统的存取控制子系统
- 定义用户权限, 并将用户权限登记到数据字典中
- 权限是指用户对某一数据对象的操作权力
- DBMS提供适当的语言来定义用户权限, 存放在数据字典中
- 合法权限检查
- 用户发出存取数据库操作请求
- DBMS查找数据字典, 进行合法权限检查
- 定义用户权限, 并将用户权限登记到数据字典中
-
常用存取控制方法
- 自主存取控制 (DAC) C2级支持
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对相同的对象也有不同的权限
- 用户可将其拥有的存取权限转授给其他用户
- 强制存取控制 (MAC) B1级支持
- 每一个数据对象被标以一定的密级
- 每一个用户也被授予某一个级别的许可证
- 对于任意一个对象, 只有具有合法许可证的用户才可以存取
- 自主存取控制 (DAC) C2级支持
自主存取控制方法
-
通过
GRANT
和REVOKE
实现自主存取控制 -
用户权限的组成
- 数据对象
- 操作类型
授权: 授予与回收
-
GRANT
: 对指定操作对象的指定操作权限授予指定的用户1
2
3
4GRANT <权限>[, <权限>]...
ON <对象类型> <对象名>[, <对象类型> <对象名>]...
TO <用户>[, <用户>]...
[WITH GRANT OPTION];-
发出
GRANT
法人可以是数据库管理员, 数据库对象创建者, 拥有该权限的用户 -
接收权限的用户可以是一个或多个具体用户,
PUBLIC
(即全体用户) -
WITH GRANT OPTION
: 该权限是否可以再授予其他用户
-
-
REVOKE
: 授予的权限可以由数据库管理员或其他授权者收回1
2
3
4REVOKE <权限>[, <权限>]...
ON <对象类型> <对象名>[, <对象类型> <对象名>]...
FROM <用户>[, <用户>]...
[CASCADE|RESTRICT]; -
创建数据库模式的权限
-
数据库管理员在创建用户时实现对创建数据库模式的权限
-
CREATE USER
语句模式1
2CREATE USER <username>
[WITH] [DBA|RESOURCE|CONNECT]; -
默认
CONNECT
: 只能登录数据库 -
RESOURCE
: 能创建基本表和视图 -
DBA
: 超级用户
-
数据库角色
-
被命名的一组与数据库操作相关的权限, 角色是权限的集合
-
可以为一组具有相同权限的用户创建一个角色, 简化授权过程
-
角色的创建
CREATE ROLE <角色名>;
-
给角色授权
1
2
3GRANT <权限>[, <权限>]
ON <对象类型> 对象名
TO <角色>[, <角色>]...; -
将一个角色授予其他的角色或用户
1
2
3GRANT <角色1>[, <角色2>]...
TO <角色3>[, <用户1>]...
[WITH ADMIN OPTION];-
WITH ADMIN OPTION
: 该权限是否可以再授予其他用户或角色
-
-
角色权限的收回
1
2
3REVOKE <权限>[, <权限>]
ON <对象类型> 对象名
FROM <角色>[, <角色>]...;
强制存取控制方法
-
自主存取控制缺点
- 这种机制仅仅通过对数据的存取权限来进行安全控制, 而数据本身并无安全性标记
-
强制存取控制 (MAC)
- 主体 与 客体
- 敏感度标记
- 为每个实例指派一个标记
- TS >= S >= C >= P
- 主体的敏感度标记称为 许可证级别
- 客体的敏感度标记称为 密级
-
强制存取控制规则
- 仅当主体的许可证级别 >= 客体的密级时, 该主体才能读取相应的客体
- 仅当主体的许可证级别 <= 客体的密级时, 该主体才能写相应的客体
-
DAC + MAC安全检查
视图机制
-
把保密数据对无权存取这些数据的用户隐藏起来
-
间接地实现支持存取谓词的用户权限定义
审计
-
审计日志 : 记录对数据库的所有操作记录
-
C2以上安全级别的DBMS必须具有审计功能
-
费时间和空间
-
审计事件
- 服务器事件
- 系统权限
- 语句事件
- 模式对象事件
-
审计功能
-
审计分类
- 用户级审计
- 系统级审计
-
AUDIT
语句设置审计功能 -
NOAUDIT
语句取消审计功能 -
审计设置和审计日志存储在数据字典中
数据加密
-
将原始数据 – 明文, 变换为不可直接识别的格式 – 密文
-
存储加密
- 透明存储加密
- 非透明存储加密
-
传输加密
- 链路加密
- 端到端加密
其他安全性措施
-
推理控制
-
隐蔽信道
-
数据隐私保护