数据库安全性
数据库安全性控制
视图机制
审计
数据加密
统计数据库安全性
一.授权
1.把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
2.把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;
3.把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
4.把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno),SELECT
ON TABLE Student
TO U4;
对属性列的授权时必须明确指出相应属性列名
5.把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANTE INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
6.执行例5后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限
GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;
7.同样,U6还可以将此权限授予U7
GRANT INSERT ON TABLE SC TO U7;
但U7不能再传播此权限.
二.回收
9.把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
10.把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;
将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回
->U5->U6->U7
系统只收回直接或间接从U5处获得的权限
<-U5<-U6<-U7
三.创建数据库模式的权限
CREATE USER
[with] [DBA | RESOURCE | CONNECT]
数据库角色
一.角色的创建
CREATE ROLE <角色名>
二.给角色授权
GRANT <权限> [,<权限>]…
ON <对象类型>对象名
TO <角色> [,<角色>] …
三.将一个角色授予其他的角色或用户
GRANT <角色1> [, <角色2> ] …
TO <角色3> [, <用户1>] …
[WITH ADMIN OPTION]
四.角色授权的收回
REVOKE <权限> [, <权限> ] …
ON <对象类型> <对象名>
FROM <角色> [, <角色> ] …
11.通过角色来实现将一组权限授予一个用户.
步骤如下:
1.首先创建一个脚色 R1
CREATE ROLE R1;
2.然后使用GRANT语句,使角色R1拥有Student表的SELECT,UPDATE,INSERT权限
GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;
3.将这个角色授予王平,张明,赵玲.使他们具有角色R1所包含的全部权限
GRANT R1
TO 王平,赵明,赵玲;
4.可以一次性通过R1来回收王平的这3个权限
REVOKE R1
FROM 王平;
12 角色的权限修改
GRANT DELETE
ON TABLE Student
TO R1;
REVOKE SELECT
ON TABLE Student
FROM R1;
主体是系统中的活动实体
DBMS所管理的实际用户
代表用户的各进程
客体是系统中的被动实体,是受主体操纵的
文件
基表
索引
视图
敏感度标记(Label)
绝密
机密
可信
公开
主体的敏感度标记称为许可证级别
客体的敏感度标记称为密级
强制存取控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体
修正规则
主体的许可证级别 <=客体的密级 主体能写客体
规则的共同点
禁止了拥有高许可证级别的主体更新低密级的数据对象
DAC与MAC共同构成DBMS的安全机制
实现MAC时要首先实现DAC
原因:较高安全性级别提供的安全保护要包含较低级别的所有保护
4.3视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
主要功能是提供数据独立性,无法完全满足要求
间接实现了支持存取谓词的用户权限定义
14.建立计算机系学生的视图,把对该视图的SELECT权限授予王平,把该视图上的所有操纵权限授予张明
先建立计算机系学生的视图CS_Student
CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept=‘CS’;
在视图上进一步定义存取权限
GRANT SELECT
ON CS_Student
TO 王平;
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;
4.4 审计
什么是审计
审计日志(Audit Log)
将用户对数据库的所有操纵记录在上面
DBA利用审计日志
找出非法存取数据的人,时间和内容
C2以上安全级别的DBMS必须具有
审计分为
用户级审计
针对自己创建的数据库表或视图进行审计
记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
系统级审计
DBA设置
监测成功或失败的登录要求
监测GRANT和REVOKE操作以及其他数据库级权限下的操作
AUDIT语句:设置审计功能
NOAUDIT语句:取消审计功能
15.对修改SC表结构或修改SC表数据的操作进行审计
AUDIT ALTER,UPDATE
ON SC;
16.取消对SC表的一切审计
NOAUDIT ALTER,UPDATE
ON SC;
4.5 数据加密
数据加密
防止数据库中数据在存储和传输中失密的有效手段
加密的基本思想:根据一定的算法将原始数据变换为不可直接识别的格式
加密方法
替代方法:使用密钥将明文中的每一个字符转换为密文中的一个字符
置换方法:将明文的字符按不同的顺序重新排列
混合方法:数据加密标标准
DBMS中的数据加密
统计数据库
允许用户查询聚集类型的信息(如合计,平均值等)
不允许查询单个记录信息
统计数据库中特殊的安全性问题
隐蔽的信息通道
能从合法的查询中推导出不合法的信息
规则1:任何查询至少要设计N(N足够大)各以上的记录
规则2:任意两个查询的相交数据项不能超过M个
规则3:任一用户的查询次数不能超过1+(N-2)/M
数据库安全机制的设计目标:
试图破坏安全的人所花费的代价 >> 得到的利益
实现数据库系统安全性的技术和方法
存取控制技术
视图技术
审计技术
自主存取控制功能
通过SQL的GRANT语句和REVOKE语句实现
角色
使用角色来管理数据库权限可以简化授权过程
CREATE ROLE语句创建角色
GRANT语句给角色授权