第四章 数据库安全性

问题的提出

(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.其他安全保护

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

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

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

 函数依赖关系的推理出

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

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL日志——查询日志

1.查询日志 show variables like %general%;修改mysql的配置文件 /etc/my.cnf文件,添加如下内容: #该选项用来开启查询日志,可选值:0或者1;0代表关闭,1代表开启 general_log1 #设置日志的文件名&#xff0…

C# Blazor 学习笔记(8):row/col布局开发

文章目录 前言相关文章代码row和col组件B_rowB_col结构 使用 前言 可能是我用的element ui和 uView这种第三方组件用的太多了。我上来就希望能使用这些组件。但是目前Blazor目前的生态其实并不完善,所以很多组件要我们自己写。 我们对组件的要求是 我们在组件化一共…

纯粹即刻,畅享音乐搜索的轻松体验

纯粹即刻,畅享音乐搜索的轻松体验 在当今快节奏的生活中,我们常常渴望一种简单而便捷的方式来探索和享受音乐。现在,你可以纯粹即刻地畅享音乐搜索的轻松体验。无论你是寻找热门歌曲还是探索不同风格的音乐,这款应用将为你带来随…

地址空间细致入微+深入了解页表

目录 地址空间保存了什么? 页表到底是怎么存储的 我们都知道,我们进程看到的空间其实是虚拟内存,真正的内存是需要页表的映射才能找到真正的物理内存,那么我我们有两个问题的引出那么进程地址空间是保存了什么呢?页表…

Maven项目解决cannot resolve plugin maven-deploy-plugin:2.7

导入maven项目后,编辑的时候提示一些插件加载失败!大概率是你的网络有问题,插件下载失败。 如下图:(网络突然好了,我想截图但是没有复现,用网上找到的截图代替,明白意思就行&#x…

一起学算法(选择排序篇)

距离上次更新已经很久了,以前都是非常认真的写笔记进行知识分享,但是带来的情况并不是很好,一度认为发博客是没有意义的,但是这几天想了很多,已经失去了当时写博客的初心了,但是我觉得应该做点有意义的事&a…

xlrd与xlwt操作Excel文件详解

Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。下面是各个模块的支持情况: .xls.xlsx获取文件内容写入数据修改文件内容保存样式调整插入图片xlrd√√√xlwt√√√√√xlutils√√√√xlwings√√√√√…

13-5_Qt 5.9 C++开发指南_基于信号量的线程同步_Semaphore

文章目录 1. 信号量的原理2. 双缓冲区数据采集和读取线程类设计3. QThreadDAQ和QThreadShow 的使用4. 源码4.1 可视化UI设计框架4.2 qmythread.h4.3 qmythread.cpp4.4 dialog.h4.5 dialog.cpp 1. 信号量的原理 信号量(Semaphore)是另一种限制对共享资源进行访问的线程同步机制…

【MMCV】mmpretrain/mmclassification概览、环境安装与验证

概览 MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络, 并支持了不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSelfSup,并开发了许多令人兴奋的新功能。 目前,预训练阶段对于视觉识别至关重要,凭借丰富而强…

基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器

>>了解文件描述符 文件描述符分为两类,一类是用于监听的,一类是用于通信的,在服务器端既有监听的,又有通信的。而且在服务器端只有一个用于监听的文件描述符,用于通信的文件描述符是有n个。和多少个客户端建立了…

【Spring Boot】请求参数传json对象,后端采用(map)CRUD案例(101)

请求参数传json对象,后端采用(map)接收的前提条件: 1.Spring Boot 的Controller接受参数采用:RequestBody 2.需要一个Json工具类,将json数据转成Map; 工具类:Json转Map import com…

Linux部署jar包,隐藏命令行参数

Linux部署jar包,隐藏命令行参数 一、背景需求二、查阅资料三、实现隐藏库3.1、测试test.c3.2、设置隐藏库3.3、验证 四、应用jar启动命令五、直接应用结果 最新项目安全检测,发现配置文件中数据库密码,redis密码仍处理明文状态 于是整理了一篇…

linux快速安装tomcat

linux快速安装tomcat 前提安装好jdk 下载Tomcat安装包 wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz如果出现颁发的证书已经过期的错误提示,用下面命令 wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-1…

链表的总体涵盖以及无哨兵位单链表实现——【数据结构】

😊W…Y:个人主页 在学习之前看一下美丽的夕阳,也是很不错的。 如果觉得博主的美景不错,博客也不错的话,关注一下博主吧💕 在上一期中,我们说完了顺序表,并且提出顺序表中的问题 1. 中…

AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)

AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储) 1. 前言2. 关于Amazon EFS2.1 Amazon EFS全称2.2 什么是Amazon EFS2.3 优点和功能2.4 参考官网 3. 创建文件系统3.1 创建 EC2 实例3.2 创建文件系统 4. 在Linux实例上挂载…

Pytorch深度学习-----神经网络之Sequential的详细使用及实战详解

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Co…

Sui主网升级至V1.6.3版本

Sui主网现已升级至V1.6.3版本,此升级包含了多项修复和优化。升级要点如下所示: #13029 在构建Move代码时,可能会出现与实现自定义transfer/share/freeze函数相关的额外linter警告。这些函数是为了实施自定义的transfer/share/freeze策略而…

Vue3 基础知识点汇总 自学笔记,记录难点 和 新知识点

1.vue3 基础 1.1vue3基础及创建 npm init vue@latest1.2.熟悉项目目录及关键文字 1.3 组合式API-setup 1.4.组合式 API reactive 和ref 函数 (都是为了生成响应式数据) 1.5.组合式API-computed 计算属性函数 1.6.watch 函数 1.7.组合式API-生命周期函数 1.8.组合式 API-父子…

记录 Vue3 + Ts 类型使用

阅读时长: 10 分钟 本文内容:记录在 Vue3 中使用 ts 时的各种写法. 类型大小写 vue3 ts 项目中,类型一会儿大写一会儿小写。 怎么区分与基础类型使用? String、string、Number、number、Boolean、boolean … 在 js 中, 以 string 与 String…

【多线程初阶】多线程案例之单例模式

文章目录 前言1. 什么是单例模式2. 饿汉模式3. 懒汉模式 --- 单线程版4. 懒汉模式 --- 多线程版5. 懒汉模式 --- 多线程改进版总结 前言 本文主要给大家讲解多线程的一个重要案例 — 单例模式. 关注收藏, 开始学习吧🧐 1. 什么是单例模式 单例模式是一种很经典的…