第七章 数据库的安全性与完整性

29
7.1 基基基基 7.2 7.2 基基基基基基基 基基基基基基基 基基基 基基基 基基基基基基基基基基基 基基基基基基基基基基基 7.3 7.3 基基基基基基基基基 基基基基基基基基基 7.4 7.4 基基基 基基基 基基基基

Upload: mckile

Post on 15-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

第七章 数据库的安全性与完整性. 7 .1 基本概念. 7.2 数据库安全控制. 7.3 数据库的完整性控制. 7.4 触发器. 本章小结. 7.1 基本概念 数据库的安全性 是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 数据库的完整性 是指数据的正确性、有效性和相容性。 能适应网络环境下安全要求级别的数据库为 安全数据库 或 可信数据库 。 可信计算基 是指为实现数据库安全的所有实施策略和机制的集合。 数据安全性标准: P. 208 表 7.1. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第七章  数据库的安全性与完整性

7.1 基本概念

7.2 7.2 数据库安全控制数据库安全控制

第七章 第七章 数据库的安全性与完整性数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制7.4 7.4 触发器触发器

本章小结

Page 2: 第七章  数据库的安全性与完整性

第七章 数据库的安全性与完整性第七章 数据库的安全性与完整性

7.1 基本概念 数据库的安全性是指保护数据库以防止不合法的使用

所造成的数据泄露、更改或破坏。 数据库的完整性是指数据的正确性、有效性和相容性。 能适应网络环境下安全要求级别的数据库为安全数据

库或可信数据库。 可信计算基是指为实现数据库安全的所有实施策略和

机制的集合。 数据安全性标准: P. 208 表 7.1

Page 3: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

安全措施应该一级一级层层设置。 计算机系统的安全模型 P.207 图 7-1

用户标识和鉴别

DB数据密码存储

OS安全保护

DBMS存取控制

Page 4: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制 数据库安全控制方法一、用户标识与鉴别1. 利用用户自身具备的各种自然特征标识自己和提供鉴

别的依据。2. 利用用户持有的证件。3. 利用口令。 口令保密可采用的一些方法: ( 1 )扩大口令集和口令长度。 ( 2 )规定口令的生效时间,定期或不定期地更换口令。 ( 3 )设置多层口令系统。 ( 4 )设置动态口令。

Page 5: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

二 、 存取控制1. 存取控制方法 DBMS 的安全子系统主要包括两部分: 定义用户权限,并将用户权限登记到数据字典中。 合法权限检查,若用户的操作请求超出了定义的权限,系统将拒

绝执行此操作。 用户权限组成:数据对象和操作类型。 在数据库系统中,定义存取权限称为授权。( 1 ) 自主存取控制 (DAC) 用户对于不同的数据对象有不同的存取权限,不同的用户对同一

对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。

Page 6: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

( 2 )强制存取控制( MAC ) 在强制存取控制 (MAC) 方法中,每一个数据对象被标

以一定的密级,每一个用户也被授予某一个级别的许可证。

对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。 MAC 适用于对数据有严格而固定密级分类的部门。 主体是指数据库中数据访问者、(用户、 DBA )进程、

线程等,是系统中的活动实体。 客体是指数据库中数据及其载体(表、视图、索引、

存储过程等),是系统中的被动实体。

Page 7: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制 对于主体和客体, DBMS 为它们每个实例 ( 值 ) 指派

一 个敏感度标记 (Label) 。 敏感度标记被分成若干级别,例如绝密、机密、可信、公开等。

主体的敏感度标记称为许可证级别。 客体的敏感度标记称为密级。

客体子集主体子集 访

Page 8: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制 MAC 机制就是通过对比

主体的 Label和客体的 Label,最终确定主体是否能够存取客体。

当某一主体以标记 label注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:

① 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;

② 仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

这两种规则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。

Page 9: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

2. 存取控制的实现(1) 用户分类和权限 用户 :系统用户 (DBA) 、数据对象属主 (owner) 、一般用户、公共用户 (public) 。

权限:包括数据访问权限(读、插入、修改、删除等)和数据库模式修改权限(索引、资源、修改、撤消等)两类。

Page 10: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

1 、授权 GRANT语句向用户授予操作权限一般格式为: GRANT<权限 >[, <权限 >]… [ON<对象类型 ><对象名>] TO<用户 >[, <用户 >]... [WITH GRANT OPTION] 语义为: 将对指定操作对象的指定操作权限授予指定的用户。

可将此权限转授

