您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第7章 数据库的安全性与完整性
第七章数据库的安全性与完整性7.1基本概念数据库的安全性:是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。数据库安全性是一个涵盖许多问题的广阔领域。安全性的类型:某些信息的访问关系到法律和伦理的问题。有些信息可能会认为是属于个人信息,未授权人员不能对其进行访问。有关政府、机构或公司层次上的政策问题,这些政策确定哪些信息不应该向公众公开。与系统有关的问题。系统级上应加强哪几类安全功能(如:物理硬件级、OS级、DBMS级)一些组织需要把安全性问题划分为多个安全级别(如:绝密、机密、秘密、公开)。数据库的完整性:是指数据的正确性、有效性和相容性。7.2数据库安全性控制在一个多用户数据库系统中,DBMS必须提供相应的技术以保证特定的用户或用户组,只能访问数据库的指定部分,而不能访问数据库的其他部分。典型的DBMS包含一个数据库安全和授权子系统,由它来负责实现一个数据库的安全性功能以避免发生未授权的访问。DBMS的安全子系统主要包括两部分:定义用户权限,并将用户权限登记到数据字典中。合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。7.2数据库安全性控制安全措施应该一级一级层层设置。计算机系统的安全模型:用户标识和鉴别DB数据密码存储OS安全保护DBMS存取控制7.2数据库安全性控制数据库安全控制方法一、用户标识与鉴别1.利用用户自身具备的各种自然特征标识自己和提供鉴别的依据。2.利用用户持有的证件。3.利用口令。口令保密可采用的一些方法:(1)扩大口令集和口令长度。(2)规定口令的生效时间,定期或不定期地更换口令。(3)设置多层口令系统。(4)设置动态口令。7.2数据库安全性控制二、存取控制1.存取控制方法(1)自主存取控制(DAC-DiscretionaryAccessControl)这种方法是基于授予和收回权限的机制。它已经发展成为关系数据库系统的主要安全机制。这种机制是一种“all-or-nothing”方法,即一个用户要么拥有该特权,要么没有该特权。但是在很多应用中,还需要另外一种安全性策略,这种策略需要在安全性级别的基础上对数据或用户进行分类。7.2数据库安全性控制(2)强制存取控制(MAC-MandatoryAccessControl)在强制存取控制(MAC)方法中,每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。MAC适用于对数据有严格而固定密级分类的部门。主体是指数据库中数据访问者(用户、DBA)、进程、线程等,是系统中的活动实体。客体是指数据库中数据及其载体(表、视图、索引、存储过程等),是系统中的被动实体。7.2数据库安全性控制对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。敏感度标记被分成若干级别,例如绝密、机密、秘密、公开等。主体的敏感度标记称为许可证级别。客体的敏感度标记称为密级。客体子集主体子集访问7.2数据库安全性控制MAC机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体。当某一主体以标记label注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:①仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;②仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。这两种规则的共同点在于它们均禁止了拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。自主访问控制与强制访问控制的比较自主访问控制优点:有高度的灵活性,这使得它适用于多个应用领域。缺点:防范恶意攻击的脆弱性。因为一旦被授权用户访问以后,自主授权模型就不能对如何传播和如何使用信息进行任何的控制了。强制访问控制优点:可以保证更高程度的保护,防止了信息的非法流动。适用于需要高度保护的政府、军事等应用。缺点:过于严格,要求将主体和客体严格地划分到安全级别中,因此仅适用于少数环境。7.2数据库安全性控制2.自主存取控制的实现(1)用户分类和权限用户:系统用户(DBA)、数据对象属主(owner)、一般用户、公共用户(public)。权限:包括数据访问权限(读、插入、修改、删除等)和数据库模式修改权限(索引、资源、修改、撤消等)两类。7.2数据库安全性控制(2)授权GRANT语句向用户授予操作权限。一般格式为:GRANT{权限[,权限]…|ALL}ON对象类型对象名TO{用户[,用户]...|PUBLIC}[WITHGRANTOPTION]语义为:将对指定操作对象的指定操作权限授予指定的用户。ALL:所有权限PUBLIC:公共用户对不同类型的操作对象有不同的操作权限。可将此权限转授7.2数据库安全性控制例:把查询表SC和修改其学号的权限授给用户U2和U4。GRANTSELECT,UPDATE(Sno)ONTABLESCTOU2,U4;例:把对表SC的INSERT权限授给用户U5,并允许将此权限再授予其他用户。GRANTINSERTONTABLESCTOU5WITHGRANTOPTION;U5还可以将此权限授予U6:GRANTINSERTONTABLESCTOU6;PUBLIC;全体。U6能不能再传播此权限?7.2数据库安全性控制例:DBA把在数据库DB1中建立表的权限授予用户U1。GRANTCREATETABONDATABASEDB1TOU1;U1隐含权限?(3)收回权限格式:REVOKE{权限[,权限]…|ALL}ON对象类型对象名FROM{用户[,用户]...|PUBLIC}[CASCADE|RESTRICT];CASCADE:级联(但系统只收回直接或间接从某处获得的权限)例:P.214图7-47.2数据库安全性控制(4)数据库角色的授权角色:是权限的集合。数据库角色:是一组对数据库进行各种操作的权限的集合。将某一组用户设置为某一角色,他将拥有该角色中的每一个权限。这样只要对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量,简化了授权的过程。用户与角色之间存在多对多的联系。创建角色必须具有createrole系统权限。7.2数据库安全性控制创建角色:CREATEROLE角色名将权限授予角色:GRANT权限[,权限]…ON对象类型对象名TO角色[,角色]...将角色授予用户:GRANT角色[,角色]…TO角色[,用户]...[WITHADMINOPTION]可将此权限转授回收角色的权限:REVOKE权限[,权限]…ON对象类型对象名FROM角色[,角色]...7.2数据库安全性控制[例7-7]CREATEROLEC1;GRANTSELECT,INSERTONTABLEStudentTOC1;GRANTC1TOU1,U2,U3;GRANTUPDATE,DELETEONTABLEStudentTOC1;REVOKEC1FROMU3;REVOKEINSERTONTABLEStudentFROMC1;7.2数据库安全性控制三、视图机制通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。四、数据加密是在不安全的环境中维护数据安全性的一种方法。加密技术首先使用某个预定的加密密钥对数据应用加密算法,然后结果数据必须要使用解密密钥进行解密,以恢复原来的数据。五、审计审计是对选定的用户动作的监控和记录,以监测可能的不合法行为。审计常用于:(1)审查可疑的活动。(2)监视和收集关于数据库活动的数据。7.2数据库安全性控制六.统计数据库的安全性统计数据库:用于提供基于各种标准的统计信息和值汇总数据。只允许用户查询聚集类型信息,不允许查询单个记录信息的数据库。统计数据库用户:政府统计部门或市场研究公司等。他们被允许访问统计数据库,以检索与人口有关的统计信息,但同时还需要禁止他们访问有关特定个人的详细机密性信息。统计数据库的安全性必须确保有关个人的信息不能被访问。7.2数据库安全性控制在统计DB中存在着特殊的安全问题:即可能有隐蔽的信息通道,使合法的查询导出不合法的信息。例1:查询一:本单位20岁以下的教师有多少?查询二:本单位20岁以下的教师工资总额是多少?若一的结果为1,则二为该职工的工资。解决:限定查询的记录量(查询至少涉及N个以上的记录)例2:查询一:用户A与其他N个职工的工资总额是多少?查询二:用户B与其他N个职工的工资总额是多少?假设二的查询结果为Y,一的查询结果为X,A的工资为Z,则B的工资=Y-(X-Z)解决:限定查询的次数(规定任意两个查询相交的数据项不能超过M个)7.3数据库的完整性控制一、数据库的完整性数据库的完整性:是指数据的正确性、有效性和相容性。说明:完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出。数据库完整性约束条件:加在数据库数据之上的语义约束条件。完整性检查:DBMS中检查数据是否满足完整性条件的机制。DBMS的完整性控制机制应具有三个方面的功能:(1)定义功能:提供定义完整性约束条件的机制。(2)检查功能:检查用户发出的操作请求是否违背了完整性约束条件。(3)防范功能:如果发现用户的操作请求使数据违背了完整性约束条件,采取一定的动作来保证数据的完整性。7.3数据库的完整性控制完整性控制的规则:一条完整性规则可以用一个五元组(D,O,A,C,P)来表示:(1)D(Data)约束作用的数据对象。(2)O(Operation)触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即检查还是延迟检查。(3)A(Assertion)数据对象必须满足的断言或语义约束,这是规则的主体。(4)C(Condition)选择A作用的数据对象值的谓词。(5)P(Procedure)违反完整性规则时触发的过程。7.3数据库的完整性控制如:在“讲师工资不得低于1000元”的约束中:D约束作用的对象为工资Sal属性O插入或修改职工元组时ASal不能小于1000C职称=‘讲师’(A仅作用于职称=‘讲师'的记录)P拒绝执行该操作7.3数据库的完整性控制完整性的语义约束和检查:(1)立即执行约束:检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查。(2)延迟执行约束:完整性检查延迟到整个事务执行结束后再进行,检查正确方可提交。(3)在事务的某些特定检查点检查。(4)在一个维护操作请求之后且执行之前检查。(5)在DBA或审计员发出检查请求时。7.3数据库的完整性控制二、完整性约束条件作用的对象:关系、元组、列静态约束:是指数据库每一确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理性的约束。动态约束:是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。7.3数据库的完整性控制1、静态列级约束是对一个列的取值域的说明:对数据类型、格式的约束;对取值范围或取值集合的约束;对空值的约束等。2、静态元组约束是规定元组的各个列之间的约束关系。例:讲师工资不低于1000元.3、静态关系约束在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:实体完整性约束、参照完整性约束、函数依赖约束、统计约束(字段值与关系中多个元组的统计值之间的约束关系。如:经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍)。7.3数据库的完整性控制4、动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:(1)修改列定义时的约束(2)修改列值时的约束(如:职工工资调整不得低于其原来的工资)5、动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条
本文标题:第7章 数据库的安全性与完整性
链接地址:https://www.777doc.com/doc-3210244 .html