数据库安全性

article/2025/8/3 16:34:57

一、计算机安全性概论

(一)核心概念
  • 数据库安全性:保护数据库免受非法使用导致的数据泄露、更改或破坏,是衡量数据库系统的关键指标之一,与计算机系统安全性相互关联。
  • 计算机系统安全性:通过各类安全保护措施,保障计算机硬件、软件及数据安全,防止因偶然或恶意因素使系统受损、数据遭篡改或泄露。包含技术安全、管理安全和政策法律三个层面。
(二)安全标准
  1. TCSEC/TDI 标准

    (美国国防部)

    • 目的:为评估计算机系统敏感信息安全操作的可信度提供标准,为制造商设计满足敏感应用安全要求的产品提供指导。
    • 安全级别(从低到高):D(最小保护)、C1(自主安全保护)、C2(受控存取保护)、B1(标记安全保护)、B2(结构化保护)、B3(安全域)、A1(验证设计)。
    • 评估指标:安全策略(R1)、责任(R2)、保证(R3)、文档(R4)。
  2. CC 标准

    (通用准则)

    • 结构:将信息产品安全要求分为安全功能要求(规范安全行为)和安全保证要求(解决功能实施问题),均采用 “类 - 子类 - 组件” 结构描述。
    • 评估保证级(EAL)与 TCSEC 对应关系:EAL2 对应 C1,EAL3 对应 C2,EAL4 对应 B1,EAL5 对应 B2,EAL6 对应 B3,EAL7 对应 A1。

二、数据库安全控制措施

(一)用户标识与鉴别
  • 作用:作为系统最外层安全保护,通过验证用户身份(如用户名 / 口令)控制对系统的访问。
(二)存取控制
  1. 核心机制
    • 定义用户权限:明确用户在哪些数据对象上可进行哪些操作(如查询、插入、更新等),并登记到数据字典。
    • 合法权限检查:DBMS 根据数据字典中的权限定义,对用户操作请求进行合法性验证,拒绝越权操作。
  2. 两种控制方式
    • 自主存取控制(DAC)
      • 特点:用户对不同数据对象有不同权限,可自主将权限授予其他用户,灵活性高。
      • 实现方式:通过 SQL 的GRANT(授权)和REVOKE(收回权限)语句实现。
      • 权限要素:数据对象(如表、属性列、视图等)和操作类型(如SELECTINSERTUPDATE等)。
      • 示例
        • 授权:GRANT SELECT ON Student TO U1;(授予 U1 查询 Student 表的权限)。
        • 收回权限:REVOKE UPDATE(Sno) ON Student FROM U4;(收回 U4 修改 Student 表中学号的权限)。
    • 强制存取控制(MAC)
      • 适用场景:对数据密级分类严格的场景(如军事、金融),由系统自动控制,用户无法直接干预。
      • 核心概念
        • 主体与客体:主体是活动实体(如用户、进程),客体是被动实体(如数据对象)。
        • 敏感度标记:主体的标记为许可证级别,客体的标记为密级(如绝密、机密、公开等)。
      • 存取规则
        • 读取规则:主体许可证级别≥客体密级,方可读取客体。
        • 写入规则:主体许可证级别 = 客体密级,方可写入客体。
      • 与 DAC 的关系:二者结合构成 DBMS 安全机制,先进行 DAC 检查,再进行 MAC 检查。
(三)视图机制
  • 作用:通过定义视图限制用户访问范围,DBA 为不同用户创建特定视图并授权,用户只能操作视图内的数据。

  • 示例

    CREATE VIEW CS_Student AS SELECT * FROM Student WHERE Sdept='CS'; -- 创建计算机系学生视图
    GRANT SELECT ON CS_Student TO 王平; -- 授予王平查询该视图的权限
    
(四)审计
  • 作用:记录用户对数据库的所有操作(如ALTERUPDATE等),存入审计日志,用于安全追溯、合规检查和监控潜在威胁。

  • 特点:需消耗较多时间和空间,通常作为可选功能。

  • 示例

    AUDIT ALTER,UPDATE ON SC; -- 开启对SC表的ALTER和UPDATE操作审计
    NOAUDIT ALL ON SC; -- 关闭对SC表的所有审计
    
