1. Database Safety
1.1. Intro
数据共享是数据库的一大特点. 由共享产生的安全性问题于是值得考量. 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露, 更改或破坏 .
系统安全保护措施是否有效是数据库系统主要的性能指标之一.
数据库的不安全因素:
- 非授权用户对数据库的恶意存取和破坏: 使用用户身份鉴别, 存取控制和视图等技术
- 数据库中重要或敏感的数据被泄露: 强制存取控制, 数据加密存储和加密传输等.
- 安全环境的脆弱性: 建立一套可信计算机系统的概念和标准 (因为数据库的安全性与计算机系统的安全性紧密联系)
1.2. TCSEC/TDI
Trusted Computer System Evaluation Criteria / Trusted Database Management System Interpretation
TCSEC/TDI安全级别划分按系统可靠或可信程度逐渐增高, 且各安全级别之间具有一种偏序向下兼容的关系
1.3. CC
Common Criteria
CC是一种国际标准, 由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 共同制定. 它是一种针对信息技术产品和系统的评估标准, 旨在为用户提供全球范围内适用的评估方法和标准.
CC将安全功能和保护需求定义为一系列称为保护配置 (Protection Profile, PP) 的文档, PP描述了特定类型的产品或系统所需满足的安全功能要求和安全保证要求. 同时, CC还规定了一系列可操作的评估步骤和具体实施方式, 以便进行评估并生成评估报告. CC包含七个不同的保护等级, 从最低的EAL1到最高的EAL7, 每个等级都有明确的技术需求和验证要求.
与TCSEC/TDI相比, CC更加灵活和通用, 能够适应不同的业务需求和技术发展. 在实践中, CC已经成为国际上公认的信息技术产品和系统评估标准之一, 并被广泛应用于各种领域, 如政府, 军事, 金融, 制造业等.
2. Access Control
2.1. Intro
存取控制/访问控制 (Access Control) 是 DBMS 的一套子系统, 其功能有如下两条:
- 定义用户权限: DBMS提供适当的语言来定义用户对某一数据对象的操作权力, 存放在数据字典中, 称做安全规则或授权规则
- 检查合法权限: 用户发出存取数据库操作请求时, DBMS查找数据字典, 进行合法权限检查
2.2. DAC
自主存取控制 (Discretionary Access Control), C2级
- 用户对不同的数据对象有不同的存取权限
- 不同的用户对同一对象也有不同的权限
- 用户还可将其拥有的存取权限转授给其他用户
具体来说, DAC可以通过 SQL 的 GRANT
语句和 REVOKE
语句实现.
在设计上, 用户权限 = 数据库对象 + 操作类型
关系数据库系统中有如下图所示的存取控制对象
SQL中的授权机制
DBA
- 拥有所有对象的所有权限
- 根据实际情况不同的权限授予不同的用户
用户:
- 拥有自己建立的对象的全部的操作权限
- 可以使用GRANT, 把权限授予其他用户
被授权 (Granted) 的用户:
- 如果具有“继续授权”的许可, 可以把获得的权限再授予其他用户
所有授予出去的权力在必要时又都可用 REVOKE
语句收回
GRANT
语句的使用
REVOKE
语句的使用
创建数据库模式的权限
数据库角色: 一组操作权限的集合
DAC 缺点
可能存在数据的“无意泄露”. 因为这种机制仅仅通过对数据的存取权限来进行安全控制, 而数据本身并无安全性标记
- 解决: 对系统控制下的所有主客体实施强制存取控制策略
2.3. MAC
强制访问控制 (Mandatory Access Control), B1级
-
每一个数据对象被标以一定的密级
-
每一个用户也被授予某一个级别的许可证
-
对于任意一个对象, 只有具有合法许可证的用户才可以存取
-
用户不能直接感知或进行控制