第四章 数据库安全性

news2025/1/19 11:35:25

问题的提出

(1)数据库的一大特点是数据可以共享

(2)数据共享必然带来数据库的安全性问题

(3)数据库系统中的数据共享不能是无条件的共享

 这就引发了数据库安全性问题

1.数据库安全性概述

数据库的安全性是指保护数据库

以防止不合法使用所造成的数据泄露,更改或破坏

系统安全保护措施是否有效是数据库系统

主要的性能指标之一

1.1数据库的不安全因素

 

 

1.2安全标准简介

 最重要的两个数据库安全标准

TCSEC标准和CC标准最为重要:

TCSEC(trusted computer system evaluation criteria)1985年美国国防部

可信计算机系统评估标准准则

后来1993年

加拿大,美国,欧洲将这三种准则集合成统一的,恁被广泛使用的IT安全准则

标准,这一行动被称为通用准则CC(common criteria)项目

CC 2.1于1999年被ISO采用国际标准

2001年被我国采用为国家标准


目前CC已经基本取代了TCSEC,成为评估信息产品安全性的主要标准。

 

 从这4个方面来描述安全性级别划分的标准:

安全策略

责任

保证

文档

 更具计算机系统对各项指标的支持情况,TCSEC将系统分为

4组(division)7个等级

 

将一切不符合更高标准的系统归于D组

ep:

dos是安全标准为D级的操作系统

它具有操作系统的基本功能:文件系统,进程调度等

dos在安全性方面几乎没有什么机制来保障

 

 C1级

非常初级的自我安全保护

能够实现用户和数据的分离,进行自我存取控制(DAC),

保护或限制用户权限的传播

现有的商业系统稍作改进即可满足

 

 

 

 

 

 

2.数据库安全性控制

在一般计算机系统中,安全措施是一级一级层层设置的。

例如,在图4.2所示的安全
模型中,用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,
只有合法的用户才准许进入计算机系统;

对已进入系统的用户,数据库管理系统还要进行
存取控制,只允许用户执行合法操作;

操作系统也会有自己的保护措施;

数据最后还可以
以密码形式存储到数据库中。
 

  

 

 

 

 

2.1用户身份鉴别

 用户身份鉴别(identification&authentication)

系统提供的最外层安全保护措施

用户标识:由用户名和用户标识号(UID)组成

 

4.2存取控制

 

 存取控制机制组成:

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

用户对某一数据对象的操作权力称为权限

DBMS提供适当的语言来定义用户权限,存放在数据字典中

称作安全规则或授权规则

(2)合法权限检查

用户发出存取数据库操作请求

DBMS查找数据字典,进行合法权限检查

用户权限定义和合法权检查机制一起组成了DBMS的存取控制子系统

 

自主存取控制方法

(1)用户对不同的数据对象有不同的存取权限

(2)不同的用户对同于同一对象也有不同的权限

(3)用户还可以将其拥有的存取权限转授给其他用户

 结构化查询语言通过

grant语句和revoke语句实现自主存取控制

数据库权限是由两个部分组成的:

对象和操作类型

 

 

 所以grant语句:

就是对指定操作对象的指定操作权限授予给指定的用户

 有with grant option

则可以再转授权限,没有指定,则不能传播权限

DBMS不允许循环授权

 

 能够进行权限授予的人有:

数据库管理员

数据库对象创建者

拥有给权限的用户

 接受该权限的用户可以是

一个或多个具体用户

或者PUBLIC

 最简单的一种授权操作:
将一种权限授予一个用户

 全部权限可以用简单的

all privileges来代表

一次向多个用户传播多种同类对象的权限

所有用户可以用public来代表

 

 记住对属性列的授权必须明确指出对应的属性列名

(一次完成了对基本表和属性列这些不同对象的授权

属性列对象放在权限名称后面)

 

with grant option 

我们由上可知:

U5不仅拥有了对表SC的insert权限,还可以传播此权限

前面我们讨论了如何授予权限

授予的权限可以由数据库管理员或者其他授权这用revoke语句收回

 

 注意这还有可选选项

cascade:级联回收——如果回收了这个用户的权限,那么你还可以把他

传播出去的权限回收回来

 回收权限时,如果使用了级联回收,那么如果出现循环授权,那么

