第四章 数据库保护
数据库安全性控制
- 非法使用数据库的情况
- 编写合法程序绕过及DBMS其授权机制
- 直接或编写应用程序执行非授权操作
- 通过多次合法查询数据库从中推导出一些保密数据
- 计算机系统中,安全措施是一级一级层层设置
- 计算机系统的安全模型
用户识别和鉴别
- 用户标识与鉴别:系统提供的最外层安全保护措施
- 用户标识:用户名、用户标识号
- 口令:系统核对口令以鉴别用户身份
- 用户名和口令易被窃取:每个用户预先约定好一个计算过程或者函数
存取控制
- 存取控制机制组成:定义用户权限、合法权限检查 。用户权限定义和合法权检查机制一起组成了DBMS的安全子系统
- 常用存取控制方法
- 自主存取控制(Discretionary Access Control ,简称DAC)
C2级
灵活 - 强制存取控制(Mandatory Access Control,简称 MAC)
B1级
严格
- 自主存取控制(Discretionary Access Control ,简称DAC)
- 用户权限组成:数据对象、操作类型
- 定义用户存取权限:定义哪些用户可以在哪些数据库对象上进行哪些类型的操作,是策略问题,DBMS应提供机制
- 关系数据库系统中存取控制对象
授权与回收
GRANT
- GRANT语句的一般格式:
1
2
3
4GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];语义:将对指定操作对象的指定操作权限授予指定的用户
发出GRANT的用户:
- DBA
- 数据库对象创建者(即属主Owner)
- 拥有该权限的用户
按受权限的用户
- 一个或多个具体用户
- PUBLIC(全体用户)
WITH GRANT OPTION子句:
- 指定:可以再授予
- 没有指定:不能传播
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22/*把查询Student表权限授给用户U1*/
GRANT SELECT
ON TABLE Student
TO U1;
/*把对Student表和Course表的全部权限授予用户U2和U3*/
GRANT ALL PRIVILIGES
ON TABLE Student, Course
TO U2, U3;
/*把对表SC的查询权限授予所有用户*/
GRANT SELECT
ON TABLE SC
TO PUBLIC;
/*把查询Student表和修改学生学号的权限授给用户U4*/
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
/*属性列的授权时必须明确指出相应属性列名*/
/*把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户*/
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;REVOKE
授予的权限可以由DBA或其他授权者用REVOKE语句收回
REVOKE语句的一般格式为:
1
2
3REVOKE <权限>[,<权限>]...
[ON <对象类型> <对象名>]
FROM <用户>[,<用户>]...;级联删除
1
2
3
4
5
6/*用户U5对SC表的INSERT权限收回*/
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
/*将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回
系统只收回直接或间接从U5处获得的权限 */
数据库角色:被命名的一组与数据库操作相关的权限
- 角色是权限的集合
- 可以为一组具有相同权限的用户创建一个角色
- 简化授权的过程
- 类比:Windows操作系统中的用户组
第五章 数据库完整性
数据库的完整性:数据的正确性和相容性
数据的完整性和安全性是两个不同概念
- 数据的完整性
- 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
- 防范对象:不合语义的、不正确的数据
- 数据的安全性
- 保护数据库防止恶意的破坏和非法的存取
- 防范对象:非法用户和非法操作
- 数据的完整性
完整性约束的分类
完整性约束条件中涉及的约束对象
- 关系
- 元组
- 列
值约束和结构约束
例:在向“学生成绩”关系中插入数据和更新数据时,需检查新的“学号”和“课程号”是否在“学生”关系和“课程”关系中已存在,否则不允许插入和更新。静态约束与动态约束
例:动态约束的例子,在更新“学生”关系中的“年龄”字段时,新值必须大于旧值立即执行约束和延迟执行约束
例:银行业务中,从账户A转移资金X到账户B,约束条件是总资金不变
为维护数据库的完整性,DBMS必须:
- 提供定义完整性约束条件的机制
- 提供完整性检查的方法
- 违约处理