您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第6章 数据库安全性和完整性
1数据库的安全性:就是防止非法用户使用数据库造成数据泄露、更改或破坏,以达到保护数据库的目的。计算机系统安全性为计算机系统建立和采取的各种安全保护措施,保护计算机系统(硬件、软件及数据)不会遭到破坏。保护数据库以防止不合法使用一般计算机系统中,安全措施是一级一级层层设置的2•用户标识与鉴别•存取控制•视图机制•审计•数据加密用户DBMSDBOS用户标识和鉴定存取控制操作系统安全保护密码存取*为不同的用户定义不同的视图把用户对数据库的所有操作自动记录下来放入审计日志中。Oracle安全措施主要有:1用户标识和鉴定2存取控制3审计3XMSJCZ用户甲02-10-622:32:55进入系统用户甲02-10-820:33:07录入数据用户乙02-10-98:50:42进入系统用户乙02-10-1111:53:13修改密码用户丁02-10-137:19:29进入系统用户丁02-10-288:00:53查询数据41.用户标识与鉴别•用户标识:Identification–用户名:UserName,或者–用户标识号:UID•用户鉴别:Authentication–用户名+口令:Password52.存取控制•数据库安全的主要思路:存取控制–给合适的人以合适的权限•存取控制机制–定义用户及其权限,在数据字典中登记用户权限;–权限合法性检查62.存取控制•两类实现存取控制的方法–自主存取控制:DiscretionaryAccessControla)用户对不同的数据对象有不同的权限;b)不同用户对同一对象具有不同的权限;c)允许用户之间的传递授予权限–强制存取控制:MandatoryAccessControla)以一定的密级标注数据对象b)授予每个用户以某一级别的许可证•多数DBMS均支持DAC72.1自主存取控制DAC•用户权限–谁+在哪个对象上+可以干什么事情–授权:将用户权限授予特定用户的过程用户数据库对象操作类型用户权限的二要素82.1自主存取控制DAC对象类型数据库对象操作类型数据库模式CreateSchema基本表CreateTable,AlterTable模式视图CreateView索引CreateIndex数据基本表和视图Select,Insert,Update,Delete,References,AllPrivileges数据属性列Select,Insert,Update,Delete,References,AllPrivileges92.1自主存取控制DAC•SQL标准对DAC的支持–授权:Grant语句–回收:Revoke语句•SQL创建用户时赋予用户的权限–DBA、RESOURCE、CONNECTCreateUser用户名[WithDBA|RESOURCE|CONNECT]102.1自主存取控制DAC•默认用户权限:CONNECTCreateUser用户名[WithDBA|RESOURCE|CONNECT]CONNECT用户的初始权限:只能登录数据库RESOURCE用户的初始权限:•创建基本表和视图,并成为所创建对象的属主•不能创建模式和新用户•可授权•DBA用户的初始权限:•创建新用户、模式、基本表、视图等•拥有对所有数据库对象的存取权限•可授权112.1自主存取控制DAC•授权权限:Grant语句–把“在某个对象上”“干某种事情”的权限授予“某个用户”GRANT权限ON数据对象TO用户[WITHGRANTOPTION]122.1自主存取控制DAC•数据对象::=基表|视图|属性|…•用户::=PUBLIC|用户名–PUBLIC是所有数据库用户的总称•若有WITHGRANTOPTION,则用户可将此特权转授给其它用户。不允许循环授权GRANT权限ON数据对象TO用户[WITHGRANTOPTION]13例如:GRANTSELECTONTABLE表1TOPUBLIC;//将对表1的SELECT特权授予所有的用户。GRANTSELECT(列1,列5)ON表1TOsam;//将对表1中1和5列的INSERT特权授予sam。GRANTALLPRIVILEGESONTABLE表1TObob,sam;//将对表1的所有操作特权授予bob和sam。GRANTUPDATE(列2,列4)ON表1TOwangWITHGRANTOPTION;//将对表1中2和4列的UPDATE特权授予wang,并允许他将此特权转授给其它用户。142.1自主存取控制DAC•回收权限:Revoke语句–把“在某个对象上”“干某种事情”的权限从“某个用户”那里要回来REVOKE权限ON数据对象FROM用户[CASCADE|RESTRICT]REVOKEUPDATE(Sno)ONTABLEStudentFromuser4;15•以单个权限为单位授权太过麻烦•角色:权限的集合–为具有相同权限的用户群创建一个角色•基于角色来管理权限简化授权过程–创建角色–给角色授权或授予角色–给用户授予角色2.1自主存取控制DAC162.1自主存取控制DAC•角色的创建–CREATEROLE角色名•给角色授权–GRANT权限ON数据对象TO角色–GRANT角色TO角色[WITHADMINOPTION]•给用户授予角色–GRANT角色TO用户[WITHADMINOPTION]17•角色权限的回收–REVOKE权限ON数据对象FROM角色•举例:–创建角色R1–使R1具有Student表的Select/Update/Insert权限–将R1角色授予用户王平和李明–修改R1,使其具有Student表的Delete权限2.1自主存取控制DAC183.视图机制•视图机制–王平老师只能查询计算机系学生的信息–系主任李明具有处置计算机系学生信息的所有权限CREATEVIEWCS_STUASSelect*FromStudentWhereSdept=‘CS’;GRANTSELECTONCS_STUTO王平;GRANTALLPRIVILIGESONCS_STUTO李明194.审计Audit和数据加密•审计:C2级DBMS的必要指标,是把用户对数据库的所有操作自动记录下来放入审计日志–用户级审计–系统级审计•数据加密20数据库完整性:数据的正确性和相容性。完整性安全性数据库完整性和安全性的区别完整性防止错误信息的输入与输出。安全性是保护数据库防止恶意的破坏和非法的存取。21•DBMS对数据库完整性的支持–提供定义完整性约束的机制实体完整性、参照完整性、自定义完整性–提供完整性检查的方法–违约处理:拒绝执行、级联执行223.1完整性约束的概念•完整性约束:加在数据之上的语义约束•完整性约束的作用对象●关系:若干元组间、关系集合上以及关系之间的联系的约束●元组:元组的约束是元组中各个字段间的联系的约束●属性列:主要是列的数据类型、取值范围、精度、排序等约束条件233.1完整性约束的概念•完整性约束的类型–静态约束:数据库在确定状态时数据对象应满足的约束条件;–动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间应满足的约束条件241)静态列约束:是对一个列的取值域等的限制。对数据类型的约束;对数据格式的约束;对取值范围或取值集合的约束;对空值的约束;2)静态元组约束:规定组成一个元组的各个列之间的约束关系。例如:库存关系中出库数量不能大于库存数量。3)静态关系约束:反映了一个关系中各个元组之间或者若干关系之间存在的联系或约束。实体完整性约束;参照完整性约束;251)动态列约束:规定修改列定义或列值时应满足的约束条件。如:将允许为空的列修改为不允许为空;学生的年龄只能增长。2)动态元组约束:规定修改元组的值时其各个属性列之间需要满足的约束条件例如:职工工资调整时新工资不得低于原工资+工龄*1.5。3)动态关系约束:加在关系变化前后状态上的限制条件。事务的ACID特性:原子性/一致性/隔离性/持久性263.2实体/参照完整性约束•实体完整性:PRIMARYKEY–列级定义–关系级定义•参照完整性:–FOREIGNKEY/REFERENCES–违约处理:拒绝、级联删除、设置为空273.2实体/参照完整性约束CREATETABLESC(SnoCHAR(8)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Cno)REFERENCESCourse(Cno)ONDELETENOACTIONONUPDATECASCADE);283.3用户自定义完整性约束•定义属性列的约束条件–列值非空:NOTNULL–列值唯一:UNIQUE–语义检查:CHECK短语举例:性别只允许取值“男”或“女”CREATETABLEStudent(……SsexCHAR(2)CHECK(SsexIN(“男”,“女”)),……);成绩只能在0-100之间:CREATETABLESC(….….GradeSMALLINTCHECK(Grade=0andGrade=100),……);29违约处理和保护:createtables(snochar(2)primarykey,sgenderchar(2)check(sgenderin('f','m')))insertintosvalues('a','1')INSERT语句与COLUMNCHECK约束'CK__s__sgender__2D27B809'冲突。303.3用户自定义完整性约束•定义元组的约束条件:CHECK男性的名字一定不能以Ms.打头CREATETABLEStudent(……SnameCHAR(8)NOTNULL,SsexCHAR(2)CHECK(SsexIN(‘男’,‘女’)and(Ssex=‘女’)ORSnameNOTLIKE‘Ms.%’)),……);313.3用户自定义完整性约束•完整性约束命名子句–CONSTRAINT约束名[PRIMARYKEY短语|FOREIGNKEY短语|CHECK短语]CREATETABLEStudent(SnoNUMERIC(6)CONSTRAINTc1CHECK(SnoBETWEEN90000AND99999),SnameCHAR(8)CONSTRAINTc2NOTNULL,SsexCHAR(2)CONSTRAINTc3CHECK(SsexIN(‘男’,‘女’)),……);323.3用户自定义完整性约束•域约束:DOMAIN–建立性别域:CREATEDOMAINGenderDomCHAR(2)CHECK(VALUEIN(‘男’,‘女’));CREATETABLEStudent(SsexGenderDom,……);333.3用户自定义完整性约束•触发器:TRIGGER–定义在关系表上的由事件驱动的特殊过程–一旦定义,任何用户对表的增删改操作均会由DBMS自动激活相应的触发器,进行完整性检查–非SQL核心规范的内容,但一般DBMS均提供支持34创建一个触发器sc_trig,当插入或者更新“学习”表时,该触发器检查“成绩”是否在指定的范围内CREATETRIGGER[sc_trig]ON[dbo].[学习]FORINSERT,UPDATEASdeclare@scoresmallintselect@score=scorefrom学习if(@score0)or(@score100)beginraiserror('学成成绩必须在0到100之间',16,1)rollbacktransactionend35安全性和完整性小结•安全性–用户标识和鉴别、存取访问控制、视图、审计、数据加密–DAC与其SQL支持:GRANT、REVOKE、角色•完整性–完整性约束的概念–实体/参照完整性–用户自定义完整性:主键、外键、C
本文标题:第6章 数据库安全性和完整性
链接地址:https://www.777doc.com/doc-3217318 .html