第四章 数据库安全性
一、数据库安全性控制常用方法
1、用户表示与鉴别
最外层安全保护措施
口令:系统核对口令鉴别用户身份
用户名和口令容易被窃取
2、存取控制
DBMS安全子系统:定义用户权限、合法权限检查
自主存取控制(DAC):C2,灵活
通过SQL的grant和revoke语句实现:数据对象+操作类型,用户可以在哪些数据库进行哪些操作,定义存取权限叫做授权。
授权(DBA、数据库对象创建者、拥有该权限的用户):
grant 权限
on 对象类型 对象名
to 用户
[with grant option]
with grant option:表示可以再授予,否则无法传播
不允许循环授权:
to public:表示将权限授予所有用户
回收:
revoke 权限
on 对象类型 对象名
from 用户
当系统回收用户A的权限时,只收回直接或间接从用户A获得的权限,也就是cascade(级联)收回。
授权者:
DBA拥有所有对象的所有权限、用户拥有自己建立的对象的全部操作。
create user 用户名 with [DBA | RESOURCE | CONNECT]
数据库角色:
角色是权限的集合
创建角色
create role 角色名
角色授权
grant 权限
on 对象类型 对象名
to 角色
[with grant option]
回收角色权限
revoke 权限
on 对象类型 对象名
from 角色
强制存取控制(MAC):B1,严格
主体:系统中的活动实体(DBMS管理的实际用户、代表用户的各进程)
客体:系统的被动实体,受主体所操控
敏感度标记:绝密、机密、可信、公开
主体的敏感度标记叫:许可证级别
客体的叫密级。
只有主体的许可证级别大于等于密级时才能读取相应的客体。
足有主体的许可证级别小于等于客体的密级时,主体才能写入相应的客体。
实现MAC首先要实现DAC。
视图机制
用户无法看保密的数据,主要是提供数据独立性。
审计
审计日志:记录用户对数据库的所有操作。DBA通过检测日志找出非法的人,C2级别以上的人必须有。
用户级审计:用户编写的SQL语句啥的
系统级审计:登录、grant、revoke啥的
添加审计:
audit alter,update
on 表名;
取消审计
noaudit alter,update
on 表名;
数据加密
明文----加密(加密秘钥)--密文--传输---密文--解密(解密密钥)-----明文
数据库安全机制的目标
试图破坏安全的人所花费的代价>>得到的利益。