(五)数据加密
  • 基本思想:通过算法将明文转换为密文,防止未授权用户获取数据内容。
  • 主要方法
    • 替换法:用密钥将明文字符转换为密文字符。
    • 置换法:重新排列明文字符顺序。
    • DES 标准:结合替换法和置换法的官方加密标准。

三、其他安全要点

(一)数据库角色管理
  • 角色定义:一组与数据库操作相关的权限集合,可批量管理具有相同权限的用户。

  • 操作示例

    CREATE ROLE R1; -- 创建角色R1
    GRANT SELECT, UPDATE, INSERT ON Student TO R1; -- 为R1授权
    GRANT R1 TO 王平, 张明, 赵玲; -- 将角色授予用户
    
(二)统计数据库安全性
  • 问题:用户可能通过合法统计查询间接获取敏感个体数据(如通过两次工资总额查询推断他人工资)。
  • 解决原则:确保破坏安全的代价远高于所获利益,如限制查询集合大小、增加干扰数据等。

WITH ADMIN OPTION 是数据库中用于 角色或权限管理 的关键字,主要作用是让被授权者(用户或角色)拥有再授权的能力,即可以将自己拥有的角色或权限进一步授予其他用户或角色。以下是详细说明:

(三)角色授权
  1. 角色授权场景
    当向某个用户授予角色时使用 WITH ADMIN OPTION,该用户不仅拥有该角色的所有权限,还能将这个角色 授予其他用户或角色,甚至可以收回其他用户的该角色权限。
    示例

    -- 创建角色 R1
    CREATE ROLE R1;
    -- 授予用户 U1 角色 R1,并允许其再授权
    GRANT R1 TO U1 WITH ADMIN OPTION;
    
    • U1 获得 R1 角色的所有权限。
    • U1 可以执行 GRANT R1 TO U2; 将 R1 授予 U2,或执行 REVOKE R1 FROM U2; 收回 U2 的 R1 角色。
  2. 权限授权场景
    在部分数据库(如 Oracle)中,对 系统权限 授权时使用 WITH ADMIN OPTION,允许被授权者将权限再授予他人。
    示例(Oracle):

    -- 授予用户 U1 创建表的权限,并允许其再授权
    GRANT CREATE TABLE TO U1 WITH ADMIN OPTION;
    
    • U1 可执行 GRANT CREATE TABLE TO U2; 将权限授予 U2。

与 WITH GRANT OPTION 的区别

关键字适用场景授权对象再授权范围
WITH ADMIN OPTION角色授权或系统权限授权角色或系统权限可授予用户或角色,可递归授权
WITH GRANT OPTION对象权限授权(如表、视图)对象权限(如 SELECT、INSERT、UPDATA)只能授予其他用户,不可授予角色

示例对比

  • 角色授权
    GRANT R1 TO U1 WITH ADMIN OPTION;(U1 可将 R1 授予 U2 或 R2)。
  • 对象权限授权
    GRANT SELECT ON Table1 TO U1 WITH GRANT OPTION;(U1 可将 Table1 的查询权限授予 U2,但不能授予角色)。

习题:
在这里插入图片描述
在这里插入图片描述

解析:

第 1 题

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。确保只有授权用户能访问和操作数据库中的数据,维护数据的保密性、完整性和可用性。

第 2 题

  • 人为因素:如恶意的黑客攻击,通过 SQL 注入漏洞获取或篡改数据库数据;内部人员越权访问,比如普通员工非法查看敏感财务数据。
  • 自然因素:如服务器所在机房遭遇火灾、洪水等自然灾害,可能导致数据库存储设备损坏,数据丢失。
  • 系统漏洞:数据库管理系统本身存在安全漏洞,未及时打补丁,被攻击者利用来突破安全防线。

第 3 题

  • 用户身份鉴别:通过用户名 - 密码、生物识别(指纹、面部识别等)等方式确认用户身份。
  • 存取控制:包括自主存取控制(DAC),用户可根据自己意愿对数据进行授权;强制存取控制(MAC),由系统根据密级等因素统一控制用户对数据的访问。
  • 视图机制:为不同用户定义不同视图,限制用户只能看到视图中的数据,间接实现数据安全。
  • 审计:对数据库的操作进行记录,便于事后追踪分析,发现非法操作。
  • 数据加密:对数据库中的数据加密存储,防止数据在存储或传输过程中被窃取。