会找不到起始点。

 

 前面的例子中,U5将insert权限传播给了U6和U7

 

 

 DBA想把这些完全相同的权限

授权给不同的用户

非常麻烦!!!!

 

 

 to 的对象不再是用户,而是特定的用户

 

授予者是角色的创建者或拥有在这个角色上的ADMIN
OPTION

 

 

 

 

除了对学生表的更新,插入和查找

我们现在还增加了

delete权限 

 

 

 财务人员可以创建一个工资副本表

将原本工资表上的数据查询到上面(变成它自己的数据)

再将副本表的查询权限设为公开

自主存取控制仅仅通过对数据的存取权限来进行安全控制

数据本身并无安全性标识

 

 

 

 

 

 

 原来是机密的信息,把他存到公开中。那么都能看到机密信息

 数据的密级标记会被带过去

 就不会数据泄密了

 

 

4.3视图机制

可以对不同的用户定义不同的视图,把数据对象限制在一定的范围内。

视图机制间接地实现支持存取谓词的用户权限定义。

例如,

在某大学中

假定王平老师只能检索计算机系学生的信息,

系主任张明具有检索和增删改计算机系学生信息的所有权限。

这就要求系统能支持“存取谓词”的用户权限定义。在不直接支持存取
谓词的系统中,可以先建立计算机系学生的视图CS_ Student, 然后在视图上进一步定
义存取权限。

 这样我们就可以先建立视图

然后将视图的不同权限授权给王平和张明老师

4.4审计

审计功能是DBMS达到C2以上安全级别必不可少的一项指标

审计功能是把用户对数据库的所有操作放到审计日志(audit log)中

审计员可以用审计日志监控数据库中的各种行为

重现导致数据现有状况的一系列事件

找除非法存取数据的人,时间和内容

 

1.审计事件

 

2.审计功能

 3.audit语句和noaudit语句

audit语句用于设置审计功能

noaudit语句取消审计功能

审计一般可分为用户级审计和系统级审计:

用户级审计是任何用户可设置的审计:主要是用户对自己创建的数据库表

或视图进行审计,记录用户对这些表或视图的成功或不成功的访问要求以及

各种类型的SQL操作。

系统级审计只能由数据管理员设置,是以监测成功或失败的登陆要求,

检测授权和收回操作以及其他数据库级权限下的操作

 审计什么

audit   DML

on  对象

审计设置以及审计日志一般都存储在数据字典中。

必须把审计开关打开(即把系统参数audit _trail 设为true),

才可以在系统表SYS_ AUDITTRAIL中查看到审计信息。
数据库安全审计系统提供了一种事后检查的安全机制。

安全审计机制将特定用户或者
特定对象相关的操作记录到系统审计日志中,作为后续对操作的查询分析和追踪的依据。
通过审计机制,可以约束用户可能的恶意操作。
 

4.5数据加密

对于高敏感数据:财务数据,军事数据等

还可以采用数据加密技术

数据加密是防止数据库数据在存储和传输中失密的有效手段

加密的基本思想是

更具一定的算法将原始数据——明文(plain text)

变换为不可直接识别的格式——密文(cipher text)

从而使得不知道解密算法的人无法获知数据的内容

数据加密包括存储加密和传输加密

1.存储加密

提供透明和不透明两种存储加密方式

透明存储加密是内核级加密保护方式,对用户完全透明

而非透明存储加密则是通过多个加密函数实现的。

 

2.传输加密

在客户/服务器结构中,

数据库用户与服务器之间若采用明文方式传输数据,容易被网
络恶意用户截获或篡改,存在安全隐患。

因此,为保证二者之间的安全数据交换,数据库
管理系统提供了传输加密功能。
 

常用的传输加密方式如链路加密和端到端加密。

其中,链路加密对传输数据在链路层进行加密,

它的传输信息由报头和报文两部分组成,前者是路由选择信息,而后者是传送
的数据信息。这种方式对报文和报头均加密。

相对地,端到端加密对传输数据在发送端加
密,接收端解密。它只加密报文,不加密报头。

