【数据库概论】第四章 数据库安全性

news2025/1/17 6:19:15

第四章 数据库安全性

目录

  • 第四章 数据库安全性
    • 4.1 概述
    • 4.2 数据库安全性控制
      • 1.用户身份识别
      • 2.存取控制
      • 3.自主存取控制方法
      • 4.授权:授予与收回
        • GRANT:授权语句
        • REVOKE:收回权限
      • 3.创建数据库模式的权限
      • 4.数据库角色
      • 5.角色权限的回收
      • 6.强制存取控制方法MAC
    • 4.3 视图机制
    • 4.4 审计
    • 4.5 数据加密
    • 4.6 其他安全性保护

4.1 概述

数据库安全性是指保护数据库防止不合法使用所造成的数据泄漏、更改和破坏

数据库的不安全因素主要有以下几种:

  • 非授权用户对数据库的恶意存取和破坏
  • 数据库中重要或者敏感数据被泄漏
  • 安全环境的脆弱性

4.2 数据库安全性控制

在这里插入图片描述
在这里插入图片描述

1.用户身份识别

用户身份识别是DBMS最外层的安全保护措施,每个用户在系统中都有一个唯一的标识,每次用户进入系统时,由系统进行核对,通过鉴定后才提供使用DBMS的权限。常用的用户身份鉴别方法有以下几种:

  1. 静态口令鉴别

    最常见的鉴别方法,静态口令一般由用户自己设定,鉴别的时候输入正确指令则可以登入用户,这些口令是静态不变的。这种方法实现简单,但是安全性较低。在实际中,用户喜欢使用自己的生日、手机号,甚至直接是admin等简单密码作为口令,因此十分容易被破解,这种被称为弱口令攻击。另外的攻击被称为撞库,一旦黑客攻陷一个数据库,则会用从该数据库中获得的用户口令去测试其他数据库,一旦有用户在两个数据库中使用了相同的口令,就可能被破解。一般加强安全性的方法都是提高口令复杂度

  2. 动态口令鉴别

    目前较为安全的鉴别方式,这种方式口令是动态的,每次鉴别时需要使用动态产生的新口令登陆数据库。常用的方法有短信验证码和动态令牌的方法。与静态口令相比,动态口令增加了窃取和破解的难度,安全性较高

  3. 生物特征鉴别

    指纹、声纹、面部、瞳孔识别。安全级别较高。

  4. 智能卡识别

    智能卡是一种不可复制的硬件,内置集成电路芯片,具有硬件加密功能。智能卡由用户随身携带,登陆DBMS需要将卡插入专用读卡器。但是智能卡中的数据是静态的,可能通过内存扫描和网络监听泄漏,因此一般都是智能卡和PIN码相结合使用。

2.存取控制

数据库安全最重要的一点是确保只授权给有资格的用户访问数据库的权限,同时令未授权的无法接触数据。

存取控制机制主要包括定义用户权限和合法性权限检查两部分:

  1. 定义用户权限,并且将用户权限登记到数据字典中

    将用户拥有何种权限通过定义后存储在数据字典中,被称为安全规则或者授权规则。

  2. 合法权限检查

    每当用户发出存取数据库的操作请求后,DBMS查找数据字典,进行合法权限检查,如果用户操作超出了定义的权限,则拒绝执行。
    定义用户权限和合法权限检查机制一起组成了DBMS系统的存取控制子系统

    C2级的DBMS支持自主存取控制(DAC),用户对于不同数据库对象由不同的存取权限,而且用户还可以将拥有存取权限转授给其他用户,因此自主存取非常灵活。
    B1级的DBMS支持强制存取控制(MAC),每一个数据库对象被标定一定的密级,每一个用户被授予一定的访问级别许可证,只有具有合法许可证的用户才可以存取,强制存取控制比较严格

3.自主存取控制方法

用户权限由两要素组成:数据库对象和操作类型。定义一个用户的存取权限就是定义这个用户可以在哪些数据库对象上进行什么类型操作。定义存取权限由称为授权。这主要通过SQL的GRANT语句和REVOKE语句实现

在关系数据库中,存取控制对象不只有数据本身,还有数据库模式(包括数据库、基本表、视图和索引的创建等)。下面列出主要的存取权限
在这里插入图片描述

4.授权:授予与收回

GRANT:授权语句

GRANT一般格式为:

GRANT <权限>[,<权限>]…
ON <对象类型><对象名》[,<对象类型><对象名>]…
TO <用户>[,<用户>]…
[WITH GRANT OPTION]

