Lecture 3:数据库安全性
408 学习笔记:Lecture 3:数据库安全性。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。
本页目录
描述:本节说明强制存取控制中的主体、客体、许可证级别与密级,整理“不向上读、不向下写”的保密规则,并说明视图与授权的配合方式、审计日志的记录内容和追责作用。
3.1 数据库安全性目标
数据库安全性要防止未授权用户访问、修改、破坏或泄露数据。
主要目标可以用 CIA 三要素概括:
- 机密性(Confidentiality):数据只向有权主体公开。
- 完整性(Integrity):数据不能被未授权篡改。
- 可用性(Availability):授权用户需要时能够使用数据和服务。
常见措施包括身份鉴别、权限授予、存取控制、视图、加密和审计。本课件重点讨论强制存取控制、视图与审计。
3.2 自主与强制存取控制
3.2.1 自主存取控制 DAC
自主存取控制(Discretionary Access Control,DAC)根据用户身份和对象权限表决定访问,权限通常可由对象所有者或管理员授予、收回和转授。
例如 SQL 的:
GRANT SELECT ON Student TO user_a;
REVOKE SELECT ON Student FROM user_a;
DAC 灵活,但若主体能够继续转授权,信息可能沿授权链扩散。
3.2.2 强制存取控制 MAC
强制存取控制(Mandatory Access Control,MAC)由系统根据主体许可证级别和客体密级强制判断,普通用户不能自行改变安全规则。
MAC 常用于具有分级保密要求的系统。
3.3 主体与客体
3.3.1 主体 Subject
主体是系统中的活动实体,能够主动发起访问。
课件列举:
- DBMS 管理的实际用户。
- 代表用户运行的进程或会话。
主体被赋予许可证级别/安全级别(clearance)。
3.3.2 客体 Object
客体是被主体访问和控制的被动实体。
课件列举:
- 文件。
- 基本表。
- 索引。
- 视图。
还可以包括记录、列、存储设备等。客体被赋予密级/敏感度标记(classification/label)。
3.3.3 敏感度标记
课件图按安全级别给主体和客体标记,并示意层次如:
高 ─ 绝密
机密
可信/秘密
低 ─ 公开
实际系统的级别名称可不同,关键是安全级别构成可比较的支配关系。
3.4 强制存取规则
设主体 $S$ 的许可证级别为:
$$ L(S), $$
客体 $O$ 的密级为:
$$ L(O). $$
3.4.1 简单安全性规则:不向上读
主体可读客体的条件是:
$$ L(S)\ge L(O). $$
即主体只能读取同级或更低密级的客体,不能读取高于自身许可证级别的数据。
口诀:
No Read Up:不向上读
3.4.2 星号规则:不向下写
主体可写客体的条件是:
$$ L(S)\le L(O). $$
即主体只能写入同级或更高密级的客体,不能把掌握的高密级信息写入低密级对象。
口诀:
No Write Down:不向下写
3.4.3 为什么限制方向相反
- 禁止低级主体读取高级客体:防止直接窃取机密。
- 禁止高级主体写入低级客体:防止把已知的机密泄露到低级区域。
两条规则共同保护机密性。
3.4.4 访问判断表
| 主体与客体级别关系 | 读 | 写 | 原因 |
|---|---|---|---|
| $L(S)>L(O)$ | 允许 | 禁止 | 可向下读,不可向下写 |
| $L(S)=L(O)$ | 允许 | 允许 | 同级读写 |
| $L(S)<L(O)$ | 禁止 | 允许 | 不可向上读,可向上写 |
WARNING · 课件符号纠错 课件写“仅当主体许可证级别 $>$ 客体密级才能读”,遗漏了同级可读。正确条件是 $L(S)\ge L(O)$;写入条件 $L(S)\le L(O)$。因此统一记为“不向上读、不向下写”。
3.5 强制存取控制的特点
- 安全标签由系统策略强制执行,普通主体不能随意转授。
- 判断同时依赖主体级别、客体密级和操作类型。
- 对信息流方向进行限制,重点保护机密性。
- 即使主体对某对象具有一般权限,若安全级别规则不满足,仍不能访问。
NOTE 实际 MAC 可能不仅比较级别,还比较安全类别集合。常见“支配”关系要求主体级别足够高,且包含客体的全部类别。
3.6 视图的安全作用
3.6.1 隐藏敏感数据
视图只暴露查询结果,不必向用户开放基础表全部行列。
例如隐藏工资列:
CREATE VIEW PublicEmployee AS
SELECT EmployeeID, Name, Department
FROM Employee;
授权用户只能查询视图:
GRANT SELECT ON PublicEmployee TO analyst;
这样可以:
- 隐藏敏感列。
- 只暴露满足条件的行。
- 简化用户看到的数据结构。
- 减少直接访问基础表的范围。
3.6.2 与授权机制配合
课件给出的典型步骤:
- 用视图屏蔽一部分保密数据。
- 在视图上只授予所需权限,例如只读
SELECT。 - 不向用户授予基础表的直接权限。
视图负责限定“能看到什么”,授权负责限定“能做什么”。
3.6.3 局限
视图的主要作用之一是提供逻辑数据独立性和简化接口,安全保护通常还不够精细。
局限包括:
- 不能替代身份认证和权限管理。
- 错误的视图定义可能暴露敏感信息。
- 多个查询结果组合后可能推断出被隐藏数据。
- 更新视图可能受可更新性和
CHECK OPTION规则影响。
因此视图应与授权、行列级策略、审计等机制共同使用。
3.7 审计
3.7.1 定义
数据库审计把用户对数据库的重要操作自动记录到审计日志(Audit Log)中。
典型记录内容:
- 谁:用户、角色、会话或客户端。
- 何时:时间戳。
- 从哪里:主机、IP、应用来源。
- 做什么:登录、查询、插入、删除、更新、授权、结构变更等。
- 对什么:数据库、表、视图、对象或记录范围。
- 结果:成功、失败、影响行数、错误信息。
3.7.2 作用
DBA 或安全人员可利用审计跟踪:
- 重现导致数据库当前状态的一系列事件。
- 发现非法或异常访问。
- 查明访问者、时间、对象和操作内容。
- 支持安全取证、责任追踪与合规检查。
- 分析失败登录、权限滥用和高风险操作。
3.7.3 审计不是直接阻止
访问控制和视图主要在操作发生前进行预防;审计主要记录已经发生或尝试发生的行为,用于检测、告警和追责。
访问控制:事前阻止
视图/授权:限制可见范围和操作
审计:事中/事后记录、发现、追踪
3.7.4 审计日志自身保护
审计日志必须防篡改、限制访问并可靠保存,否则攻击者删除日志后就无法追踪。
常见要求:
- 普通业务用户不能修改审计记录。
- 审计管理员与业务管理员适当分权。
- 日志集中保存、备份或写入只追加介质。
- 设置保存期限、告警规则与定期复核。
3.8 三种机制对比
| 机制 | 决策依据 | 主要作用 | 局限 |
|---|---|---|---|
| 强制存取控制 | 主体许可证级别、客体密级、操作类型 | 强制控制分级信息流 | 策略严格、管理复杂 |
| 视图 + 授权 | 视图定义、用户/角色权限 | 隐藏行列、限制读写范围 | 不能单独覆盖全部安全需求 |
| 审计 | 实际操作事件 | 记录、检测、追责、取证 | 通常不能单独阻止操作 |
3.9 易错点
- 主体是主动发起访问的用户/进程,客体是被访问的表、视图、文件等。
- 主体具有许可证级别,客体具有密级或敏感度标记。
- 读规则是 $L(S)\ge L(O)$,同级可以读;课件中的严格大于号不正确。
- 写规则是 $L(S)\le L(O)$,高级主体不能向低级客体写入。
- “不向上读”防低级主体读取机密,“不向下写”防高级主体泄密。
- MAC 的安全级别检查不能被普通授权直接绕过。
- 视图可以隐藏数据,但不能替代授权、认证和审计。
- 只给视图
SELECT权限时,不应同时给用户基础表的广泛访问权限。 - 审计负责记录和追责,不等于访问控制,也不保证自动阻止攻击。
- 审计日志本身必须受到严格保护。
相关知识
- 科目导航:复试常考科目导航
- 阅读顺序:上一篇:关系数据库 · 下一篇:数据库完整性
- 关联专题:文件保护与访问控制
3.10 本节复盘
- 数据库安全关注机密性、完整性和可用性,课件重点是 MAC、视图和审计。
- MAC 中主体是用户或进程,客体是表、视图、文件、索引等数据对象。
- 主体用许可证级别标记,客体用密级标记,系统按级别支配关系强制判断。
- 简单安全性规则是“不向上读”:$L(S)\ge L(O)$ 才能读。
- 星号规则是“不向下写”:$L(S)\le L(O)$ 才能写。
- 视图隐藏敏感行列,授权机制再限定用户能在视图上执行的操作。
- 审计日志记录用户、时间、来源、对象、操作和结果,用于检测、重现与追责。
- 强制控制负责信息流约束,视图/授权负责最小暴露,审计负责留痕,三者相互补充。