返回 Database
Database 2026-05-19

《数据库系统概论》第六版:第四章(安全性)与第五章(完整性)教学笔记与测验

《数据库系统概论》第六版:第四章(安全性)与第五章(完整性)教学笔记与测验

1. 第四章:数据库安全性核心知识体系梳理

1.1 数据库安全性的内涵

数据库安全性是指保护数据库,以防止不合法使用所造成的数据泄露、篡改或破坏。其核心目标包括:

  • 防止非授权用户对数据库进行恶意存取和破坏。
  • 保护重要或敏感数据,防止其在共享环境下被泄露。
  • 弥补安全环境的脆弱性,通过技术手段解决共享与隐私保护的矛盾。

1.2 TCSEC/TDI 安全级别划分

根据美国可信计算机系统评估标准(TCSEC)及针对数据库的解释(TDI),安全级别由低到高划分为 4 组 7 个等级:

安全级别等级名称定义与核心特征技术要求
D最小保护 (Minimal)最低级别,一切不符合更高标准的系统均归于此。
C1自主安全保护 (Discretionary)非常初级的自主安全保护,实现用户与数据分离。自主存取控制 (DAC)
C2受控存取保护 (Controlled)安全产品最低档。强化 DAC,以个人身份注册负责。DAC审计、资源隔离
B1标记安全保护 (Labeled)真正意义上的安全/可信产品临界点。引入敏感度标记。强制存取控制 (MAC)、审计
B2结构化保护 (Structural)对系统进行结构化保护,建立形式化安全模型。MAC、审计
B3安全域 (Security Domains)建立安全域,进一步提升可信度,抗渗透能力强。MAC、审计
A1验证设计 (Verified)最高级别,要求对系统设计进行数学形式化验证。形式化验证

1.3 数据库安全性控制的五个层级

  1. 事前控制: 通过用户身份鉴别(静态/动态口令、生物特征、智能卡)和简单入侵检测拦截非法请求。
  2. 事中控制: 在 SQL 处理层实施多层存取控制。自主存取控制 (DAC)强制存取控制 (MAC) 共同作用。
  3. 事后控制: 开启审计 (Audit)。记录所有操作行为,供事后追溯和行为监控。
  4. 存储保护: 在存储层对敏感数据实施数据加密。包括透明存储加密(内核级,性能好)和非透明存储加密。
  5. 传输保护: 对网络传输中的敏感数据进行加密。包括链路加密(网络节点间加密)和端到端加密(发送/接收端加解密)。

2. 自主存取控制(DAC)与强制存取控制(MAC)详解

2.1 自主存取控制 (DAC)

  • 核心内涵: “自主”是指用户对于不同的数据库对象有不同的存取权限,且拥有权力的用户可以自主地将其拥有的权限转授给其他用户。
  • 实现机制: 通过 GRANT(授权)和 REVOKE(收回)语句实现。
  • 关键 SQL 语法:
-- 授权:将Student表的查询权限授给U1,并允许U1继续转授
GRANT SELECT ON TABLE Student TO U1 WITH GRANT OPTION;

-- 收回:收回U5对SC表的插入权限,级联收回受其授权的所有权限
REVOKE INSERT ON TABLE SC FROM U5 CASCADE;
  • 数据库角色 (Role): 被命名的一组权限集合。通过将权限授予角色,再将角色授予多个用户,可以极大地简化授权管理过程

2.2 强制存取控制 (MAC)

  • 适用场景: 对数据有严格密级要求的部门(如军事、政府)。
  • 核心要素:
    • 主体 (Subject): 系统中的活动实体(用户、进程)。具有许可证级别 (Clearance Level)
    • 客体 (Object): 系统中的被动实体(表、视图、属性)。被标以密级 (Classification Level)
  • 敏感度标记 (Label): 绝密 (TS) \ge 机密 (S) \ge 可信 (C) \ge 公开 (P)
  • MAC 存取规则:
    1. 读规则: 只有主体许可证 \ge 客体密级时,方可读取(禁止低级别读取高机密)。
    2. 写规则: 只有主体许可证 \le 客体密级时,方可写入(防止高级别主体将敏感数据写入低密级客体造成泄露)。

2.3 执行顺序与逻辑

系统在安全检查时先执行 DAC 检查,通过后再执行 MAC 检查

  • 教学洞察: 之所以按此顺序,是因为高安全等级(B1 及以上)必须兼容低等级(C1/C2)的所有保护要求。

3. 其他安全保护机制

  • 视图机制: 通过创建视图隐藏敏感行或列。例如,建立“计算机系学生视图”,使非相关人员无法看到其他系的信息。
  • 审计 (Audit): C2 级以上系统的必要功能。审计功能是可选的,因为审计操作非常耗费时间和存储空间。DBA 可根据安全需求灵活开启或关闭。
  • 加密技术:
    • 内核级加密: 性能较好,对用户透明。
    • 数据库加密: 防止数据在存储介质(磁盘)被直接读取。

4. 第五章:数据库完整性核心知识体系梳理