与链路加密相比,它只在发送端和接收端
需要密码设备,而中间节点不需要密码设备,因此它所需密码设备数量相对较少。但这种
方式不加密报头,从而容易被非法监听者发现并从中获取敏感信息。

上图是基于安全套接协议(security socket layer,SSL)的数据库管理系统可信方案

采用端到端的传输加密方式

通信双方协商建立可信连接

一次会话采用一个密钥

传输数据在发送端加密,接收端解密

有效降低重放攻击和恶意篡改的风险

实现思路包含:

 


数据库加密使用已有的密码技术和算法对数据库中存储的数据和传输的数据进行保
护。

加密后数据的安全性能够进一步提高。

即使攻击者获取数据源文件,也很难获取原始
数据。

但是,数据库加密增加了查询处理的复杂性,查询效率会受到影响。

加密数据的密钥的管理和数据加密对应用程序的影响也是数据加密过程中需要考虑的问题。

6.其他安全保护

在自主存取控制和强制存取控制外

还有推理控制以及数据库应用中的隐蔽信道和数据隐私保护技术

利用低安全等级信息推导出

 函数依赖关系的推理出

其无权访问的高安全等级信息

 

 

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

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

相关文章

基于SpringBoot+Vue的漫画网站设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

利用 Python 结合 UI 来模拟实现多人聊天

一、界面功能展示 1、设置一个通信 用户1 2、设置通信 用户2 3、进入聊天功能界面 4、发送信息来实现实时通信 二、代码实现 1、服务器端 (服务器需要能够与客户机进行直接通信,客户机之间不需要能够通信) 服务器需要配置监听的IP 0.0.…

改进粒子群算法优化BP神经网络---回归+分类两种案例

今天采用改进的粒子群算法(LPSO)优化算法优化BP神经网络。本文选用的LPSO算法是之前作者写过的一篇文章:基于改进莱维飞行和混沌映射(10种混沌映射随意切换)的粒子群优化算法,附matlab代码 文章一次性讲解两种案例,回归…

Mr. Cappuccino的第58杯咖啡——MacOS配置Maven和Java环境

MacOS配置Maven和Java环境 查看Mac使用的是哪个shell下载并准备Maven下载Maven配置前准备 下载并安装JDK下载JDK安装JDK 配置Maven和Java环境添加配置加载配置 验证环境 查看Mac使用的是哪个shell echo $SHELL如果使用的是bash,则使用以下命令 open ~/.bash_profi…

Java课题笔记~ MyBatis接口开发(代理开发)

使用XML文件进行开发,在调用SqlSession进行操作时,需要指定MyBatis映射文件中的方法,这种调用方式过于烦琐。为解决此问题,MyBatis提供了接口开发的方式。 接口开发的目的: 解决原生方式中的硬编码 简化后期执行SQL …

PHP语言基础知识(超详细)

文章目录 前言第一章 PHP语言学习介绍 1.1 PHP部署安装环境1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍2.2 PHP常量变量介绍 2.2.1 PHP变量知识:2.2.2 PHP常量知识: 2.3 PHP注释信息介绍2.4 PHP数据类型介绍 2.4.1 整形数据类型2.4…

【elementui】解决el-select组件失去焦点blur事件每次获取的是上一次选中值的问题

目录 【问题描述】 【问题摘要】 【分析问题】 【完整Test代码】 【封装自定义指令】 ↑↑↑↑↑↑↑↑↑↑↑↑ 不想看解决问题过程的可点击上方【封装自定义指令】目录直接跳转获取结果即可~~~ 【问题描述】 一位朋友遇到这么一个开发场景:在表格里面嵌入el-…

Packet Tracer - 配置初始交换机设置

Packet Tracer - 配置初始交换机设置 拓扑 目标 第 1 部分:检验默认交换机配置 第 2 部分:配置基本交换机配置 第 3 部分:配置 MOTD 标语 第 4 部分:将配置文件保存到 NVRAM 第 5 部分:配置 S2 拓扑图 背景信息…

【Mybatis】XML映射文件

