前言
"<数据库原理及应用>(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统计数据库的安全性
本书讲了不少,最后结论统计数据库基本上都不安全.但防范起来很简单,给很少的搜索权限即可
小结
数据库安全性理论部分的解读