数据库原理及应用_数据库管理和保护_第5章数据库的安全性_理论部分

前言

"<数据库原理及应用>(MySQL版)".以下称为"本书"中第5章前6节内容

引入

数据库的安全性是非常重要的,表现在两个方面:一数据的访问权限,二数据的物理安全.本书在这一章前6节基本上都是理论性的内容,选择其中重要部分进行解读.

5.1数据库安全性概述

大体在讲解数据库安全的重要性.其中提到了"自主"和"强制"存取的概念

自主存取控制

|-----|---------|----------|----------|----------|
|   | 读SELECT | 插入INSERT | 修改UPDATE | 删除DELETE |
| 用户1 | Y | Y | Y | Y |
| 用户2 | Y | N | N | N |
| ... | ... | ... | ... | ... |
| 用户n | Y | Y | N | N |
| | | | | |
| 表A的自主存取控制表 |||||

如上表,对于每个表都可以设置一个自主存取权限表,列出每个用户的操作权限

|-----|---------|------------|--------------|--------|
|   | 索引Index | 资源Resource | 修改Alteration | 撤销Drop |
| 用户1 | Y | Y | Y | Y |
| 用户2 | Y | N | N | N |
| ... | ... | ... | ... | ... |
| 用户n | Y | Y | N | N |
| | | | | |
| 数据库B的自主存取权限表 |||||

同理对于每个数据库,也可设置一个权限表.

自主存取控制的优点是"精细",也是常见的方法.

强制存取控制

可以用两个表来说明含义

|-----|------|---|-----|------|
|   | 用户等级 | |   | 数据等级 |
| 用户1 | 1 | | 数据1 | 2 |
| 用户2 | 2 | | 数据2 | 4 |
| ... |   | | ... |   |
| 用户n | 6 | | 数据n | 5 |
| | | | | |
| 用户等级表 || | 数据等级表 ||

用户和数据(表或者数据库)的关系是:当用户等级数字小于数据等级数字,即拥有存取权限.例如用户1的等级为1等(假设为最高等),则对所有表(或所有数据库)的数据拥有权限.再例如用户n的等级为3等,有个表的数据等级为2等.则用户n被禁止访问这个表(或者可访问但禁止修改删除).

5.2数据库安全控制

本节从4个方面来说明数据库安全性,图5-1计算机系统的安全模型

1.用户标识与鉴别能力

例如用户名密码输入,搜索数据库中的user表,查找用户名,如果不能匹配,则显示"该用户不存在";匹配到之后用SELECT语句搜索其密码,再用输入密码与表中密码匹配,匹配成功允许登陆,否则显示"密码输入不正确"---以上也是登陆的需求描述,可以根据需求写出算法.

本书P137提到了"用户的特有东西识别",例如先行用电子狗验证,再识别用户和密码.

其余略

2.数据库用户存取权限控制

和5.1节中内容相关,此处的++授权与取消++等内容,在后面有详细讲述.

3.操作系统安全保护

数据库管理软件DBMS始终是安装在操作系统上的.他与数据的交互依赖于操作系统.如果操作系统有漏洞可能导致数据泄露或被破坏.但对于非操作系统的数据库程序员来说,要懂操作系统,本书并没有相关讲解.

4.数据加密存储

即使数据被非法取得,数据的安全性也可以由加密来保护.在后面有所讲述.

5.3视图机制

前面提到过视图的意思是:查询语句文件化.通过一个表的查询产生视图,相当于生成表的副本.

视图机制是在视图(表副本)的基础上,给不同用户授予权限.

**---**笔者个人感觉用处不大,因为要建立视图需要多占空间.直接在数据库上定义权限更好.

5.4安全级别和审计追踪

安全级别就是安全的等级.

本书P141倒数第二段提到了审计追踪的概念:审计功能把用户对数据库的所有操作自动记录下来放入"审计日志"(audit log)中,称为审计追踪 .关于日志的建立,上一帖中的触发器有讲解.利用触发器机制,建立日志,可查询数据的变化.

5.5 数据加密

本书提到了两种加密法:替换加密法和转换加密法

替换加密法

原文的字符用其他某个域的符号代替.假设有一段原文:"我从山中来,带着兰花草."包括标点在内共12个字符,选取域符号为所有英文小写字母{a,b,c,d,e,f,g,h,i,j,k,l,m,n.....z},表达为{abcdefghijkl},那么每个汉字分别有对应的字母.

假设有n个字符的原文,去除重复后有m个字符,选取域符号有k个,那么有k*(k-1)*...*(k-m-1)种组合.例如这里就有26*25*....*13种可能.

转换加密法

原文字符重新排序.假设有n个字符,那么排序可能有n!种

图示

如果要解密的话,可能有k*(k-1)*...*(k-m-1)*(n!)种组合.如果字数很多,理论上解密时间是很长很长的.

但这只是简单描述数据加密情况,还有一些要考虑:

1>本书提到了替换加密法的问题:用多了可能被猜到.如果每次都用同一选取域,再根据写作的行文风格,是有这种可能的.站在加密方,准备很多个选取域.

2>替换算法中间还可以增加,例如前一半的字符采用选取域A,后一半的字符采用选取域B

声明

像以前的一些电影上一样,解密靠一本书或者字典.就是说密码破解可能很难,但设置容易.数据加密和解密是专门一门学科,某度可以搜"密码学",涵盖了概率论,数字逻辑,数论等许多和数学相关的学科.笔者只是一时兴起,仅根据本书内容做一点发散思考.

5.6统计数据库的安全性

本书讲了不少,最后结论统计数据库基本上都不安全.但防范起来很简单,给很少的搜索权限即可

小结

数据库安全性理论部分的解读

相关推荐
2302_809798324 小时前
【Redis】缓存的穿透、击穿和雪崩
数据库·redis·缓存
花哥码天下5 小时前
MySQL事务日志类型及作用解析
数据库·mysql
手握风云-5 小时前
MySQL数据库精研之旅第十七期:深度拆解事务核心(下)
数据库·mysql
亮子AI5 小时前
【PostgreSQL】如何实现主从复制?
数据库·postgresql
杏花春雨江南5 小时前
可重复读 是否“100%”地解决幻读?
数据库·mysql
曹牧5 小时前
Oracle:select top 5
数据库·sql·oracle
小蒜学长6 小时前
django全国小米su7的行情查询系统(代码+数据库+LW)
java·数据库·spring boot·后端
半夏陌离6 小时前
SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
java·数据库·mybatis
neo_Ggx236 小时前
MySQL数据库备份攻略:从Docker到本地部署
数据库·mysql·docker