Database Safety

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 ProfilePP的文档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级

  • 每一个数据对象被标以一定的密级

  • 每一个用户也被授予某一个级别的许可证

  • 对于任意一个对象, 只有具有合法许可证的用户才可以存取

  • 用户不能直接感知或进行控制

3. Machanisms