第六章数据库安全性和完整性_第1页
第六章数据库安全性和完整性_第2页
第六章数据库安全性和完整性_第3页
第六章数据库安全性和完整性_第4页
第六章数据库安全性和完整性_第5页
已阅读5页,还剩43页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章数据库安全性和完整性安全性、完整性protect数据库from非法使用非法用户(安全性)(黑客等)未授权的用户,进入了数据库系统。非法操作(安全性)已授权的用户,执行了超出其允许范围的操作。非法数据(完整性)合法用户的合法操作,也可能产生错误的数据,例如负的分数。目录6.1数据库安全性保护

6.1.1安全性问题的提出

6.1.2安全性保护范围

6.1.3安全性保护技术6.2SQL授权机制6.3数据库完整性6.4SQL完整性约束机制安全性问题的提出数据库安全问题的必要性国家安全企业安全金融安全多层次的安全性保护外部环境操作系统网络数据库系统安全性保护技术基于视图技术为不同需求的用户,打造不同的视图=用户需要的数据基于访问控制技术控制每一个用户对数据库的访问,都在事先允许的范围内。实现:⑴用户身份鉴别(口令、磁卡、指纹等)

⑵用户权限管理(SQL,本章6.2)

⑶用户权限验证(数据库运行时,安全性子系统完成)审计追踪技术记录用户访问数据库全过程(什么用户什么时间什么操作?),以便回溯like监控摄像安全性保护技术其它安全技术统计数据库数据加密目录6.1数据库安全性保护6.2SQL授权机制6.3数据库完整性6.4SQL完整性约束机制授予权限命令格式(ORACLE语法)grant

权限[,…n]on

对象类型

对象名

to

用户[,…n]|public

[withgrantoption

]public:代表所有用户。withgrantoption:有此选项,用户可把获得的权限转授给其它用户。否则,用户只能使用不能转授该权限。注:SQLSERVER的语法,请去掉对象类型授予权限权限类型

(1)CREATE:

(2)SELECT:

(3)INSERT:

(4)UPDATE

:

(5)DELETE:以上都是执行同名SQL语句的权限

(6)REFERENCE:针对表,表示可以引用该表的主键

来定义(其它表的)外部键。

(7)ALL

:对象上的所有权限数据对象类型

(1)SCHEMA:数据库模式

(2)TABLE:基本表

(3)VIEW:视图

(4)ATTRIBUTE:属性授予权限DBA执行语句如下grant

select,update

onTABLE选修表to

教务员王withgrantoption

则『教务员王』(从谁那里?)获得选修表的select,update权限,并且还可以把这个权限转授给其它用户用户『教务员王』执行了如下语句grant

select(姓名,课程),update(分数)

onTABLE选修表to

辅导员李则『教务员王』把对选修表上某些列的权限赋给用户『辅导员李』,但后者不可以把这个权限再转授给其它用户。回收权限命令格式revoke

权限[,…n]

on

对象类型对象名from

用户[,…n]|public

[CASCADE|RESTRICT]CASCADE:级联式收回权限(若该用户已将权限转

授给其它用户,则一并收回)RESTRICT:不存在级联时收回权限成功,存在级联时

(用户已把权限转授出去)则命令失败。回收权限DBA执行以下语句revokeupdateonTable选修表from

教务员王cascade

则DBA回收用户『教务员王』的对选修表的更新权限,此前『教务员王』转授给『辅导员李』的对选修表某些列的更新权限也要一并收回。思考:如果以上命令中的cascade改成restrict?禁止权限对比grant…

to

用户授与正权限:使用户可以做相应的操作特殊情况:A,B授予同一个用户同一个权限X,即该用户的权限有两个来源。deny

…

to

用户禁用(授予负)权限:使用户以后绝对不可以做相应操作继续上个例子,C禁止该用户的X权限(-X),那么用户无法再做此权限的操作,即使之前A,B授予了“正权限”。revoke

…

from

用户收回,相当于取消以前授予的(正、负)权限。注意,禁止权限后,取消禁止也是revoke。思考:如果B收回授予用户的正权限X,有什么效果?接下来,C取消他的授予负权限(禁止权限)呢?角色机制Why角色?如果有一组用户,他们的权限相同或非常相近。那么设置一个角色代表这组用户,统一给角色授权,可以大大减少工作量。What角色?=用户集合另一个角度,=权限集合角色机制how角色?例子辅导员小王,小李,…想访问数据库里的学生表。但只允许他们能查询,和更新某些字段比如年龄、宿舍?CreateRole

角色名创建角色grant

角色to

用户[withgrantoption]把此用户拉入这个用户集合(他也可以继续拉人?)思考:如果要把用户拉出这个集合?grant

权限to

