文章目录
0:参考文章链接
1:数据库安全性概述
(1)为什么要研究数据库的安全性?
- 问题提出
- 共享—>安全性问题
- 不能无条件共享—>例如:军事秘密、国家机密、新产品实验数据、
市场需求分析、市场营销策略、销售计划、
客户档案、医疗档案、银行储蓄数据
- 数据库的不安全因素:
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
(2)安全标准简介
- TCSEC/TDI标准划分指标:安全策略、责任、保证、文档
- TCSEC/TDI安全级别划分: D < C1 < C2 < B1 < B2 < B3 < A1(按系统可信或可靠程度逐渐增高)
- B1(标记安全保护):该级别产品才被认为是真正意义上的安全产品
2:数据库安全性控制概述
(1)计算机系统的安全模型
(2)数据库管理系统安全性控制模型
3:数据库安全性控制的常用方法:
(1)用户标识与鉴别
- 最外层安全保护措施
- 用户标识:用户名(user name)和用户标识号(UID)两部分组成。
- UID在系统的整个生命周期内是唯–的。
- 系统内部记录着所有合法用户的标识
- 口令:可理解为密码
- 用户标识和口令易被窃取
常用的用户身份鉴别方法:
- ① 静态口令鉴别
- ② 动态口令鉴别:
- ③ 生物特征鉴别:
- ④ 智能卡鉴别:
(2)存取控制
- 只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这主要通过数据库系统的存取控制机制实现。
存取控制机制组成:
- 定义用户权限:并将用户权限登记到数据字典中;
- 合法权限检查:数据库管理系统查找数据字典,根据安全规则进行合法权限检查
定义用户权限和合法权限检查机制一起组成了数据库管理系统的存取控制子系统。
-
C2级的数据库管理系统支持自主存取控制( Discretionary Access Control, DAC),
-== B1级的数据库管理系统支持强制存取控制==( Mandatory Access Control, MAC)。 -
这两类方法的简单定义是:
- (1)在自主存取控制方法中,用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。
- (2)在强制存取控制方法中,每一个 数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象, 只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。
①自主存取控制方法—DAC
- 通过 SQL 的 GRANT语句和 REVOKE语句实现
- 用户权限组成
- 数据对象
- 操作类型
- 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
- 定义存取权限称为授权
- 关系数据库系统中的存取权限
① 授权与回收—针对用户
-
1️⃣ 授权—GRANT
-
2️⃣ 回收—REVOKE
授予的权限可以由DBA或其他授权者用REVOKE语句收回
注意:将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回,级联(CASCADE)收回了U6和U7的INSERT权限,否则系统拒绝执行该命令。
-
3️⃣ 小结:SQL灵活的授权机制
- DBA:
拥有所有对象的所有权限
不同的权限授予不同的用户 - 用户:拥有自己建立的对象的全部的操作权限
GRANT:授予其他用户 - 被授权的用户
“继续授权”(WITH GRANT OPTION)许可:可以再授予给其它用户 - 所有授予出去的权力在必要时又都可用REVOKE语句收回
- DBA:
-
4️⃣ 创建数据库模式的权限
- 三种权限:connect、resource和DBA
- 三种权限:connect、resource和DBA
②数据库角色—针对角色
数据库角色:被命名的一组与数据库操作相关的权限
- 角色是权限的集合 ,结合我截得黑色背景图片了解
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
1️⃣ 角色的创建
2️⃣ 给角色授权
3️⃣ 将一个角色授予其他的角色或用户
4️⃣ 角色权限的收回
②强制存取控制方法—MAC
自主存取控制缺点:
- 可能存在数据的“无意泄露”
强制存取控制(MAC):
- 保证更高程度的安全性,适用于军事部门、*部门
在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。
-
主体是系统中的活动实体
DBMS所管理的实际用户
代表用户的各进程 -
客体是系统中的被动实体,是受主体操纵的
文件
基表
索引
视图
对于主体和客体,数据库管理系统为它们每个实例(值)指派一个敏感度标记(label)。
- 敏感度标记(Label)分为若干个级别:
绝密(Top Secret)
机密(Secret)
可信(Confidential)
公开(Public) - 主体的敏感度标记称为许可证级别(Clearance Level)
- 客体的敏感度标记称为密级(Classification Level)
- 密级:T>=S>=C>=P
强制存取控制规则:
- (1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
- (2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体
- 修正规则
主体的许可证级别 <=客体的密级→ 主体能写客体
规则的共同点:
- 禁止了拥有高许可证级别的主体更新低密级的数据对象
注意:
- 强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
(3)DAC与MAC共同构成DBMS的安全机制
实现强制存取控制时要首先实现自主存取控制
- 原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
- 先进行DAC检查,通过DAC检查的数据对象再由系统进行MAC检查,只有通过MAC检查的数据对象方可存取。
4:视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
- [例14]建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明
先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student AS
SELECT *
FROM Student
WHERE Sdept='CS';
- 在视图上进一步定义存取权限:
GRANT SELECT
ON CS_Student
TO 王平 ;
GRANT ALL PRIVILIGES
ON CS_Student
TO 张明;
5:审计(Audit) —日志
什么是审计:
-
审计日志(Audit Log);
将用户对数据库的所有操作记录在上面 - DBA利用审计日志
找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有
审计分为:
- 用户级审计
- 系统级审计
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
6:数据加密
- 数据加密
防止数据库中数据在存储和传输中失密的有效手段 - 数据加密分为存储加密和传输加密
7:统计数据库安全性
数据库安全机制的设计目标:
试图破坏安全的人所花费的代价 >> 得到的利益