第 4 题

  • 自主存取控制(DAC):用户对自己拥有的对象(表、视图等)有一定的自主控制权,可根据需要将自己的权限授予其他用户。例如,数据库管理员创建用户 A 后,用户 A 可将自己对某张表的查询权限授予用户 B。这种方式灵活,但安全性相对弱,可能因为用户误操作或被欺骗而导致权限扩散。
  • 强制存取控制(MAC):系统为主体(用户、进程等)和客体(数据对象)都定义敏感度标记(如绝密、机密、秘密等)。只有当主体的敏感度标记不低于客体的敏感度标记时,主体才能读取客体;主体的敏感度标记不高于客体的敏感度标记时,主体才能写入客体。这种方式更严格,常用于对安全性要求极高的场景,如军事、金融等领域。

第 5 题

GRANT ALL PRIVILEGES ON 学生, 班级
TO U1
WITH GRANT OPTION;

解释:ALL PRIVILEGES 表示所有权限,ON 后跟要授权的表名,TO 指定被授权用户,WITH GRANT OPTION 使 U1 可将权限再授予其他用户。

GRANT SELECT, UPDATE(家庭住址) ON 学生
TO U2;

解释:授予 U2 对 “学生” 表的 SELECT(查看)权限,以及对 “家庭住址” 字段的 UPDATE(更新)权限 。

GRANT SELECT ON 班级
TO PUBLIC;

解释:PUBLIC 代表所有用户,此语句将 “班级” 表的 SELECT(查看)权限授予所有用户。

GRANT SELECT, UPDATE ON 学生
TO R1;

解释:将 “学生” 表的 SELECT(查询)和 UPDATE(更新)权限授予角色 R1。

GRANT R1 TO U1
WITH ADMIN OPTION;

解释:将角色 R1 授予 U1,WITH ADMIN OPTION 使 U1 可将角色 R1 再授予其他角色。

第 6 题

GRANT SELECT ON 职工, 部门
TO 王明;
GRANT INSERT, DELETE ON 职工, 部门
TO 李勇;
-- 先创建视图
CREATE VIEW EmpSelfView AS
SELECT * FROM 职工
WHERE 职工号 = CURRENT_USER; GRANT SELECT ON EmpSelfView
TO ALL;

解释:先创建视图 EmpSelfView,视图中只包含当前用户(职工)自己的记录,然后将该视图的 SELECT 权限授予所有职工(可理解为每个职工自己 )。

GRANT SELECT, UPDATE(工资) ON 职工
TO 刘星;
GRANT ALTER ON 职工, 部门
TO 张新;

解释:ALTER 权限用于修改表结构,将此权限授予张新。

GRANT ALL PRIVILEGES ON 职工, 部门
TO 周平
WITH GRANT OPTION;
-- 创建视图
CREATE VIEW DeptSalaryStatsView AS
SELECT 部门号, MAX(工资) AS max_salary, MIN(工资) AS min_salary, AVG(工资) AS avg_salary
FROM 职工
GROUP BY 部门号; GRANT SELECT ON DeptSalaryStatsView
TO 杨兰;

解释:先创建视图 DeptSalaryStatsView 计算每个部门的最高、最低和平均工资,然后将该视图的 SELECT 权限授予杨兰,这样她看不到具体个人工资。

第 7 题

REVOKE SELECT ON 职工, 部门
FROM 王明;
REVOKE INSERT, DELETE ON 职工, 部门
FROM 李勇;
REVOKE SELECT ON EmpSelfView
FROM ALL;
DROP VIEW EmpSelfView;
REVOKE SELECT, UPDATE(工资) ON 职工
FROM 刘星;
REVOKE ALTER ON 职工, 部门
FROM 张新;
REVOKE ALL PRIVILEGES ON 职工, 部门
FROM 周平;
REVOKE SELECT ON DeptSalaryStatsView
FROM 杨兰;
DROP VIEW DeptSalaryStatsView;

第 8 题

  • 主体:是指请求访问客体的活动实体,如用户、进程等。主体发起对数据库中数据的访问操作请求。
  • 客体:是指被访问的对象,即数据库中的数据,如表、视图、记录等。
  • 敏感度标记:对主体和客体都赋予的一种安全属性。用于标识主体的访问权限级别和客体的敏感程度。例如,将数据分为绝密、机密、秘密、公开等不同级别,主体只有具备相应级别或更高级别权限才能访问对应级别的客体。