语意为:将指定操作对象的指定操作权限授予给指定用户。如果指定了WITH GRANT OPTION语句,则获得某种权限的用户可以讲权限再授予其他用户,没有的话被授予者只能使用,不能传播权限。同时,SQL不允许循环授权(也就是A授权给B,B授权给C,C授权给A)

REVOKE:收回权限

授予用户权限可以由数据库管理员或者其授权者使用REVOKE收回,REVOKE语句一般格式是:

REVOKE <权限>[,<权限>]…
ON <对象类型><对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]…[CASCADE|RESTRICT];

CASCADE级联会将该用户的权限以及它授予其他用户的权限一并收回;RESTRICT限制如果发现用户还将权限授予了其他用户,则会拒绝执行

因为用户可以自主地觉定将数据存储的权限授予何人,决定他人有无授权的权力,因此这样的存取控制又称自主存取控制

3.创建数据库模式的权限

上述是向用户授予或者回收对数据的操作权限。对创建数据库模式一类的数据库对象的授权则由数据库管理员在创建用户时实现。

创建用户语句格式如下:

CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT]
  • 只有系统的超级用户才有权创建一个新的数据库用户
  • 新创建的数据库用户有三种权限
  • 默认权限为CONNECT。该权限的用户只能登陆数据库,并且使用由DBA或者其他用户授予的存取权限。他不能新建用户、创建模式、创建基本表。
  • 拥有RESOURCE权限的用户能够创建基本表和视图,称为所创建对象的属主(OWNER),但是不能创建模式、创建用户。数据库对象的属主可以通过GRANT语句将该对象的权限授予他人。
  • 拥有DBA权限的用户时超级用户,可以创建用户、创建模式、创建基本表和视图;DBA拥有所有数据库对象的存取权限,也可以将权限授予一般用户

在这里插入图片描述

4.数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

创建角色:

CREATE ROLE <ROLE NAME>

给角色授权:

GRANT <权限>[,<权限>]...
ON <对象类型>对象名
TO <角色>[,<角色>]...

将一个角色授予其他的角色和用户

GRANT <ROLE1>[,<ROLE2>]...
TO <ROLE3>[,<用户1>]...
[WITH ADMIN OPTION]

5.角色权限的回收

REVOKE <权限>[,<权限>]
TO <对象类型><对象名>
FROM <角色>[,<角色>]

6.强制存取控制方法MAC

自主存取控制由于用户对数据存储的权限也是可以授予的,因此仍可能存在数据的无意泄露。比如甲授权乙操作A表,但是乙却复制了A表的副本,使得A表内容发生了泄露,此时就需要强制存取控制方法

所谓强制存取控制是指系统为保证更高的安全性,采取强制存取检查手段。它不是用户能够直接感知或进行控制的。该策略适用于那些对数据由严格而且固定密级分类的部门,比如说军事部门或者政府部门。

在该系统中,DBMS所管理的全部实体被分为了主体客体两大类。主体是系统中活动的实体,包括实际用户以及代表各个用户的各个进程。客体是被动实体,是受主体操纵的,包括文件、基本表、索引、视图等等。对于实体和客体,DBMS都会为他们每一个实例直拍一个敏感度标记

敏感度标记被分为若干级别,分为绝密(TS),机密(S),可信(C),公开(P)。主体的敏感度标记称为许可证级别,客体的称为密级。其要求如下:

  • 只有主体许可级别>=客体密级的时候,主体才能读取相应客体
  • 只有主体许可级别<=客体密级的时候,主体才能写相应客体

如果没有第二条限制,可能把数据的密级从高流向低,造成数据泄露。比如某个TS密级的主体将一个TS的数据恶意降低到了P,然后写回,则会导致数据泄露。强制存取控制是对数据本身进行密级标记,两者是不可分割的,因此哪怕是数据被复制了,密级也会跟随着被复制,即时有了数据,没有足够的密级也无法访问。

4.3 视图机制

可以为不同用户定义不同的视图,将数据对象限制在一定范围内。就是说,通过视图机制把保密的数据对某些用户隐藏起来。这些用户的视图中并不包含他们无权查看的数据。这是视图的主要功能之一。

4.4 审计

审计功能是达到C2以上安全级别必不可少的一项指标。审计功能将用户对数据库的所有操作自动记录下来并且放入到审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现状的一系列事件,并且找出非法存取数据的人、时间和内容。审计通常十分耗费时间和空间,所以DBMS往往可以灵活打开或者关闭审计功能。审计功能主要用户对安全性要求较高的部门。

审计事件

一般包含服务器事件、系统权限、语句事件、模式对象事件等等