角色[withgrantoption]集合中的每个用户,以及以后的新用户,都具有该权限

(他们可以转授权限?)数据库级别的权限grant

数据库级权限

to

用户数据库级权限包括:

connect:允许用户连接到此数据库

resource:connect权限+建新表、删除表及索引等权利

dba

:resource权限+授予或撤消其他用户的

connect、resource、dba权限=用户类型授权(教材6.2.1)目录6.1数据库安全性保护6.2SQL授权机制6.3数据库完整性6.4SQL完整性约束机制完整性概念完整性指数据的正确性、有效性和相容性完整性规则是为保证完整性,数据所必须满足的约束条件。又称完整性约束、完整性约束条件。可以分为两类静态约束:数据取值的条件。例如:年龄>0动态约束:数据变化/修改数据的条件(新旧值比较)例如:工资.新值<工资.旧值*1.2完整性概念完整性控制在数据库系统中,保障数据的完整性。这一工作由DBMS的完整性子系统完成。围绕完整性规则进行,包括两方面:定义完整性规则(SQL,本章6.4)检查完整性规则,并做处理具体地说,在用户发出操作(insert,update,delete等),修改了数据后,检查是否仍满足完整性规则。如果不满足,则进行处理:报警/拒绝/调整其它数据等。关系模型的三种完整性规则关系模型的三要素关系关系操作关系完整性实体完整性(规则)参照完整性(规则)用户定义完整性(规则)关系模型的三种完整性规则实体完整性规则:关系中,元组主键取值唯一,且不能取空值主键由多个属性构成时,每一个属性都不能取空值意义:现实世界的实体可以相互区分。实体映射为

元组后,通过主键来相互区分。学号课程号成绩NULLNULL65S1C165S2C378S2C290S3C192选修学号课程号成绩NULLC165S1C165S2C378S2C290S3C192选修××关系模型的三种完整性规则参照完整性规则:外部键要么取空值,要么取一个存在的对应

主键值。意义:外部键反映联系。取空值,表示没有联系。取

一个存在的主键值,表示(外部键所在元组/实体

)和这个主键值所在的元组/实体联系。外部键对应主键职工表职工号姓名年龄工资部门号E01张美田355000B01E02刘顺406000B02E03沈坚null3200B05E04许法天43NullNull部门部门号部门名称经理B01人事张涛B02销售李兰秋B03财务吴天×关系模型的三种完整性规则思考:创建表时,出现在外部键中的属性应设为什么数据类型?关系模型的三种完整性规则用户定义完整性规则规则:用户根据具体的应用环境定义。例如分数的取值范围从0到100,性别只能是‘男’或‘女’或NULL(上海)A股股东账号是“A+9位数字”意义:反映现实世界的真实属性取值反映了程序编制的要求目录6.1数据库安全性保护6.2SQL授权机制6.3数据库完整性6.4SQL完整性约束机制主键约束主键约束(对应what?)规则:主键值不允许空,也不允许出现重复定义:创建/修改表的语句中,用PRIMARYKEY关键

字声明主键的同时,即定义了一个主键约束CreateTable借阅表(书号VARCHAR(10),

读者编号VARCHAR(10),借阅日期date

primarykey(书号,读者编号,借阅日期))外部键约束外部键约束(对应what?)规则:外部键要么取空值,要么取对应的某个主键值定义:创建/修改表的语句中,用FOREIGNKEY关键

字声明外部键的同时,即定义一个外部键约束CreateTable表名(……

{,foreignkey(外键属性{,…n})

references

被参照表名(主键属性{,…n})

ondelete<参照动作>

onupdate<参照动作>

}

……)外部键约束参照动作说明当(被参照关系的)某个主键值被删除/更新时,如何处理自己表中对应的外部键值RESTRICT方式(SQLSERVER:NOACTION

)仅当没有任何对应的外部键值时,才可以删除/更新这个主键值,否则系统拒绝执行此操作CASCADE

方式连带将所有对应的外部键值一起删除/更新SETNULL

方式将所有对应的外部键值设为空值SETDEAFAULT

方式将所有对应的外部键值设为默认值外部键约束CASCADE方式示例:当主键值被删除/更新时,连带删除/更新对应的外部键值更新主键值连带更新

外部键值删除主键值连带删除

外部键值部门部门号名称……B02销售职工部门号姓名……B02袁志鹏B02陆大勇部门部门号名称……D02销售职工部门号姓名……D02袁志鹏D02陆大勇部门部门号名称……职工部门号姓名……外部键约束RESTRICT/NOACTION方式示例:仅当没有任何对应的外部键值时,才可以删除/更新主键值,否则系统拒绝执行此操作更新主键值删除主键值部门部门号名称……B02销售职工部门号姓名……B02袁志鹏B02陆大勇部门部门号名称……D02销售部门部门号名称……×××外部键约束SETNULL方式示例:主键值被删除/更新时,将对应的外部键值设为空值更新主键值删除主键值部门部门号名称……B02销售职工部门号姓名……B02袁志鹏B02陆大勇部门部门号名称……D02销售职工部门号姓名……NULL袁志鹏NULL陆大勇部门部门号名称……职工部门号姓名……NULL袁志鹏NULL陆大勇外部键值