第 9 题

例如,在一个军事数据库中,定义主体(用户)分为士兵(敏感度标记为 “秘密”)、军官(敏感度标记为 “机密”)、将军(敏感度标记为 “绝密”);客体(数据)中部队人员名单为 “秘密”,作战计划为 “机密”,战略部署为 “绝密”。

  • 士兵只能访问部队人员名单(因为其敏感度标记 “秘密” 等于客体 “部队人员名单” 的敏感度标记 ),不能访问作战计划和战略部署。
  • 军官可以访问部队人员名单和作战计划(军官的 “机密” 敏感度标记不低于 “秘密” 和 “机密” 级别的客体 ),但不能访问战略部署。
  • 将军可以访问所有数据(将军的 “绝密” 敏感度标记不低于其他所有客体的敏感度标记 )。

第 10 题

  • 数据库审计功能:是指对数据库的操作进行记录和跟踪,包括操作时间、操作用户、操作类型(如 SELECTINSERTUPDATEDELETE 等)、操作对象(表、视图等)等信息。这些记录存储在审计日志中。
  • 提供审计功能的原因:
    • 安全追溯:当数据库出现安全问题(如数据被非法篡改、泄露)时,可通过审计日志追溯操作源头,找到违规操作的用户或进程。
    • 合规要求:许多行业(如金融、医疗)有严格的数据安全合规规定,审计功能可帮助企业满足监管要求,证明对数据操作的合规性。
    • 安全监控:实时或定期查看审计日志,可发现潜在的安全威胁,如异常频繁的访问、未授权的操作尝试等,以便及时采取措施防范。

http://www.hkcw.cn/article/XrLapEnVUR.shtml

相关文章

【C++】string类

1. 标准库中的string类 1.1 string类 string类的文档介绍 在 使用 string 类时,必须包含 #include 头文件以及 using namespace std ; 1.2 auto和范围for auto 关键字 在早期C/C 中 auto 的含义是:使用 auto 修饰的变量,是具有自动存储器…

Docker 在云环境中的部署:AWS/ECS 与 Azure/AKS 的实践对比

Docker 容器的出现极大地提升了应用程序的打包、交付和运行效率。然而,在面对高并发、高可用和大规模集群管理的生产环境时,将 Docker 容器部署到公有云平台成为了必然选择。公有云平台提供了强大的基础设施和托管服务,极大地简化了底层运维负担。 在众多云服务提供商中,A…

【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解

【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解 一、前言 LayaAir引擎是国内最强大的全平台引擎之一,当年H5小游戏火的时候,腾讯入股了腊鸭。我还在游戏公司的时候,17年曾经开发使用腊鸭的H5小游戏,很怀念当年和腊鸭同事一起解决…

理解解释器架构:原理、组成与运行机制全解析

目录 前言1. 什么是解释器架构2. 解释器的基本组成2.1 被解释执行的程序2.2 解释器引擎2.3 解释器内部状态2.4 程序执行的当前状态2.5 存储器模型 3. 解释器的工作原理3.1 解析源代码3.2 初始化运行环境3.3 逐条执行语法结构3.4 维护程序状态3.5 内存管理与变量作用域 4. 举例&…

SOD-123和SOD-123FL封装到底有什么区别?

目录 1. 封装结构与尺寸 2. 热性能 3. 电气特性 4. 应用场景 5. 兼容性与替代性 6.价格比较 大家好,我们硬件工程师经常用到SOD-123和SOD-123FL的封装,特别是二极管,比如二极管1N4007便有这两种封装。那么这两种封装两者到底有什么区别…

Apache IoTDB V2.0.3 发布|新增元数据导入导出脚本适配表模型功能

Release Announcement Version 2.0.3 Apache IoTDB V2.0.3 已经发布! V2.0.3 作为树表双模型正式版本,主要新增元数据导入导出脚本适配表模型、Spark 生态集成(表模型)、AINode 返回结果新增时间戳,表模型新增部分聚…

NX753NX756美光科技闪存NX784NX785

技术解读与产品特性 美光科技的NX系列闪存,包括NX753、NX756、NX784、NX785等型号,代表了当前存储技术的前沿水平。这些产品基于先进的NAND闪存技术,采用业界领先的3D TLC NAND技术,实现了高速的数据读写能力。3D TLC NAND技术通…

