第五讲 安全性完整性2_第1页
第五讲 安全性完整性2_第2页
第五讲 安全性完整性2_第3页
第五讲 安全性完整性2_第4页
第五讲 安全性完整性2_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第五讲数据库的安全性与完整性沈明玉第五讲数据库的安全性与完整性主要内容:一、数据库的安全性二、数据库的完整性一、数据库的安全性数据库安全性概述数据库安全性控制视图机制安全审计数据加密一、数据库的安全性1.1数据库安全性概述数据库安全性:是指保护数据库以防止非法用户的越权使用、窃取、更改或破坏数据。数据库的安全性可以划分为三个层次:

网络系统的安全操作系统的安全数据库管理系统的安全1.1数据库安全性概述网络系统的安全

这是数据库的第一个安全屏障。目前网络系统面临的主要威胁有木马程序、网络欺骗、入侵和病毒等。操作系统安全本层次的安全问题主要来自网络内所使用操作系统的安全。例如Windows2003Server主要包括:操作系统本身的缺陷、对操作系统的安全配置、病毒的威胁三个方面。数据库系统面临的主要风险操作系统的风险

数据库系统的安全性最终要靠操作系统和硬件设备所提供的环境,如果操作系统允许用户直接存取数据库文件,即使数据库系统中采取了最可靠的安全措施也没有用。管理的风险

主要指用户的安全意识,对信息网络安全的重视程度及相关的安全管理措施。1.1数据库安全性概述用户的风险主要表现在用户账号和对特定数据库对象的操作权限。数据库管理系统内部的风险

DBMS厂商对源码的控制、后门、安全机制等。1.1数据库安全性概述数据库安全技术的研究

数据加密技术用户认证技术访问控制技术防注入(Injection)技术如:SQLInjection,利用某些数据库的外部接口将用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。1.1数据库安全性概述1.2数据库安全性控制非法使用数据库的情况

编写合法程序绕过DBMS及其授权机制;直接或编写应用程序执行非授权操作;通过多次合法查询数据库从中推导出一些保密数据。

数据库系统安全模型一、数据库的安全性1.2数据库安全性控制

数据库安全性控制的常用方法用户标识和鉴定访问控制视图审计数据加密1.用户标识与鉴别系统提供的最外层安全保护措施。用户标识:用来表明用户的身份。口令:系统核对口令以鉴别用户身份。用户名和口令易被窃取。每个用户预先约定好一个计算过程或者函数1.2数据库安全性控制2.访问控制访问控制机制的组成定义用户权限合法权限检查常用访问控制方法自主访问控制DAC:C2级、灵活强制访问控制MAC:B1级、严格1.2数据库安全性控制3.自主访问控制方法DAC主体与客体直接关联;主体的权限需要授权;具有授权资格的用户均可实现授权。1.2数据库安全性控制用户权限设置通过SQL的GRANT语句和REVOKE语句实现。用户权限组成:数据对象、操作类型定义用户访问权限:定义用户可以在哪些数据库对象上进行哪些类型的操作。授权GRANT语句

GRANT<权限>[,<权限>]...[ON

<对象类型><对象名>]TO<用户>[,<用户>]…[WITHGRANTOPTION];1.2数据库安全性控制关系数据库系统中访问控制对象关系数据库系统中的存取权限

1.2数据库安全性控制

谁可以发出GRANT:DBA、对象创建者(Owner)、拥有该权限的用户。可接受权限的用户:一个或多个具体用户、PUBLIC(全体用户)。WITHGRANTOPTION子句不允许循环授权:1.2数据库安全性控制创建用户

createuser<用户名>identified<by口令>;授予用户系统权限

grantcreatetable,createview,createsynonym,createsequence,createtrigger,createindex,createprocedureto<用户|角色>[withadminoption];授予用户对象权限grantselect,delete,update,inserton<表名>to用户|角色|public[withgrantoption];1.2数据库安全性控制安全性设置实例

1.创建新用户u1,u2,u3,u4,u52.授予用户u1,u2,u3,u4,u5权限connect3.授予用户特定的对象权限1.2数据库安全性控制[例1]将查询Students表的select权限授给用户U1。GRANTSELECTONtableStudentsTOU1;[例2]将对Students表和Course表的全部权限授予用户U2和U3。GRANTALLPRIVILEGESONTABLEStudents,CourseTOU2,U3;[例3]将对表SC的查询权限授予所有用户。

GRANTSELECTONTABLESCTOPUBLIC;[例4]将查询Students表和修改学生学号的权限授给用户U4。

GRANTUPDATE(Sno),SELECTONTABLEStudentsTOU4;[例5]将SC的INSERT权限授予U5,并允许他将此权限授予其他用户。

GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;1.2数据库安全性控制

撤销(收回)权限

