数据库安全性与完整性 - 软考备战(三十三)

数据库系统(五)

参考资料:

数据库安全性与完整性

数据库完整性.pdf

数据库安全性与完整性核心考点纵向拆解:知识体系与实战应用梳理-51CTO软考-软考在线教育培训

5.5 数据库安全性与完整性

1. 完整性

核心目标:防止不合语义的"脏数据"进入数据库.

完整性是 DBMS 主动把关,保证数据对现实世界的语义是正确的。

实体完整性(针对主码 Primary Key)

规则:主码不能取空值(NULL),且不能有重复值。

违约处理:如果插入或修改导致主码为空或重复,DBMS 直接拒绝执行。

参照完整性(针对外码 Foreign Key)

规则:

外码的值要么全是空值(表示尚未分配或无关联),要么必须是另一个关系主码的有效值。

违约场景与处理策略:

当对被引用表(父表)进行操作,可能破坏参照完整性时,DBMS 提供了以下处理方式供设计者选择:

拒绝执行(NO ACTION / RESTRICT)

最严格,直接报错,不许删/改。

级联操作(CASCADE)

父表删了/改了,子表里对应的外码行自动跟着删/改。(如:删除部门,该部门所有员工自动删除)。

设为空值(SET NULL)

父表删了/改了,子表里对应的外码值自动变成 NULL。(前提:该外码列允许为空)。

注意:

如果是子表(引用表)自己乱插入一个不存在的外码值,DBMS 没二话,直接拒绝执行,没有级联一说。

用户定义完整性(针对普通列 Check / Not Null / Unique)

规则:如 CHECK (年龄 BETWEEN 15 AND 30),NOT NULL。

违约处理:不符合条件,拒绝执行。

触发器
本质

一种特殊的存储过程,不能被手动调用,只能由事件自动触发。

触发事件与时机

事件:INSERT、UPDATE、DELETE。

时机:BEFORE(在操作执行前触发,常用于数据预处理或复杂校验)、AFTER(在操作执行后触发,常用于级联修改或记录日志)。

为什么需要触发器?

前面的 Check 约束只能限制"本行、当前列"的静态数据。

如果要实现"修改员工工资时,不能超过其历史最高工资"(需要查历史表),CHECK 做不到,必须用触发器。

2. 安全性

核心目标

防止非法用户访问或越权操作数据库。

安全性是层层设防的体系,从外到内越来越底层。

第一层:用户标识与鉴别(进门查验身份)

最外层防线。

通过用户名/密码、指纹、动态口令卡确认"你是谁"。

第二层:存取控制(进门后看菜单,决定你能干啥)
自主存取控制(DAC)

最常用。

用户对 自己创建的表/对象 拥有"全权",可以自己决定把权限发给谁。

(这就是关系数据库标准语言(SQL)- 软考备战(三十一)-CSDN博客GRANT 和 REVOKE)。

强制存取控制(MAC)

用于极高安全级别的系统(如军方、银行核心库)。

机制:

给每个用户发一个"许可证级别"(如绝密、机密、秘密),给每个数据标一个"密级"。

规则只有两条:

用户只能"读"密级 小于等于 自己许可证的数据。(不能看高于自己级别的)

用户只能"写"密级 大于等于 自己许可证的数据。(防止高密级用户把高密数据写到低密级文档里泄密)

第三层:视图机制(物理隔离,防偷窥)

通过建立视图,把底层的基表隐藏起来。

应用:

把没有权限的列屏蔽掉(如给财务看不含基本工资的视图),或者把跨部门的数据过滤掉。

视图让用户"看不到"他不该看的东西。

第四层:审计------ 专抓内鬼

当前面三道防线被突破(比如合法用户恶意删库),审计是最后的追责手段。

机制:

DBMS 专门开一个"审计日志表",记录谁、在什么时间、在哪个终端、对什么对象、执行了什么SQL、成功还是失败。

代价:

极其耗费磁盘空间和时间,通常只对敏感操作(如修改金额、删除数据)开启审计。

第五层:数据加密(物理层兜底)

即使黑客直接把硬盘偷走,或者绕过了 DBMS 直接读取物理文件,看到的也是乱码。

分为:

存储加密(磁盘上的文件加密)、传输加密(网线里跑的数据加密,如 SSL/TLS)。

相关推荐
西瓜拿铁好喝几秒前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
代码派10 分钟前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
Gauss松鼠会14 分钟前
GaussDB 中 gsql 与 DBeaver(JDBC)客户端工具查询时间不一致:原因、排查与处理
运维·服务器·数据库·sql·gaussdb·经验总结
Elastic 中国社区官方博客20 分钟前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
楚识科技27 分钟前
信创环境下 OCR 部署实践:从麒麟系统到达梦数据库的全栈适配
数据库·ocr
飞浪纪元[FWC–FE]32 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
Paper数据分析-经管学术32 分钟前
1985-2026年中国低空经济专利明细数据库
数据库
RuoyiOffice32 分钟前
SpringBoot3 + openGauss:RuoYi Office 登录、流程发布与用印填报适配实战
java·数据库·spring boot·opengauss·信创
画中有画44 分钟前
时序数据库在物联网系统中的应用
数据库·物联网·时序数据库
Decay__7 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构