当前位置: 首页 > news >正文

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

数据库系统(五)

参考资料:

数据库安全性与完整性

数据库完整性.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)。

http://www.jsqmd.com/news/667076/

相关文章:

  • WarcraftHelper终极指南:魔兽争霸3全版本完美兼容解决方案
  • AGI伦理丑闻爆发后必须立即执行的5步响应清单(含真实监管约谈话术模板)
  • 如何在Windows 10/11上完美运行经典DirectX游戏:DDrawCompat终极指南
  • 综述 电解液中的 磺酸酯类添加剂
  • 【仅限首批200家认证企业开放】AGI营销成熟度评估矩阵V2.1:含12维动态评分与定制化优化路径图
  • J-Link-OB改造版 vs 正版J-Link:除了价格,调试STM32还有哪些差异和限制?
  • 从‘烦恼的高考志愿’到‘高效的二分查找’:洛谷P1678如何帮你理解算法抽象与建模
  • 病区清洗消毒设备|施启乐(广州)仪器有限公司 - 品牌推荐大师
  • 全网无水印视频下载终极指南:3步轻松获取微信视频号、抖音、快手等平台资源
  • 手把手教你用Simulink搭建电池双向DC/DC模型:从Buck/Boost模式到ADRC+FCS-MPC实战
  • GoB插件深度指南:3天精通Blender与ZBrush无缝协作
  • Xilinx FIFO IP核实战避坑:手把手教你搞定安全电路与读写时序(Vivado 2021.3)
  • Windows 11 先装,Arch Linux 后装:UEFI 双系统启动菜单避坑全记录
  • 软工毕业设计简单的题目分享
  • TTP223触摸模块的‘点动’和‘自锁’到底怎么选?一份给单片机新手的避坑指南
  • VNP46A1和VNP46A2怎么选?搞懂NASA‘黑大理石’夜间灯光数据的月光校正与适用场景
  • 全自动洗瓶机厂家|施启乐(广州)仪器有限公司 - 品牌推荐大师
  • 038 编辑距离 动态规划
  • 不止于修改器:用Cheat Engine的Lua脚本和D3D Hook给你的单机游戏‘加MOD’
  • 别再只用get()了!Java Stream中filter+findAny的3种安全写法与避坑指南
  • 给实验室萌新的投稿避坑指南:CCF、中科院分区与‘黑名单’期刊全解析
  • 京东抢购工具终极指南:3步实现自动化抢购的完整方案
  • 重塑直播体验:OBS StreamFX 视觉特效插件深度解析
  • 信呼OA后台getshell复盘:从Base64‘障眼法’到绕过设备ID限制的完整攻击链
  • 真正的智能教育常常在AI之外
  • 【GIS】从TFW到GDAL:六参数仿射变换的实战解析与坐标转换
  • 别再为模型部署发愁了!手把手教你用torch.onnx.export把PyTorch模型转成ONNX(附常见报错解决)
  • 3个理由让USB-Disk-Ejector成为你的Windows必备工具
  • Flux.1-Dev深海幻境时序数据创意应用:结合LSTM思想的动态图像生成构想
  • 【AGI时代招聘生存指南】:错过2026奇点大会这4个信号,你的技术团队将在6个月内掉队2个代际