第六章 数据库安全性和完整性

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第六章数据库安全性和完整性安全性、完整性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执行语句如下grantselect,updateonTABLE选修表to教务员王withgrantoption则『教务员王』(从谁那里?)获得选修表的select,update权限,并且还可以把这个权限转授给其它用户用户『教务员王』执行了如下语句grantselect(姓名,课程),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),借阅日期dateprimarykey(书号,读者编号,借阅日期))外部键约束外部键约束(对应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),借阅日期dateprimarykey(……),foreignkey(书号)references图书表(书号)onupdatecascade,ondeleterestrict)CreateTable图书表(书号VARCHAR(10),书名VARCHAR(100),……primarykey(书号))外部键约束更新主键值删除主键值图书表书号书名……B102西游记借阅表书号读者编号……B102R056B102R056外部键值连带更新图书表书号书名……B1102西游记图书表书号书名……借阅表书号读者编号……B1102R056B1102R056×非空约束非空约束规则:属性值不允许取空值定义:创建/修改表的语句中,声明某个属性NOTNULLCreateTable读者表(读者编号VARCHAR(10),姓名VARCHAR(100)notnull,……primarykey(读者编号))意味着(像在网页上经常看到的)必填**默认值约束默认值约束规则:插入记录时,没有指定数据的属性取默认值定义:创建/修改表的语句中,声明某个属性时在DEFAULT关键字后面说明其默认值CreateTable读者表(读者编号VARCHAR(10),姓名VARCHAR(100)no

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功