REVOKE<权限>[,<权限>]...[ON<对象类型><对象名>]FROM<用户>[,<用户>]...;[例6]把用户U4修改学生学号的权限收回。

REVOKEUPDATE(Sno)ONTABLEStudentsFROMU4;[例7]收回所有用户对表SC的查询权限。

REVOKESELECTONTABLESCFROMPUBLIC;[例8]把用户U5对SC表的INSERT权限收回。

REVOKEINSERTONTABLESCFROMU5CASCADE;1.2数据库安全性控制创建用户时初始角色授权

CREATEUSER<username>

[WITH][DBA|RESOURCE|CONNECT]1.2数据库安全性控制4.基于角色的访问控制RBAC数据库角色:被命名的一组与数据库操作相关的权限。角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。简化授权的过程。角色的创建:CREATEROLE<角色名>;

给角色授权:

GRANT<权限>[,<权限>]…ON<对象类型>对象名

TO<角色>[,<角色>]…;1.2数据库安全性控制将一个角色授予其他的角色或用户:GRANT<角色1>[,<角色2>]…TO<角色3>[,<用户1>]…[WITHADMINOPTION];角色权限的收回:REVOKE<权限>[,<权限>]…ON<对象类型><对象名>FROM<角色>[,<角色>]…;1.2数据库安全性控制5.强制访问控制MAC保证更高程度的安全性。用户不能直接感知或进行控制。适用于对数据有严格而固定密级分类的部门。主体是系统中的活动实体。

DBMS所管理的实际用户代表用户的各个进程客体是系统中的被动实体,是受主体操纵的。

文件、基本表、索引、视图。1.2数据库安全性控制敏感度标记(Label)主体的敏感度标记称为许可证级别;客体的敏感度标记称为密级;强制存取控制规则

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

(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体;修正规则:当主体的许可证级别<=客体的密级时,

主体能写客体。1.2数据库安全性控制1.2数据库安全性控制一、数据库的安全性1.3视图机制

作用:把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。视图的主要功能是提供数据独立性,无法完全满足要求;视图间接实现了支持存取谓词的用户权限定义。1.3视图机制视图示例:

CREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept='CS';

GRANTSELECTONCS_StudentTO王平;

GRANTALLPRIVILIGESONCS_StudentTO张明;一、数据库的安全性1.4安全审计什么是审计?审计日志(AuditLog):将用户对数据库的所有操作记录在上面;DBA利用审计日志:找出非法存取数据的人、时间和内容;C2以上安全级别的DBMS必须具有。1.4安全审计审计的分类:用户级审计针对自己创建的数据库表或视图进行审计;记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。系统级审计DBA设置;监测成功或失败的登录要求;监测GRANT和REVOKE操作以及其他数据库级权限下的操作。审计SQL语句

AUDIT语句:设置审计功能

NOAUDIT语句:取消审计功能审计设置示例

AUDITALTER,UPDATEONSC;

NOAUDITALTER,UPDATEONSC;1.4安全审计一、数据库的安全性1.5数据加密对数据库中存储的重要数据进行加密处理,以实现数据存储的安全保护。数据加密以后,在数据库表中存储的是密文,系统管理员也不能见到明文,提高了关键数据的安全性。由于数据库系统在操作系统下都是以文件形式进行管理的,因此入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者直接利用OS工具来非法伪造、篡改数据库文件内容。数据加密可对敏感数据进行保护。1.5数据加密数据库加密的层次OS层加密:在OS层无法辨认数据库中的数据关系,从而无法产生合理的密钥,对密钥的管理和使用也很难。DBMS内核层加密:在物理存取之前完成数据的加/解密工作。优点是加密功能强,可以实现加密功能与数据库管理系统之间的无缝耦合。缺点是加密运算在服务器端进行,加重了服务器的负载,需要DBMS开发商的支持。DBMS外层加密:将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加/解密处理。优点是不会加重数据库服务器的负载且可以实现网上的密文传输,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。DBMS外层加密原理数据库加密系统分成两个功能独立的部件:加密字典管理程序、数据库加/解密引擎。

加密字典用来保存用户对数据库信息的加密要求与基础信息,通过调用数据加/解密引擎实现对数据库表的加密、解密及数据转换等功能。加/解密处理在后台完成,对数据库服务器是透明的。数据库加/解密引擎由三大模块组成:加/解密处理模块、用户接口模块和数据库接口模块。优点:①对最终用户完全透明,管理员可根据需要进行明文和密文的转换;②加密系统完全独立于数据库应用系统;③加解密处理在客户端进行,不会影响数据库服务器的效率。

(分析:存在的问题!)1.5数据加密数据库安全性练习1.创建角色r_oper,并授予其connect权限。2.将下列对象权限授予r_oper:dept表的select,insert,delete,update;majors表的全部权限;(allprivileges)students,sc,course表的select权限。3.新建用户u10,将角色权限r_oper授予用户u10。4.撤销(收回)用户u10的所有权限。5.删除用户u10。二、数据库的完整性完整性概述实体完整性的定义与处理参照完整性的定义与处理用户定义完整性的定义与处理完整性约束命名子句触发器(Trigger)二、数据库的完整性2.1完整性概述数据库的完整性:数据的正确、有效和相容。完整性控制:采取有效手段,控制数据的取值,防止出现不符合应用语义的数据。DBMS对完整性控制的支持:完整性约束规则的定义;完整性检查(数据更新时);违约处理(视不同情况)。2.2实体完整性的定义与处理定义:通过基本表中定义主码实现。检查与处理:

插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:1)

