1. Database Safety
1.1. Intro
数据共享是数据库的一大特点. 由共享产生的安全性问题于是值得考量. 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露
系统安全保护措施是否有效是数据库系统主要的性能指标之一.
数据库的不安全因素:
- 非授权用户对数据库的恶意存取和破坏: 使用用户身份鉴别
存取控制和视图等技术、 - 数据库中重要或敏感的数据被泄露: 强制存取控制
数据加密存储和加密传输等.、 - 安全环境的脆弱性: 建立一套可信计算机系统的概念和标准 (因为数据库的安全性与计算机系统的安全性紧密联系)
1.2. TCSEC/TDI
Trusted Computer System Evaluation Criteria / Trusted Database Management System Interpretation
TCSEC/TDI安全级别划分按系统可靠或可信程度逐渐增高, 且各安全级别之间具有一种偏序向下兼容的关系
![](https://naturalifica.oss-cn-nanjing.aliyuncs.com/~/Users/wuchentian/SoloLearning/Blog/source/imgs/image-20230609212301309.png)
![我寻思这玩意不要背吧](https://naturalifica.oss-cn-nanjing.aliyuncs.com/~/Users/wuchentian/SoloLearning/Blog/source/imgs/image-20230609212426902.png)
1.3. CC
Common Criteria
CC是一种国际标准
CC将安全功能和保护需求定义为一系列称为保护配置
与TCSEC/TDI相比
![](https://naturalifica.oss-cn-nanjing.aliyuncs.com/~/Users/wuchentian/SoloLearning/Blog/source/imgs/image-20230609213011545.png)
2. Access Control
2.1. Intro
![数据库系统的安全性措施](https://naturalifica.oss-cn-nanjing.aliyuncs.com/~/Users/wuchentian/SoloLearning/Blog/source/imgs/image-20230609213137248.png)
存取控制/访问控制 (Access Control) 是 DBMS 的一套子系统, 其功能有如下两条:
- 定义用户权限: DBMS提供适当的语言来定义用户对某一数据对象的操作权力, 存放在数据字典中, 称做安全规则或授权规则
- 检查合法权限: 用户发出存取数据库操作请求时, DBMS查找数据字典, 进行合法权限检查
2.2. DAC
自主存取控制 (Discretionary Access Control), C2级
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可将其拥有的存取权限转授给其他用户
具体来说, DAC可以通过 SQL 的 GRANT
语句和 REVOKE
语句实现.
在设计上, 用户权限 = 数据库对象 + 操作类型
关系数据库系统中有如下图所示的存取控制对象
![](https://naturalifica.oss-cn-nanjing.aliyuncs.com/~/Users/wuchentian/SoloLearning/Blog/source/imgs/image-20230609225713021.png)
SQL中的授权机制
DBA
- 拥有所有对象的所有权限
- 根据实际情况不同的权限授予不同的用户
用户:
- 拥有自己建立的对象的全部的操作权限
- 可以使用GRANT
把权限授予其他用户,
被授权 (Granted) 的用户:
- 如果具有
继续授权“ 的许可” 可以把获得的权限再授予其他用户,
所有授予出去的权力在必要时又都可用 REVOKE
语句收回
GRANT
语句的使用
REVOKE
语句的使用
创建数据库模式的权限
数据库角色: 一组操作权限的集合
DAC 缺点
可能存在数据的
- 解决
对系统控制下的所有主客体实施强制存取控制策略:
2.3. MAC
强制访问控制 (Mandatory Access Control), B1级
-
每一个数据对象被标以一定的密级
-
每一个用户也被授予某一个级别的许可证
-
对于任意一个对象, 只有具有合法许可证的用户才可以存取
-
用户不能直接感知或进行控制