第四章--数据库的安全性
- 存在不安全因素
- 为了尽可能地减少不安全因素,所以数据库安全性是有必要学习的。可以采用数据库安全性控制,有以下三种方法。
其中主要能使用代码掌握第三种方法即可。第三种方法自主存取控制主要通过grant、revoke来控制,由两个元素构成:数据库对象和操作权限(这部分代码我在第三章做了个简单的介绍)。
- 操作权限
grant:授权--授权命令是由数据库管理员使用,若分配权限时带了with great option,则普通用户获得权限后,可把自己的权限授予其他用户。
基本格式:grant <权限> on table <表名> to <用户>
revoke:回收权限
基本格式:revoke <权限> on table <表名> from <用户>
- 数据库对象(数据库角色)
对象指一类人,比如CEO、总监。可以给一类人授权。
角色的创建:create role<角色名>
角色授权:grant <权限> on <对象类型> 对象名 to <角色1><角色2>
把角色授权给其他用户或者角色:grant <权限> to 角色或者用户名(在后面加上with admin option语句还可以让该角色把这个权限授予其他角色)
角色权限的收回:revoke <权限> on <对象名> from 角色名字
- 其他安全性的一些操作(视图机制、审计、数据加密等)
视图机制:为不同的用户定义不同的视图,把不需要的数据给隐藏起来,这样用户就不会进行该操作。可以保护一部分的数据。
审计:把对数据库的所有操作都记录到审计日志中,然后就可以通过日志审查这个里面是否有一些非法行为。
如:对修改学生信息表数据的操作进行审计:audit update on 学生信息表
取消对学生信息表的一切审计:noaudit update on 学生信息表
数据加密:通过一些算法,将明文变成密文,这样可以使别人无法查看。