对不同类型的操作对象有不同的操作权限。如 P130 表 3.4 所示。

Page 11: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制 例:把查询表 SC 和修改

其学号的权限授给用户 U2 和 U4 。 GRANT SELECT , UPDATE(Sno) ON TABLE SC TO U2 , U4 ;

例:把对表 SC 的 INSERT权限授给用户 U5,并允许将此权限再授予其他用户。

GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ; U5还可以将此权限授予 U6: GRANT INSERT ON TABLE SC TO U6 ;

PUBLIC;

全体。

U6能不能再传播此权限 ?

Page 12: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制 例 : DBA把在数据库 DB1 中建立表的权限授予用户 U1 。 GRANT CREATETAB ON DATABASE DB1 TO U1;

GRANT语句可以: 一次向一个用户授权; 一次向多个用户授权; 一次传播多个同类对象的权限; 一次可以完成对基本表、视图和属性列这些不同对象的授权。 2 、收回权限 级联: (但系统只收回直接或间接从某处获得的权限 )

UA

UB

改 U1

U2改 改 U3

UA回收U1隐含权限?

Page 13: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

三、视图机制 通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

四 . 数据加密 以密码形式存储和传输数据。五、审计 审计是对选定的用户动作的监控和记录,以监测可

能的不合法行为。 审计常用于: ( 1 )审查可疑的活动。 ( 2 )监视和收集关于数据库活动的数据。

Page 14: 第七章  数据库的安全性与完整性

7.2 7.2 数据库安全性控制数据库安全性控制

六 . 统计数据库的安全性 统计数据库:只允许用户查询聚集类型信息,不允许查询单个记录信息的数据库。

在统计 DB 中存在着特殊的安全问题:即可能有隐蔽的信息通道,使合法的查询导出不合法的信息。

如: P.348 例 1 P.348 例 2 方法: 限定查询的记录量(查询至少涉及 N个以上的记录) 限定查询的次数(规定任意两个查询相交的数据项不能

超过 M 个)

Page 15: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制 一、数据库的完整性 数据库的完整性:是指数据的正确性、有效性

和相容性。说明:完整性是为了防止数据库中存在不符合语

义的数据,防止错误信息的输入和输出。 数据库完整性约束条件:加在数据库数据之上

的语义约束条件。 完整性检查:而 DBMS 中检查数据是否满足完

整性条件的机制。

Page 16: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制 DBMS 的完整性控制机制应具有三个方面的功

能: ( 1 )定义功能:提供定义完整性约束条件的机

制。 ( 2 )检查功能:检查用户发出的操作请求是否违背了完整性约束条件。

( 3 )防范功能:如果发现用户的操作请求使数据违背了完整性约束条件,采取一定的动作来保证数据的完整性。

Page 17: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制 完整性控制的规则:一条完整性规则可以用一个五元组 (D , O , A , C ,

P)来表示:( 1 ) D(Data) 约束作用的数据对象;( 2 ) O(Operation) 触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即检查还是延迟检查;

( 3 ) A(Assertion) 数据对象必须满足的断言或语义约束,这是规则的主体;

( 4 ) C(Condition) 选择 A 作用的数据对象值的谓词;( 5) P(Procedure) 违反完整性规则时触发的过程。

Page 18: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制

如 : 在“教授工资不得低于 1000元”的约束中: D 约束作用的对象为工资 Sal 属性 O 插入或修改职工元组时 A Sal不能小于 1000 C 职称 =' 教授 ' (A仅作用于职称 =' 教授 '的记录 ) P 拒绝执行该操作

Page 19: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制 完整性的语义约束和检查:( 1 )立即执行约束:检查是否违背完整性约束

的时机通常是在一条语句执行完后立即检查。( 2 )延迟执行约束:完整性检查延迟到整个事务执行结束后再进行,检查正确方可提交。

( 3 )在事务的某些特定检查点检查。( 4 )在一个维护操作请求之后且执行之前检查。( 5)在 DBA 或审计员发出检查请求时。

Page 20: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制

二、完整性约束条件 作用的对象:

关系、元组、列 静态约束:是指数据库每一确定状态时的数据对象所

应满足的约束条件,它是反映数据库状态合理性的约束。

动态约束:是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。

Page 21: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制1 、静态列级约束 是对一个列的取值域的说明: 对数据类型、格式的约束; 对取值范围或取值集合的约束;对空值的约束;其他约束,(例如关于列的排序说明,组合列等)。

2 、静态元组约束 是规定元组的各个列之间的约束关系。