审计功能

  • 基本功能,提供多种审计察隅方式:基本的、可选的、有限的
  • 提供多套升级规则
  • 提供审计分析和报表功能
  • 审计日志管理功能,包括防止误删除等等

使用SQL语句AUDIT和NOT AUDIT来开关审计,比如,对Student表的UPDATE和ALTER打开审计功能

AUDIT ALTER, UPDATE
ON Studnet

4.5 数据加密

加密的基本思想是根据一定的原始算法,将一定的原始数据——明文变成不可直接识别的格式——密文。数据加密主要包括存储加密和传输加密

存储加密

对于存储加密一般提供透明和非透明两种存储加密方式。透明存储加密是内核级加密保护方式,对用户完全透明;非透明存储加密则是通过多个加密函数实现的。透明存储加密是数据在写到磁盘时对数据进行加密,用户读取数据时再对其进行解密。

传输加密

4.6 其他安全性保护

为了满足较高的安全等级的DBMS,在自主存取技术和强制存取控制之外,还有推理控制以及数据库应用中隐秘信道数据隐私保护技术

推理控制处理的是强制存取控制未解决的问题。例如,利用列的函数依赖关系,用户能够从低安全等级信息推导出无权访问的高安全等级信息,进而导致信息泄露。数据库推理控制机制用来避免用户利用其可访问的数据反推出更高密级的数据。

隐秘信道处理的内容是利用未被强制存取控制 的SQL执行后反馈的信息进行间接信息传递。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贪心算法(greedy algorithm)