检查主码值是否唯一,如果不唯一则拒绝插入或修改。2)

检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。二、数据库的完整性2.3参照完整性的定义与处理定义:通过基本表中定义外码实现。检查与处理:

二、数据库的完整性2.3参照完整性的定义与处理【例】

显式说明参照完整性的违约处理示例。

CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno) ONDELETECASCADE/*级联删除SC表中相应的元组*/ONUPDATECASCADE,/*级联更新SC表中相应的元组*/FOREIGNKEY(Cno)REFERENCESCourse(Cno) ONDELETENOACTION/*删除course元组造成不一致时拒绝删除*/ONUPDATECASCADE/*级联更新SC表中相应的元组*/);2.4用户定义完整性的定义与处理定义:在创建基本表时定义。列值非空(NOTNULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK)检查与处理:更新数据时,RDBMS检查相关的约束条件是否被满足,如果不满足则操作被拒绝执行。二、数据库的完整性【例1】实体完整性约束定义。createtabletest(idnumberprimarykey,namevarchar2(20));【例2】参照完整性约束定义。createtabletest2(d_idchar(10)primarykey,f_idnumber,foreignkey(f_id)referencestest(id)ondeletesetnull);//Oracle不支持onupdatecascade【例3】用户定义的完整性。createtabletest3(p_idchar(10)primarykey,namevarchar2(20)uniquenotnull,sexchar(2)check(sexin('男','女')));2.5完整性约束命名子句CONSTRAINT<完整性约束条件名>[PRIMARYKEY短语|FOREIGNKEY短语|CHECK短语];[例]CREATETABLEStudent(SnoNUMERIC(6)

CONSTRAINTC1CHECK(SnoBETWEEN90000AND99999),

SnameCHAR(20)CONSTRAINTC2NOTNULL,

SageNUMBER(3)CONSTRAINTC3CHECK(Sage<30),

SsexCHAR(2)CONSTRAINTC4CHECK(SsexIN('男','女')),

CONSTRAINTStudentKeyPRIMARYKEY(Sno));二、数据库的完整性2.5完整性约束命名子句通过命名子句修改完整性定义[例]修改表Student中的约束条件。ALTERTABLEStudentDROPCONSTRAINTC1;

ALTERTABLEStudentADDCONSTRAINTC1CHECK(SnoBETWEEN900000AND999999);

ALTERTABLEStudentDROPCONSTRAINTC3;ALTERTABLEStudentADDCONSTRAINTC3CHECK(Sage<40);2.6触发器(Trigger)

触发器是由一系列SQL语句组成的动作体,当对数据库做修改(包括插入、删除和更新)时,它自动被系统执行。

设置触发器机制必须满足的两个条件:

①指明什么条件下触发器被执行,即触发条件;

②指明触发器执行的动作是什么,即触发什么。二、数据库的完整性触发器的利弊可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力,能够保证数据库的一致性;检测和维护触发器需要很大的开销,降低了数据库增、删、改的效率!2.6触发器(Trigger)定义触发器

CREATETRIGGER<触发器名>{BEFORE|AFTER}<触发事件>ON<表名>FOREACH{ROW|STATEMENT}

[WHEN<触发条件>]

<触发动作体>;

了解:T-SQL与PL/SQL的差异!2.6触发器(Trigger)说明:1)创建者:表的拥有者2)

触发器名3)

表名:触发器的目标表4)

触发事件:INSERT、DELETE、UPDATE5)

触发器类型行级触发器(FOREACHROW)语句级触发器(FOREACHSTATEMENT)2.6触发器(Trigger)[例]定义一个BEFORE行级触发器,为教师表Teachers定义完整性规则“讲师的工资不得低于3000元,如果低于3000元,自动改为3000元”。

CREATETRIGGERInsert_Or_Update_SalBEFOREINSERTORUPDATEONTeachers--触发事件是插入或更新操作FOREACHROW--行级触发器BEGIN--定义触发动作体,是PL/SQL过程块IF(:new.Job=‘讲师')AND(:new.Sal<3000)T

温馨提示

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

评论

0/150

提交评论