3 、静态关系约束 在一个关系的各个元组之间或

者若干关系之间常常存在各种联系或约束。

常见的静态关系约束有: (1) 实体完整性约束。 (2)参照完整性约束。 (3)函数依赖约束。 (4) 统计约束。4 、动态列级约束 是修改列定义或列值时

应满足的约束条件,包括下面两方面:

(1)修改列定义时的约束 (2)修改列值时的约束

Page 22: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制

5、动态元组约束 是指修改元组的值时元组中各个字段间需要满足某种约束条件。6、动态关系约束 是加在关系变化前后状态上的限制条件,例如事务一致

性、原子性等约束条件。

Page 23: 第七章  数据库的安全性与完整性

完整性约束条件分类

状态 粒度 列 级 元组级 关系级

静态列级约束:列定义 ·类型 ·格式 ·值域 ·空值

静 态

动 态动态列级约束: 改变列定义 或列值

动态元组约束:元组新旧值之间应满足约束条件

动态关系约束:关系新旧状态间应满足的的约束条件

静态关系约束:实体完整性约束 参照完整性约束 函数依赖约束 统计约束

静态元组约束:

元组的列之间应满足的约束关系

Page 24: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制

三、 SQL 中的完整性约束1 、基本表的约束( 1 )主码约束 PRIMARY KEY (<列名表 >)( 2 )外码约束 FOREIGN KEY (<列名表 >) REFERENCE <目标表 >[(<列名表 >)] [ON DELETE <参照动作 >] [ON UPDATE <参照动作 >]< 参照动作 >:NO ACTION、 CASCADE、 RESTRICT、

SET NULL 、 SET DEFAULT

Page 25: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制 实现参照完整性要考虑的问题:① 在被参照关系中删除元组 这时主要有三种不同的策略:

级联删除 (CASCADE) 受限删除 (RESTRICT) 置空值删除 (SET NULL)

② 修改被参照关系中主码若允许修改主码,主要有三种不同的策略:

级联修改 (CASCADE) 受限修改 (RESTRICT) 置空值修改 (SET NULL)

Page 26: 第七章  数据库的安全性与完整性

7.3 7.3 数据库的完整性控制数据库的完整性控制

( 3 )检查约束 CHECK (< 条件表达式 >)2 、域约束 CREATE DOMAIN < 域名 > < 域类型 > CHECK (< 条件 >) 例: 8.133 、断言注意: CHECK子句只对定义它的表起作用,对其它表不起作用。 例: 8.11所以:当约束条件涉及多个表、使用聚集操作时应使用断言。 CREATE ASSERTION < 断言名 > CHECK (< 条件 >) 例 8.15、 8.16

Page 27: 第七章  数据库的安全性与完整性

7.4 7.4 触发器触发器

触发器:当对相关表执行 INSERT、 UPDATE、 DELETE语句时被隐式执行的过程。 触发器与存储过程的区别: 存储过程由用户或应用显示执行;触发器是为一激发语句发出时由 DBMS隐式地触发。 触发器的组成: ( 1 )触发事件 ( 2 )触发条件 ( 3 )触发器动作 触发器的作用:强制实现更复杂的完整性约束。 触发器的类型: (1) AFTER (2) BEFORE例: 8.18

Page 28: 第七章  数据库的安全性与完整性

7.4 7.4 触发器触发器 例:规定修改 SC 表的 grade值时,修改后的值不能低

于修改前的值。 CREATE TRIGGER Trig_grade AFTER UPDATE OF grade ON SC REFERENCING OLD AS oldg,NEW AS newg FOR EACH ROW WHEN (oldg.grade>newg.grade) UPDATE SC SET grade=oldg.grade WHERE cno=newg.cno;

触发事件

触发条件

触发器动作

Page 29: 第七章  数据库的安全性与完整性

第七章 数据库安全性与完整性 第七章 数据库安全性与完整性 小结 数据库安全控制技术 用户标识与鉴别 存取控制 审计 视图 密码存储 触发器机制 DBMS 的完整性控制的功能:

定义功能、 检查功能、 防范功能 DBMS 的完整性控制策略:

利用主码实现实体完整性 利用外码实现参照完整性 利用一般约束实现用户定义的完整性 利用 SQL断言、触发器实现特殊要求的完整性

自主存取控制 (DAC) 强制存取控制 (MAC)

练习练习 PP371 371 : : 1010 题③⑤⑥题③⑤⑥1212 题②④题②④