贪心算法什么是贪心算法[122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/)代码[455. 分发饼干](https://leetcode.cn/problems/assign-cookies/)思路代码[435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-inte…

SaaS是什么,目前主流的国内SAAS平台提供商有哪些?

SaaS是什么&#xff0c;目前主流的国内SAAS平台提供商有哪些&#xff1f;SaaS这个概念近两年可谓说是十分火热&#xff0c;尤其是后疫情时代。 但还是有很多人对SaaS这个名词云里雾里&#xff0c;被碎片化的信息裹挟&#xff0c;并没有真正意义上理解SaaS的概念。 这篇就综合…

87.【SpringBoot-01】

SpringBoot(一)、前面回顾1.什么是Spring2.Spring 是如何简化Java开发的(二)、什么是SpringBoot1.基本含义:2.Spring Boot的主要优点(三)、微服务1.什么是微服务2.单体应用架构3.微服务架构 (活字印刷)4.如何构建微服务(四)、第一个SpringBoot程序1.点击新建文件2.勾选web框架3…

通用的产品功能设计方法

通用的产品功能设计方法1.如何设计注册/登录功能1.1 注册功能设计1.2 登录功能的设计2.如何设计APP启动页功能和引导页功能2.1 启动页功能设计2.2 引导页功能设计3.如何设计非法信息输入校验功能3.1 非法文本信息的输入校验规则3.2 非法图片信息的输入校验规则3.3 非法附件信息…

《C++程序设计原理与实践》笔记 第11章 定制输入/输出

在本章中&#xff0c;我们重点关注如何使第10章中介绍的通用iostream框架适配特定的需求和偏好。 11.1 规则性和不规则性 C标准库的输入/输出部分——iostream库为文本的输入和输出提供了一个统一的、可扩展的框架。 到目前为止&#xff0c;我们将所有输入源视为等价的&…

Python Flask 实现 HTML 文件压缩,9 级压缩

本博客详细为你解释 Python Flask 框架下的 HTML 文件压缩内容&#xff0c;其第三方模块也可用在其他框架中。 本案例是基于 Python Flask 进行搭建&#xff0c;所以需要提前搭建一个 Flask 项目环境&#xff0c;有 app.py 文件和 templates/index.html 文件即可。 实现 HTML 文…

微服务架构编码构建

目录 一、约定 > 配置 > 编码 二、IDEA新建project工作空间 &#xff08;一&#xff09;微服务cloud整体聚合父工程Project &#xff08;二&#xff09;父工程POM &#xff08;三&#xff09;Maven工程落地细节复习 三、Rest微服务工程构建 &#xff08;一&#…

【蓝桥云课】进制

对于任意数制RRR的数nnn&#xff0c;都可以表达为n∑i0kaiRia0R0a1R1a2R2...akRkn\sum_{i0}^{k}a_{i}R^{i} a_{0}R^{0}a_{1}R^{1}a_{2}R^{2}...a_{k}R^{k}ni0∑k​ai​Ria0​R0a1​R1a2​R2...ak​Rk 一、十进制转RRR进制 方法&#xff1a;十进制数除RRR取余&#xff0c;余数…

kaggle竞赛 | 计算机视觉 | 数字图像基础操作

目录cv2基本操作图片哈希图像数据扩展无监督数据扩展方法监督式数据扩展方法cv2基本操作 import numpy as np import matplotlib.pyplot as plt import cv2img cv2.imread(cat.jpeg) plt.imshow(img)img cv2.imread(cat.jpeg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) pl…

JUC并发编程(2.Java线程)

1.线程运行原理 栈与栈帧 Java Virtual Machine Stacks &#xff08;Java 虚拟机栈&#xff09; 我们都知道 JVM 中由堆、栈、方法区所组成&#xff0c;其中栈内存是给谁用的呢&#xff1f;栈内存是给线程用&#xff0c;每个线程启动后&#xff0c;虚拟机就会为其分配一块栈内…

cmake 05 使用库

本文目标 使用自己写的动态库使用第三方库更新 cm 使用自己的动态库 写一个简单的库 目录结构 F:\2023\code\cmake\calc>tree /f 卷 dox 的文件夹 PATH 列表 卷序列号为 34D2-6BE8 F:. │ CMakeLists.txt │ ├─include │ └─calc │ calc.h │ └─srcc…

2022除夕卖水果

急促的呼吸&#xff0c;急促的爱&#xff0c;急促的吆喝声 来吧 朋友 伸出你的手 还有十分钟&#xff0c;拆拆盒子收摊中 管尝管饱&#xff0c;礼盒散装可打包 红橙黄绿青蓝紫 苹果樱桃小番茄 柠檬枳柑桔橙柚 香蕉龙眼与柠檬 蜜瓜西瓜猕猴桃 提子樱桃火龙果 葡萄甘蔗车厘子 柿子…

ES常用知识点整理第一部分

ES常用知识点整理第一部分引言APICrud APIBulk API批量读取批量查询ES服务器常见错误返回倒排索引分词器中文分词器Search APIURI SearchQuery DSL查询表达式短语搜索Query String 和 Simple Query Stringmapping映射动态映射手动映射多字段特性自定义分词Index TemplateDynami…

【Ubuntu】Nacos 2.1 单机安装

目录Nacos 2.1 单机安装1. 从GitHub下载2.1.0的压缩包2. 解压与配置3. 数据库配置4. 单机启动nacos遇到的一些错误ErrMsg:jmenv.tbsite.netlibstdc.so.6: cannot open shared object file: No such file or directoryCaused by: java.lang.IllegalStateException: No DataSourc…

3DCAD图纸转2D(DXF)图纸通用解决方案文稿

3DCAD图纸转2D(DXF)图纸通用解决方案文稿 本文地址&#xff1a;https://gitee.com/dvaloveu/lovedva/issues/I6B5YC 视频演示(1.25倍速&原速)&#xff1a;Acfun Bilibili 脚本地址&#xff1a;https://gitee.com/dvaloveu/ug-automation/blob/master/ug2caxa/hellowolrd.p…

第二章物理层-第五节:信道的极限容量

文章目录一&#xff1a;相关概念&#xff08;1&#xff09;失真&#xff08;2&#xff09;信道带宽W&#xff08;3&#xff09;波特率&#xff08;Baud&#xff09;二&#xff1a;奈奎斯特定理&#xff08;奈氏准则&#xff09;三&#xff1a;香农定理本节对应视频 【计算机网络…

sql注入绕过(持续更新)

判断存在注入 ab|| 查询表名 select{x table_name}from information_schema.tables where table_schemadatabase# () SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样&#xff1a; MySQL: SUBSTR( ), SUBSTRING(…

Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案

什么是Coolify 一款超强大的开源自托管 Heroku / Netlify 替代方案coolLabs是开源、自托管和以隐私为中心的应用程序和服务的统称 为什么使用Coolify 只需单击几下即可托管你的应用、数据库或其他开源服务&#xff0c;等。它是 Heroku 和 Netlify 的一个替代方案。通过 Cool…

springbootWeb常用注解使用

springbootWeb常用注解使用PathVariable 路径变量注解RequestHeader 请求标头注解RequestParam 请求域注解RequestBody 请求体注解ModelAttribute使用1,将其置于方法上&#xff1a;使用2&#xff0c;将其置于方法参数上&#xff1a;CookieValuePathVariable 路径变量注解 可以…

3.4动态规划--最大字段和

要好好学习这个难受难受超级难受的动态规划了&#xff0c;千万不要再沉迷在看剧和玩耍里面了。必须承认最近没有好好学习。 写在前面 最大字段和书上介绍了三种解法&#xff1a;暴力、递归分治、动态规划 递归分治&#xff0c;一分为二&#xff0c;合并的时候有三种情况&…