4.1 安全性与完整性的区别

  • 安全性: 防范非法用户和非法操作(外部恶意入侵)。
  • 完整性: 保证数据的正确性(符合现实语义)和相容性(同一对象数据一致)。防范对象是不合语义的、错误的无效数据。

4.2 三类完整性约束对比

约束类型定义方法检查时机违约处理策略
实体完整性PRIMARY KEY插入或修改主码时拒绝执行(主码唯一且非空)
参照完整性FOREIGN KEY ... REFERENCES增、删、改相关表时拒绝级联设置为空值
用户定义完整性NOT NULL, UNIQUE, CHECK插入或修改属性时拒绝执行

5. 完整性检查与违约处理细节

5.1 实体完整性与 B+ 树

RDBMS 核心通常会在主码上自动建立 B+ 树索引

  • 效率差异: 若无索引,检查主码唯一性需进行全表扫描(线性时间复杂度),性能极低。利用 B+ 树,系统可进行索引扫描(对数级时间复杂度),极大提升检查效率。

5.2 参照完整性违约情境

根据 Table 5.1,以下四种情况可能破坏参照完整性(以被参照表 Student 和参照表 SC 为例):

  1. 向 SC 表插入元组: 检查外码值是否存在于 Student 表。
  2. 修改 SC 表的外码值: 检查新外码值是否存在于 Student 表。
  3. 从 Student 表删除元组: 检查该主码是否已被 SC 表引用。
  4. 修改 Student 表的主码值: 检查旧主码是否已被 SC 表引用。

5.3 用户定义完整性示例

  • 属性级约束: Grade SMALLINT CHECK (Grade >= 0 AND Grade <= 100)
  • 元组级约束: 实现跨属性检查。例如:“当学生性别为‘男’时,姓名不能以‘Ms.’打头”

5.4 完整性约束命名

正式语法: CONSTRAINT <约束名> <约束类型>

ALTER TABLE Student DROP CONSTRAINT C3; -- 删除原有约束
ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sbirthdate > '1985-01-01'); -- 增加新约束

6. 触发器 (Trigger) 进阶控制

  • 本质: 触发器是用户定义在表上的由事件驱动的特殊过程。
  • SQL 语法示例 (基于 [Example 5.18]):
CREATE TRIGGER SC_T
AFTER UPDATE ON SC -- 触发事件
REFERENCING OLD ROW AS OldTuple, NEW ROW AS NewTuple
FOR EACH ROW -- 行级触发器
WHEN (NewTuple.Grade >= 1.1 * OldTuple.Grade) -- 触发条件
BEGIN
    INSERT INTO SC_U(Sno, Cno, OldGrade, NewGrade)
    VALUES(OldTuple.Sno, OldTuple.Cno, OldTuple.Grade, NewTuple.Grade);
END;
  • 执行顺序: BEFORE 触发器 \rightarrow 激活触发器的 SQL 语句 \rightarrow AFTER 触发器

7. 章节巩固测验(含解析)

一、单选题

  1. 根据 TCSEC 标准,哪一级别被认为是真正意义上的安全或可信产品? A. C2 B. B1 C. B2 D. A1
  2. 在参照完整性中,当删除被参照表中的学生记录时,SC 表中该学生的所有选课记录也自动消失,这种策略是: A. 拒绝 (NO ACTION) B. 级联 (CASCADE) C. 设为空值 (SET NULL) D. 审计 (AUDIT)
  3. 在强制存取控制 (MAC) 的写规则中,防止敏感数据泄露的要求是: A. 主体许可证级别 \ge 客体密级 B. 主体许可证级别 \le 客体密级 C. 主体许可证级别 = 客体密级 D. 主体许可证级别 > 客体密级

二、简答题

  1. 请从防范对象和目的的角度,简述数据库安全性与完整性的区别。
  2. 简述自主存取控制 (DAC) 中“自主”的含义,并说明其相对于 MAC 的不足之处。

答案与解析

一、单选题

  1. 【答案】B 解析: Source Context 明确指出,B1(标记安全保护)级别被认为是真正意义上的安全产品,多冠以“安全”或“可信的”产品称号。
  2. 【答案】B 解析: 级联(CASCADE)操作是指删除/修改被参照表元组时,同步删除/修改参照表中所有导致不一致的元组。
  3. 【答案】B 解析: MAC 写规则遵循“向下读,向上写”逻辑。主体级别 \le 客体级别方可写入,是为了防止具有高密级许可证的主体将高密数据写入低密级客体中,造成信息的向下泄露。

二、简答题

  1. 【答案】
    • 安全性: 防范非法用户和非法操作,目的是保护敏感数据不被外部恶意存取、泄露或破坏。
    • 完整性: 防范不合语义的、不正确的数据,目的是保证数据库内部数据的正确性和相容性。
  2. 【答案】
    • 自主含义: 用户不仅拥有对数据的存取权,还拥有“自主”权,即可以将自己拥有的权限授予给其他用户,并允许其继续传播。
    • 不足: DAC 仅仅基于权限控制,数据本身无密级标记。若一个获得权限的非法用户恶意拷贝数据,DAC 无法阻止这种基于数据流动造成的泄露。MAC 则通过对数据本身的密级标记解决了这一问题。