目录 11.3XML映射文件 1.select 2.insert、update、delete 3.Sql 4.parameters(参数) 5.resultMap 6.resultMap 使用示例 (1)在先前创建的数据库stu中创建表student 2,并插入若干条数据,代码如下: (2)创建工程mybatis_ResultMap_demo。 (…

Qt项目---简单的计算器

在这篇技术博客中,我们将介绍如何使用Qt框架实现一个简单的计算器应用。我们将使用C编程语言和Qt的图形用户界面库来开发这个应用,并展示如何实现基本的算术操作。 项目设置 首先,我们需要在Qt Creator中创建一个新的Qt Widgets应用程序项目…

7.物联网操作系统互斥信号量

优先级翻转问题 优先级翻转功能需求 优先级翻转功能实现 一。实验:优先级翻转问题 1.优先级翻转的解释 (1)有三个任务,一个任务L优先级最低,一个任务M优先级为中间,一个任务H优先级为最高。 &#xff08…

SpringBoot集成企业微信群聊机器人消息

目录 参考文档概述一、功能作用二、应用场景三、 群机器人发送限制四、创建机器人1、添加2、群机器人Webhook地址 五、发送消息1、文本 text请求体 图文连接 news 参考文档 官方文档 企业微信群机器人应用 概述 现在很多企业都在使用企业微信进行工作交流,自从企…

静态路由下一跳地址怎么确定(静态路由配置及讲解)

一、用到的所有命令及功能 ①ip route-static 到达网络地址 子网掩码 下一跳 // 配置静态路由下一跳指的是和当前网络直接连接的路由器的接口地址非直连网段必须全部做路由路径是手工指定的,在大规模网络上不能用,效率低,路径是固定的稳定的…

寻找旋转排序数组中的最小值——力扣153

文章目录 题目描述解法 二分法 题目描述 解法 二分法 int findMin(vector<int>& nums){int l0, rnums.size()-1;while(l<r){int mid (lr)/2;if(nums[mid]<nums[r]) rmid;else lmid1;}return nums[l];}

基于freeRTOS的垃圾桶(cubeMX)

前言&#xff1a;最近学习了freertos的任务、队列、互斥量、任务标志位等理论知识&#xff0c;看着都会就怕一练就废&#xff0c;于是打算做些项目巩固一下&#xff0c;加深一下对freertos知识的理解。 一、项目介绍 项目简单需求&#xff1a; 检测靠近时&#xff0c;垃圾桶自…

APUE学习62章终端(二): stty命令特殊字符终端标志

1. stty命令 stty命令的英文解释: 很明显stty有一个-F参数 所以准确的说: stty命令是设置当前终端驱动程序(也有可能直接配置了硬件&#xff0c;这点目前不清楚)的属性&#xff0c;使当前终端的驱动程序能够使能/去使能一些特殊字符的识别与处理等等 2. stty命令的结构 3. 终端…

Python web实战之 Django 的 ORM 框架详解

本文关键词&#xff1a;Python、Django、ORM。 概要 在 Python Web 开发中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff0c;对象关系映射&#xff09;是一个非常重要的概念。ORM 框架可以让我们不用编写 SQL 语句&#xff0c;就能够使用对象的方式来操作数据…

总结946

6:40起床 7&#xff1a;15~8:00早读&#xff0c;07年tex1,2 8:10~10:12 880第二章选填&#xff0c;题目有些综合&#xff0c;错的有些多呀&#xff0c;不要紧&#xff0c;拿下它&#xff0c;就有进步了。 10:28~11:27重做强化18讲6道题 12&#xff1a;10~2:15吃饭睡觉&…

MySQL 三大日志日志:undo log、redo log、binlog

目录 一条SQL的执行流程 为什么需要 undo log&#xff1f; undo log 是如何刷盘&#xff08;持久化到磁盘&#xff09;的&#xff1f; 为什么需要 Buffer Pool&#xff1f; Buffer Pool 缓存什么&#xff1f; Undo 页是记录什么&#xff1f; 查询一条记录&#xff0c;就只需…

代码随想录算法训练营第三十二天 | Leetcode随机抽题检测

Leetcode随机抽题检测 46 全排列未看解答自己编写的青春版重点题解的代码日后复习重新编写 78 子集未看解答自己编写的青春版重点题解的代码日后复习重新编写 17 电话号码的字母组合未看解答自己编写的青春版重点题解的代码日后复习重新编写 39 组合总和未看解答自己编写的青春…