go语言的GMP(基础)

1.概念梳理 1.1线程 通常语义中的线程,指的是内核级线程,核心点如下: (1)是操作系统最小调度单元; (2)创建、销毁、调度交由内核完成,cpu 需完成用户态与内核态间的切…

Docker容器创建Redis主从集群

利用虚拟机中的三个Docker容器创建主从集群,容器信息: 容器名角色IP映射端口r1master192.168.150.1017001r2slave192.168.150.1017002r3slave192.168.150.1017003 启动多个redis实例 新建一个docker-compose文件来构建主从集群: 文件内容&…

RTMP播放器谁更强?深入解析SmartPlayer与VLC、PotPlayer等方案的技术差异

在视频直播、安防监控、边缘计算、AI视觉识别等场景中,低延迟、高稳定的RTMP播放器SDK 是关键技术模块。虽然市面上存在VLC、PotPlayer等“看起来能播”的播放器,但真正能适用于生产环境,支持工程集成、多平台、复杂网络、实时反馈的专业RTMP…

DelphiXe12创建DataSnap REST Application

服务端:该类型应用可直接部署EXE导云端,指定单页直接写好函数,即可导出。同时自动提供网页版的API文档,并可在线测试写好的接口。也可以向其他语言提供接口。 客户端:可生成调用服务端生成的API接口,无效编…

跨平台猫咪桌宠 BongoCat v0.4.0 绿色版

—————【下 载 地 址】——————— 【​本章下载一】:https://pan.xunlei.com/s/VORWH1a7lPhdwvon6DJgKvrNA1?pwdcw2h# 【​本章下载二】:https://pan.quark.cn/s/c3ac86f4e296 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…

2023ICPC杭州题解

文章目录 M. V图(签到)J. 神秘树(交互)G. 控制贪吃蛇(最短路)D. 运算符优先级(构造)H. 甜蜜的修噶 II(概率)B. 节日装饰(bitset根号分治)F. Top Cluster(LCA动态维护树的直径) 题目链接 M. V图(签到) int cmp(int x1,int y1,int x2,int y2){int xx1*y2,yx2*y1;if(x>y)return…

图文详解Java并发面试题

文章目录 1、并发与并行2、线程安全3、线程、进程、协程4、线程间通信5、线程创建方式6、8G内存创建的线程数7、普通Java程序含有的线程8、start()、run()9、线程调度、6种状态、强制停止线程、上下文切换10、守护线程、用户线程11、 volatile 、synchronized12、sleep() 、 wa…

文档核心结构优化(程序C++...)

文档核心结构优化 一、文档核心结构优化二、C关键特性详解框架2.1 从C到C的范式迁移 三、深度代码解析模板3.1 现代C特性分层解析 四、C vs C 关键差异矩阵五、交互式文档设计策略5.1 三维学习路径5.2 代码缺陷互动区 六、现代C特性演进图七、性能优化可视化呈现(深…

Python打卡训练营Day42

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as tr…

Redis 架构设计

找实习中。。。学项目学到redis,又偶然看了个拓展的。是得物的Redis设计,拿出来分享了。 文章地址,https://mp.weixin.qq.com/s/dnlxCXgAxHsfyVNYTDsewA 话说,架构师就是干这种工作的吗? 插曲 才知道这么念&#xff…

振动力学:无阻尼单自由度系统

单自由度振动系统是最简单的一类振动系统,仅用一个坐标就可描述。从力学角度分析,一个实际的振动系统可由三个元件组成:惯性质量、弹性、阻尼,,它们分别描述系统的惯性、弹性、能耗机制。惯性元件是运动的实体,弹性元件提供振动回复力,阻尼元件在振动过程中消耗或吸收外界…

LangChain-结合智谱AI大模型实现自定义tools应用实例

准备: 1.可供调用的实时查询天气的接口: 百度天气接口:https://lbsyun.baidu.com/faq/api?title=webapi/weather/base(没有可以去注册用户实名认证后即可免费使用) 可以使用接口工具ApiPost调用,验证接口是否正常 2.一个csv文件,文件内容中包含各个省市区的行政编码 …

DAY 34 超大力王爱学Python

CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作self.fc1(x) ps:在训练过程中可以在命…