设为空值外部键值

设为空值外部键约束SETDEFAULT方式示例:主键值被删除/更新时,将对应的外部键值设为默认值更新主键值删除主键值部门部门号名称……B02销售职工部门号姓名……B02袁志鹏B02陆大勇部门部门号名称……D02销售职工部门号姓名……默认值袁志鹏默认值陆大勇部门部门号名称……职工部门号姓名……默认值袁志鹏默认值陆大勇外部键值

设为空值外部键值

设为空值外部键约束例CreateTable借阅表(书号VARCHAR(10),

读者编号VARCHAR(10),借阅日期date

primarykey(……),

foreignkey(书号)references图书表(书号)onupdatecascade,ondeleterestrict)CreateTable图书表(书号VARCHAR(10),书名VARCHAR(100),……primarykey(书号))外部键约束更新主键值删除主键值图书表书号书名……B102西游记借阅表书号读者编号……B102R056B102R056外部键值

连带更新图书表书号书名……B1102西游记图书表书号书名……借阅表书号读者编号……B1102R056B1102R056×非空约束非空约束规则:属性值不允许取空值定义:创建/修改表的语句中,声明某个属性NOT

NULLCreateTable读者表(

读者编号VARCHAR(10),姓名VARCHAR(100)notnull,……primarykey(读者编号))意味着(像在网页上经常看到的)必填**默认值约束默认值约束规则:插入记录时,没有指定数据的属性取默认值定义:创建/修改表的语句中,声明某个属性时在

DEFAULT关键字后面说明其默认值CreateTable读者表(

读者编号VARCHAR(10),姓名VARCHAR(100)notnull,地址VARCHAR(100)DEFAULT

‘这家伙很懒,什么也没写’,……primarykey(读者编号))唯一约束唯一约束规则:指定的属性或属性组,不能取重复值定义:创建/修改表的语句中,用Unique关键字声明CreateTable读者表(

读者编号VARCHAR(10),姓名VARCHAR(100)notnull,电话CHAR(11)--其实考虑到固话,varchar(11)更合适

……unique(姓名,电话))检查约束检查约束规则:每个元组内部的一或多个属性值,必须满足用

户指定的条件定义:创建/修改表的语句中,check关键字后说明条件CreateTable读者表(

读者编号VARCHAR(10),姓名VARCHAR(100)notnull,性别CHAR(2)notnull

……check(性别=‘男’or性别=‘女’or性别isnull))域约束域约束规则:域(数据类型)中的值要满足用户指定的条件目的:间接地约束属性。因为如果把某个属性声明为

这个域(数据类型),则该属性的取值也连带

要满足这一条件。定义:在创建域的语句中,在constraint关键字后面说

明约束的名称和条件。

createdomain

用户域名系统预定义域[[constraint

约束名]

check(条件)]域约束createdomainSEXchar(2)

check(valuein(‘男’,‘女’,Null))CreateTable读者表(

读者编号VARCHAR(10),姓名VARCHAR(100)notnull,性别SEX……primarykey(读者编号))断言断言约束断言就是一个谓词(条件),施加在较大范围,例如整个数据库的所有数据主键约束、检查约束等作用范围较小(一个元组或属性内部),可以看作是“小断言”如果作用范围比较大,例如要求几个关系之间必须满足什么约束条件,就要“大断言”——真正的断言约束断言创建断言createassertion

断言名check

(条件)断言创建以后,系统要对每个可能违反该断言条件的修改操作进行检查,这种检查会带来巨大的系统负载,因此应该谨慎使用断言。所以实际上很少数据库软件支持断言,而倾向用其它的等价方法,比如触发器。断言例1不能出现“一书两借”。思考:哪些表的哪些操作会破坏此断言?读者表(读者编号,姓名,单位)借阅表(书号,读者编号,借阅日期,归还日期)图书表(书号,书名,作者)createassertionnotwice

check(notexist(select*from借阅表,借阅表借阅表2where借阅表.书号=借阅表2.书号and借阅表.归还日期isnulland借阅表.归还日期isnull))断言例2规定计算机系的读者借出不能多于10本书。(练习)借阅表(书号,读者编号,借阅日期,归还日期)图书表(书号,书名,作者)读者表(读者编号,姓名,单位)触发器触发器概念:“自动”执行的过程。传统过程是用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论