4.1 数据库安全性概述
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改和破坏
4.1.1 数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
4.2 数据库的安全性控制
4.2.1 用户身份鉴别
- 静态口令鉴别
- 动态口令鉴别
- 生物特征鉴别
- 智能卡鉴别
4.2.2 存取控制
存取控制机制主要包括定义用户权限和合法权限检查两部分。
- 定义用户权限,并将用户权限登记到数据字典中。
- 合法权限检查。每当用户发出存取数据库的操作请求之后,数据库管理系统查找数据库字典,根据安全规则进行合法权限检查,若用户的请求超出了定义的权限,系统将拒绝执行此操作。
定义用户权限和合法权限检查一同组成了数据库管理系统的存储控制子系统。
存取控制子系统的两类方法:
- 自主存取控制(DAC):用户对于不同的数据库对象有不同的存取权限,不同的用户对于同一种对象也有不同的权限,而且用户还可以将其拥有的存取权限传授给其他用户。
- 强制存取控制(MAC):在每一个数据库对象中被标以一定的密级,每一个用户也被授予一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。
4.2.3 自主存取控制方法
用户权限由两个要素组成:数据库对象、操作类型
定义存取权限称为授权
GRANT<权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]
[WITH GRANT OPTION];
SQL中使用GRANT和REVOKE向用户授予或收回权限。子句WITH GRANT OPTION赋予了用户传播权限,但不允许循环授权。REVOKE提供了级联选项,收回传播出去的权限。这样的用户决定数据存取权限的做法称为自主存取控制。
创建数据库模式的权限只有超级用户(DA)有,分为CONNECT,RESOURCE和DBA三种。
4.2.5 数据库角色
数据库角色是一组权限的集合,可以简化授权过程,使自主授权更加灵活方便
缺点:数据本身并无安全性标记
4.2.6 强制存取控制方法
- 主体:用户
- 客体:数据
强制存取控制是对数据本身进行密级标记,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据。
4.3 视图机制
为不同的用户定义不同的视图,把数据对象限制在一定的范围内,从而自动对数据提供一定程度的安全保护。
4.4 审计
因为任何系统地安全保护措施都不是完美无缺的,蓄意盗窃、破坏数据的人总是想方设法打破控制。审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重视导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容。
审计事件:
- 服务器事件:服务器的启动停止、配置文件的重新加载
- 系统权限: 对系统拥有的结构或模式对象进行操作的审计,要求该操作的权限是通过系统权限获得的。
- 语句事件
- 模式对象事件
审计功能:
- 基本功能
- 多套审计规则
- 审计分析和报表功能
- 审计日志管理功能
- 查询审计设置和审计记录信息的专门视图
4.5 数据加密
1. 存储加密
- 透明存储加密:写到磁盘时对数据进行加密
- 非透明存储加密:通过多个加密函数实现
2. 传输加密:链路加密和端对端加密等
4.6 统计数据安全性
- 推理控制:利用函数依赖关系,如平均值和控制其中一个变量可以得出具体的数值
- 隐蔽信道
- 数据隐私:控制不愿被他人知道或他人不便知道的个人数据的能力