1、第四章第四章 多级安全关系数据模型多级安全关系数据模型朱朱 虹虹华中科技大学计算机学院华中科技大学计算机学院.第四章第四章 多级安全关系数据模型多级安全关系数据模型4.1 多实例问题多实例问题 多级安全关系数据模型是怎样提出的多级安全关系数据模型是怎样提出的1.受保护的客体标记粒度受保护的客体标记粒度 .在操作系统中,受保护的客体是文件和目录在操作系统中,受保护的客体是文件和目录 .在数据库系统中,受保护的客体可以有多种选择:在数据库系统中,受保护的客体可以有多种选择:.表表 .属性属性 .元组元组 .元素元素 DBMS应该实现哪个粒度的标记?应该实现哪个粒度的标记?.表级表级实现容易,但不灵
2、活实现容易,但不灵活 .数据元素级数据元素级导致许多问题,如多实例导致许多问题,如多实例.2.表表级标记级标记粒度粒度表表 SOD(Starship Objective Destination)其中其中Starship是主关键字是主关键字若为表级标记若为表级标记标记为普通。标记为普通。秘密级主体查询的结果:秘密级主体查询的结果:Starship Objective Destination Enterprise Exploration Talos Voyager Spying Mars普通级用户查询的结果:普通级用户查询的结果:Starship Objective Destination Ent
3、erprise Exploration Talos Voyager Spying Mars问题:秘密级主体要修改该表会怎样?问题:秘密级主体要修改该表会怎样?不方便不方便.3.属性属性级级标记标记粒度粒度表表 SOD(Starship Objective Destination)的各属性标记的各属性标记 Starship U Objective C Destination S标记为标记为S(机密级机密级)主体查询的结果:主体查询的结果:Starship U Objective C Destination S Enterprise Exploration Talos Voyager Spying
4、 Mars实际上缺少这一应用?实际上缺少这一应用?.4.元组级标记粒度元组级标记粒度表表 SOD(Starship Objective Destination)的元组级标记的元组级标记 标记为标记为S(机密级机密级)主体查询的结果:主体查询的结果:Starship Objective Destination TL Enterprise Exploration Talos U Voyager Spying Mars S标记为普通的主体查询结果:标记为普通的主体查询结果:Starship Objective Destination TL Enterprise Exploration Talos U
5、.5.元素级标记粒度元素级标记粒度表表 SOD(Starship Objective Destination)的元素级标的元素级标记:每个元组的每个列给定一个标记记:每个元组的每个列给定一个标记 标记为标记为S(机密级机密级)主体查询的结果:主体查询的结果:Starship Objective Destination Enterprise U Exploration U Talos U Enterprise S Spying S Mars S 标记为标记为U(普通级普通级)的主体查询结果:的主体查询结果:Starship Objective Destination Enterprise U E
6、xploration U Talos U.6.多多实例问题实例问题(1)什么是多实例?什么是多实例?(2)多实例的类型有哪些?多实例的类型有哪些?(3)多实例是怎样出现的?多实例是怎样出现的?(4)是否可以消除多实例?是否可以消除多实例?.6.多实例的问题多实例的问题(1)什么是多实例什么是多实例.主关键字的唯一性主关键字的唯一性.主关键字的最小性约束主关键字的最小性约束.不允许表中出现相同主关键字的记录不允许表中出现相同主关键字的记录多实例:在元组级、元素级标记下允许出现主关键多实例:在元组级、元素级标记下允许出现主关键字相同而标记不同的记录字相同而标记不同的记录(2)多实例的类型多实例的类
7、型 .实体多实例实体多实例 .属性多实例属性多实例.(2)多实例的类型多实例的类型实体多实例和属性多实例实体多实例和属性多实例.实体多实例实体多实例S-实例实例:Starship Objective Destination Enterprise U Exploration U Talos U Enterprise S Spying S Mars S 问题:系统中有多少个实体?问题:系统中有多少个实体?1个还是个还是2个?个?.属性多实例属性多实例S-实例实例:Starship Objective DestinationEnterprise U Exploration U Talos U Ent
8、erprise U Spying S Mars S 问题:问题:Enterprise 的真正目的和目的地是什么?的真正目的和目的地是什么?.(2)多实例的类型多实例的类型元组级标记的多实例元组级标记的多实例S-实例实例:Starship Objective Destination TLEnterprise Exploration Talos UEnterprise Spying Mars S问题:有几条飞船问题:有几条飞船?Enterprise 的真正目标和目的地是什么?的真正目标和目的地是什么?.(3)多实例是怎样出现的?多实例是怎样出现的?实体多实例实体多实例S-实例实例:Starship
9、 Objective Destination Enterprise U Exploration U Talos U Voyager S Spying S Mars SU-实例:实例:Starship Objective Destination Enterprise U Exploration U Talos UU-用户插入:用户插入:(Voyager,Exploration,Mars)拒绝插入拒绝插入导致隐通道导致隐通道接收该语句:接收该语句:覆盖高安全级数据,导致严重的完整性问题覆盖高安全级数据,导致严重的完整性问题 不不覆盖高安全级数据,高安全级主体看到两条记录覆盖高安全级数据,高安全级主
10、体看到两条记录 导致实体多实例导致实体多实例.由于高安全级用户导致的实体多实例由于高安全级用户导致的实体多实例U-实例:实例:Starship Objective Destination Enterprise U Exploration U Talos US-用户插入用户插入:(Enterprise,Exploration,Mars)拒绝插入拒绝插入否认服务否认服务接收该语句接收该语句实体多实例实体多实例(3)多实例是怎样出现的?多实例是怎样出现的?实体多实例实体多实例.(3)多实例是怎样产生的?多实例是怎样产生的?属性级多实例属性级多实例S-实例实例:Starship Objective D
11、estination Enterprise U Exploration U Talos S Voyager S Spying S Mars SU-实例:实例:Starship Objective Destination Enterprise U Exploration U Null UU-用户发出更新语句:用户发出更新语句:Update SOD Set Destination=Rigel Where Starship=Enterprise拒绝更新:产生隐通道拒绝更新:产生隐通道允许更新:覆盖高安全级数据允许更新:覆盖高安全级数据导致完整性错误导致完整性错误不不覆盖高安全级数据且执行成功覆盖高安
12、全级数据且执行成功高安全级用户看到两个元组高安全级用户看到两个元组.(3)多实例是怎样产生的?多实例是怎样产生的?多实例是必须的吗?多实例是必须的吗?有不同意见:可以引入假象有不同意见:可以引入假象(cover story)S-实例实例 Starship Objective Destination Enterprise U Exploration U Talos U Enterprise U Spying S Mars S另一种意见:另一种意见:.允许假象存在允许假象存在 .多实例不应该用于支持假象,可以建立另一张表:多实例不应该用于支持假象,可以建立另一张表:(Starship,Object
13、ive,Real-Objective,Destination,Real-Destination).(4)多实例可以消除吗?多实例可以消除吗?有一种解决方法:有一种解决方法:.只要高安全级的更新与唯一性要求产生冲突,拒只要高安全级的更新与唯一性要求产生冲突,拒绝更新绝更新 .只要低安全级用户做出与唯一性要求冲突的更新,只要低安全级用户做出与唯一性要求冲突的更新,覆盖高安全级的元组覆盖高安全级的元组是否可以接受?是否可以接受?多实例问题的根源多实例问题的根源:违背了关系数据库数据真实性的违背了关系数据库数据真实性的原则原则数据库中的数据是外部世界的真实反映数据库中的数据是外部世界的真实反映有更好的
14、方法吗?有更好的方法吗?.对传统关系模型的扩展:对传统关系模型的扩展:*Denning(Sea View)模型模型(安全视图模型安全视图模型)*Jajodia-Sandhu模型模型 基于信赖的语义模型基于信赖的语义模型 基于数据语义的模型基于数据语义的模型(MLR模型模型)4.1.2 多实例的解决方法多实例的解决方法.多级关系数据模型与传统的关系数据模型有哪些不同?多级关系数据模型与传统的关系数据模型有哪些不同?4.1.2 多实例的解决方法多实例的解决方法不必考虑标记问题不必考虑标记问题考虑标记的问题考虑标记的问题关系操作关系操作实体完整性、引用实体完整性、引用完整性完整性在关系模型的基础在关
15、系模型的基础上引入新的完整上引入新的完整性约束性约束完整性约束完整性约束与标记的粒度有关与标记的粒度有关关系集合关系集合没有没有有有逻辑数据对象赋予逻辑数据对象赋予安全标记属性安全标记属性传统关系模型传统关系模型多级关系数据模型多级关系数据模型.4.2 安全数据视图模型安全数据视图模型(Sea View)多级关系多级关系定义:一个多级关系是由关系模式:定义:一个多级关系是由关系模式:R(A1,C1,An,Cn,TC)表示的。属性表示的。属性Ai及其密及其密级级Ci是单级的当且仅当是单级的当且仅当Ci是定义在一个单级表示的是定义在一个单级表示的域上;否则称其为多级的。域上;否则称其为多级的。一个
16、多级关系的元组可表示为一个多级关系的元组可表示为(a1,c1,an,cn,tc),tc为整个元组的密级。为整个元组的密级。不失一般性,这里只考不失一般性,这里只考虑虑(U,C,S和和TS)的情形。的情形。读写规则遵循读写规则遵循BLP模型的限制,安全级是模型的限制,安全级是c的用户看到的是由的用户看到的是由c支配的所有元素支配的所有元素 每个安全级上都存在一个实例每个安全级上都存在一个实例.4.2 安全数据视图模型安全数据视图模型(Sea View)2.多级关系的不同实例的访问遵循的原则多级关系的不同实例的访问遵循的原则 .出现在给定访问级别的用户的查询结果中的每个元出现在给定访问级别的用户的
17、查询结果中的每个元组必须出现在具有更高访问级别用户的查询结果的实组必须出现在具有更高访问级别用户的查询结果的实例中;例中;.低一级别实例中的为空的元素在高一级实例中替换低一级别实例中的为空的元素在高一级实例中替换为非空元素。为非空元素。S-用户看到的结果:用户看到的结果:Starship Objective Destination TC Enterprise U Exploration U Talos U U Enterprise U Spying S Mars S SU-用户看到的结果:用户看到的结果:Starship Objective Destination TC Enterprise
18、U Exploration U Talos U U Enterprise U Null U Null U U.4.2 安全数据视图模型安全数据视图模型(Sea View)SeaWiew中客体的密级满足下列规则:中客体的密级满足下列规则:数据库访问级别完整性数据库访问级别完整性 如前所述容器的概念如前所述容器的概念关系模式的安全级必须支配它所属的数据库的安全级关系模式的安全级必须支配它所属的数据库的安全级(2)可见数据规则可见数据规则关系中数据的最低安全级支配所属关系模式的安全级。关系中数据的最低安全级支配所属关系模式的安全级。属性安全级的最大下界必须支配关系模式的安全级。属性安全级的最大下界必
19、须支配关系模式的安全级。(3)视图访问安全级完整性视图访问安全级完整性视图定义者的安全级必须支配视图定义中出现的所有视图定义者的安全级必须支配视图定义中出现的所有关系和视图的安全级关系和视图的安全级.4.2 安全数据视图模型安全数据视图模型(Sea View)3.完整性规则完整性规则 多级实体完整性多级实体完整性 设设AK是组成关系模式是组成关系模式R的主关键字的属性集合,的主关键字的属性集合,在关系在关系R的元组中,的元组中,AK中所有属性中所有属性Ai有相同的安有相同的安全级,并且它受其他属性安全级的支配。全级,并且它受其他属性安全级的支配。AK中所中所有属性的值不能为空。有属性的值不能为
20、空。(2)引用完整性引用完整性 如果一个关系的外键在给定安全级可见,则包含所如果一个关系的外键在给定安全级可见,则包含所引用主关键字的元组在此安全级也是可见的,并且引用主关键字的元组在此安全级也是可见的,并且外键元素的安全级必须支配所引用的主关键字各元外键元素的安全级必须支配所引用的主关键字各元素的安全级素的安全级.4.2 安全数据视图模型安全数据视图模型(SeaView)3.完整性规则完整性规则(3)多实例完整性规则多实例完整性规则:a.给定一个关系给定一个关系R,外观主关键字,外观主关键字AK及其安全级及其安全级CK,对每个不在对每个不在AK中的属性中的属性Ai,下面的函数依赖成立:,下面
21、的函数依赖成立:AK,CK,Ci Ai多值依赖多值依赖(复习复习):设设R是属性集是属性集U上的一个关系模式。上的一个关系模式。X,Y,Z是是U的子集,并且的子集,并且Z=U-X-Y。关系模式。关系模式R(U)中多值依中多值依赖赖XY成立,当且仅当对成立,当且仅当对R的任意关系的任意关系r,给定一对,给定一对(x,z)值,有一组值,有一组Y的值与其对应,且这组值仅仅决定的值与其对应,且这组值仅仅决定于于x值而与值而与z值无关。值无关。.4.2 安全数据视图模型安全数据视图模型(SeaView)3.完整性规则完整性规则 多实例完整性多实例完整性多值依赖的例子:课程多值依赖的例子:课程教员教员X
22、Y Z课程课程 教员教员 参考书参考书物理物理 李勇李勇 普通物理普通物理物理物理 李勇李勇 光学原理光学原理物理物理 王军王军 普通物理普通物理物理物理 王军王军 光学原理光学原理b.对每一个不在对每一个不在AK中的属性中的属性Ai,R满足多值依赖满足多值依赖:AK,CK Ai,Ci.4.2 安全数据视图模型安全数据视图模型(Sea View)4.多级关系的访问多级关系的访问查询操作的访问:主体可以对多级关系中具有与自己查询操作的访问:主体可以对多级关系中具有与自己相同或更低安全级别的实例执行查询操作。相同或更低安全级别的实例执行查询操作。符符合合BLP模型向下读。模型向下读。写操作写操作(
23、插入和删除插入和删除):允许对一个属性在不同安全级允许对一个属性在不同安全级赋予不同的值,赋予不同的值,SeaView模型根据主体与已存在的模型根据主体与已存在的数据客体的安全级区分下面两种情况:数据客体的安全级区分下面两种情况:.4.2 安全数据视图模型安全数据视图模型(Sea View)(1)主体的安全级受数据的安全级支配主体的安全级受数据的安全级支配(或不可比或不可比)低安全级主体修改高安全级数据低安全级主体修改高安全级数据.当主体向关系插入一个元组而关系中已经存在与此当主体向关系插入一个元组而关系中已经存在与此元组具有相同主关键字的不可见元组,则产生一个元组具有相同主关键字的不可见元组
24、,则产生一个实体多实例实体多实例.当主体更新给定元组中的某个属性,而此属性为空当主体更新给定元组中的某个属性,而此属性为空值,但其实际上隐藏一个具有更高安全级的数据时,值,但其实际上隐藏一个具有更高安全级的数据时,产生一个元素多实例产生一个元素多实例.4.2 安全数据视图模型安全数据视图模型(Sea View)(2)主体的安全级支配数据的安全级主体的安全级支配数据的安全级.当主体向关系插入一个元组而关系中已经存在与此元当主体向关系插入一个元组而关系中已经存在与此元组具有相同主关键字的低安全级元组,则产生一个组具有相同主关键字的低安全级元组,则产生一个实体多实例实体多实例.当主体更新给定元组中的
25、某个属性,而此属性已经存当主体更新给定元组中的某个属性,而此属性已经存在一个具有较低安全级的值,产生一个元素多实例在一个具有较低安全级的值,产生一个元素多实例.4.2 安全数据视图模型安全数据视图模型(Sea View)例例:Starship Objective Destination TC Enterprise U Exploration U Talos U U Enterprise U Spying S Mars S S 当一个当一个TS安全级的用户执行下列语句:安全级的用户执行下列语句:UPDATE SOD SET Objective=Spying WHERE Starship=Ente
26、rprise将插入两条元组:将插入两条元组:Starship Objective Destination TC Enterprise U Exploration U Talos U U Enterprise U Spying S Mars S S Enterprise U Spying TS Talos U TS Enterprise U Spying TS Mars S TS.4.2 安全数据视图模型安全数据视图模型(Sea View)缺点:缺点:.一个写操作可能产生多个元组,产生的元组数目一个写操作可能产生多个元组,产生的元组数目(最最坏情况下坏情况下)是关系的非主关键字属性取值数的指数是
27、关系的非主关键字属性取值数的指数个。其实这些属性中有许多是个。其实这些属性中有许多是不合逻辑不合逻辑的。后来人的。后来人们对多实例完整性进行了改进。们对多实例完整性进行了改进。.4.3 Jajodia Sandhu模型模型模型的特点:模型的特点:1.重新定义了多实例完整性重新定义了多实例完整性 2.空值完整性空值完整性 3.实例间完整性实例间完整性.4.3 Jajodia Sandhu模型模型基本定义基本定义 关系模式的定义关系模式的定义 一个一个多级关系模式多级关系模式是这样的格式:是这样的格式:R(A1,C1,A2,C2,.,An,Cn,TC)a.其中每个其中每个Ai是域是域Di内的一个数
28、据属性,每个内的一个数据属性,每个Ci是是属属性性Ai的级别属性,的级别属性,TC是元组级别属性。是元组级别属性。b.Ci的域是由集合的域是由集合Li,.,Hi指定的,这个集合枚举指定的,这个集合枚举了安全级别的允许值了安全级别的允许值,范围从最大下界范围从最大下界(glb)Li 到最小到最小上界上界(lub)Hi。c.TC的域是集合:的域是集合:lubLi:i=1,.,n,.,lubHi:i=1,.,n .4.3 Jajodia Sandhu模型模型基本定义基本定义2.关系实例关系实例 对每个关系模式对每个关系模式R,有一状态相关的关系实例集合,有一状态相关的关系实例集合:Rc(A1,C1,
29、A2,C2,.,An,Cn,TC)实际上是实际上是c级别级别上用户可见数据的集合上用户可见数据的集合 a.在给定的安全级集合内,每个访问级别在给定的安全级集合内,每个访问级别c上都有一个上都有一个这样的集合这样的集合;b.每个关系实例是一形如每个关系实例是一形如(a1,c1,a2,c2,.,an,cn,tc)的不的不同元组集合,其中每个同元组集合,其中每个aiDi 或或 ai=null,cci,tc=lub ci:i=1,.,n;c.如果如果ai非空,则非空,则ci Li,.,Hi。要定义。要定义ci,即使,即使ai是空值是空值即安全级属性不能为空即安全级属性不能为空。.4.3 Jajodia
30、 Sandhu模型模型基本定义基本定义3.规定:规定:.每个元组每个元组t中的元素中的元素tAi在访问级在访问级tCi或更高的或更高的实例中是可见的实例中是可见的(取值为真实值取值为真实值);.tAi在较低访问级别的实例中会被空值替换在较低访问级别的实例中会被空值替换.4.3 Jajodia Sandhu模型模型核心完整性核心完整性1.实体完整性实体完整性 设设AK是是R的的外观主关键字外观主关键字(主关键字中不包含安全级的那主关键字中不包含安全级的那部分部分)。多级关系。多级关系R满足实体完整性当且仅当对于所满足实体完整性当且仅当对于所有有R的实例的实例Rc和和tRc有:有:(1)Ai AK
31、,则则 tAi null;(2)Ai,Aj AK,则,则 tCi=tCj,即即 AK内所有属性安内所有属性安全级相同全级相同;(3)Ai不属于不属于AK,则,则tCitCAK.(这里定义这里定义CAK为外为外观主关键字的级别,观主关键字的级别,非主键属性的级别应高于键的非主键属性的级别应高于键的级别,主关键字安全级最低级别,主关键字安全级最低).4.3 Jajodia Sandhu模型模型核心完整性核心完整性空值的语义存在的二义性:空值的语义存在的二义性:.确实为空;确实为空;.实例的级别低于属性的级别,使得此属性不可见,从而表现为空实例的级别低于属性的级别,使得此属性不可见,从而表现为空元组
32、间的元组间的包含包含概念概念:非空值对空值的包含非空值对空值的包含(subsumption)要求:空值的安全级等于元组的主关键字的级别,而要求:空值的安全级等于元组的主关键字的级别,而且空值被非空值且空值被非空值包含包含:一个元组一个元组t包含元组包含元组s,如果对任何一个属性如果对任何一个属性Ai,下列两者,下列两者之一成立:之一成立:.tAi,Ci=sAi,Ci.tAi null 且且 sAi=null.4.3 Jajodia Sandhu模型模型核心完整性核心完整性元组的包含的例子:对于元组的包含的例子:对于U-实例,实例,若此时若此时S用户的实例是:用户的实例是:不是:不是:.4.3
33、Jajodia Sandhu模型模型核心完整性核心完整性元组包含的例子:对于元组包含的例子:对于U-实例实例:Starship Objective Destination TCEnterprise U Exploration U Talos U US用户的实例是:用户的实例是:Starship Objective Destination TC Enterprise U Exploration U Talos U U Enterprise U Exploration U Mars S S Enterprise U Spying S Mars S S在在U-实例中,被包含的元组需要去掉。实例中,被
34、包含的元组需要去掉。.4.3 Jajodia Sandhu模型模型核心完整性核心完整性2.空值完整性空值完整性 多级关系多级关系R满足空值完整性,当且仅当对满足空值完整性,当且仅当对R的每个的每个实例实例Rc满足如下条件:满足如下条件:(1)对所有对所有t Rc,tAi=null tCi=tCAK;即即,空值的安全级别与主键相同空值的安全级别与主键相同。(2)Rc不含有两个有包含关系的元组。如果对每个属不含有两个有包含关系的元组。如果对每个属性性Ai,不会出现下列情形:,不会出现下列情形:(a)tAi,Ci=sAi,Ci 或或 (b)tAi null 且且 sAi=null,则元组则元组t包容
35、元组包容元组s.4.3 Jajodia Sandhu模型模型核心完整性核心完整性3.实例间完整性实例间完整性 一个多级关系一个多级关系Rc满足实例间完整性,当且仅当对所满足实例间完整性,当且仅当对所有有cc,存在一过滤函数,存在一过滤函数Rc=(Rc,c),这里,这里满足以满足以下性质下性质:对每个满足对每个满足 tCAK c的元组的元组 t Rc,存在元组,存在元组 t Rc,满足,满足tAK,CAK=tAK,CAK(2)对每个不属于对每个不属于AK 的的Ai有有:tAi,Ci 若若 tCictAi,Ci=否则否则(3)通过彻底消除包通过彻底消除包Rc中所有的包含元组得到过滤函数中所有的包含
36、元组得到过滤函数的最后结果。的最后结果。(4)Rc中所有元组都是从上述规则导出的。中所有元组都是从上述规则导出的。.4.3 Jajodia Sandhu模型模型核心完整性核心完整性.过滤函数将多级关系映射成不同实例。过滤函数将多级关系映射成不同实例。.过滤函数限制每个用户看到在他过滤函数限制每个用户看到在他许可许可的那部分多级关的那部分多级关系。系。U-用户看到的过滤后的实例用户看到的过滤后的实例:S-用户看到的实例:用户看到的实例:.4.3 Jajodia Sandhu模型模型核心完整性核心完整性空值完整性受到破坏的例子:空值完整性受到破坏的例子:包含关系受到破坏包含关系受到破坏.4.3 J
37、ajodia Sandhu模型模型核心完整性核心完整性4.多实例完整性(多实例完整性(PI):):R满足多实例完整性,当且满足多实例完整性,当且仅当对每个仅当对每个Rc有对所有有对所有Ai:AK,CAK,CiAi.允许下面的实例存在:允许下面的实例存在:禁止下面的实例存在:禁止下面的实例存在:(问题出在哪里?问题出在哪里?).4.3 Jajodia Sandhu模型模型核心完整性核心完整性多实例完整性多实例完整性(PI)表明:表明:.多级关系的主键是多级关系的主键是 AKCAKCR,CR为不在为不在AK中中的属性的安全级属性集的属性的安全级属性集.与与SeaView模型不同的是,模型不同的是,
38、PI只要求函数依赖,去掉只要求函数依赖,去掉了多值依赖了多值依赖(防止产生大量的多实例元组防止产生大量的多实例元组).限制了在同一实体产生的实体多实例中,同一安全级限制了在同一实体产生的实体多实例中,同一安全级上上,每个属性只有一个取值每个属性只有一个取值.4.3 Jajodia-Sandhu模型模型对数据操纵的影响对数据操纵的影响1.规定和限制规定和限制多级关系用多级关系用R(A1,C1,An,Cn,TC)表示,表示,A1表示外观主键表示外观主键c-用户直接看到并且与用户直接看到并且与c实例实例Rc交互交互R的剩余实例可以分成三种情况的剩余实例可以分成三种情况:(1)Rcc,使得,使得 cc
39、,使得,使得cc(3)Rcc,使得,使得c与与c不可比不可比.4.3 Jajodia-Sandhu模型模型对数据操纵的影响对数据操纵的影响2.*-特性的限制特性的限制 处理问题的思路处理问题的思路:保持信息的保持信息的“向上向上”流动,语句格式尽量接近标准流动,语句格式尽量接近标准SQL从安全考虑,由于从安全考虑,由于*-特性的限制:特性的限制:(1)c-用户不能插入、更新、删除用户不能插入、更新、删除 Rc c.4.3 Jajodia-Sandhu模型模型插入语句插入语句3.插入语句插入语句C-用户执行的用户执行的INSERT语句,假设语句,假设t为插入元组为插入元组.安全级属性安全级属性C
40、i全部隐式地赋予值全部隐式地赋予值c,且,且tCi=c;tTC=发出插发出插入操作的当前用户的安全级入操作的当前用户的安全级.如果如果Ai包含在插入语句的属性列里那么包含在插入语句的属性列里那么 tAi=ai,如果,如果Ai不不在列表中则在列表中则 tAi=Null,1in;.若关系中存在与所插入元组若关系中存在与所插入元组t主键相同的元组主键相同的元组t:.若若tTC=tTC,为满足多实例完整性,拒绝插入;,为满足多实例完整性,拒绝插入;.若若tTCtTC,允许插入,允许插入.4.3 Jajodia-Sandhu模型模型插入语句的例子插入语句的例子U-用户想插入元组用户想插入元组:插入后的结
41、果:插入后的结果:.4.3 Jajodia-Sandhu模型模型插入语句的例子插入语句的例子S-用户插入元组用户插入元组:插入后的结果:两个元组是属于不同实体的插入后的结果:两个元组是属于不同实体的.4.3 Jajodia-Sandhu模型模型插入语句的例子插入语句的例子U-用户插入元组用户插入元组:插入后的结果,插入必须接受插入后的结果,插入必须接受产生实体多实例产生实体多实例.4.3 Jajodia-Sandhu模型模型更新语句更新语句4.更新语句更新语句(1)语句格式语句格式:C-用户执行的用户执行的UPDATE语句语句:.谓词谓词 p:可能包括含安全级属性的条件可能包括含安全级属性的条
42、件.在在SET子句中只能包含数据属性。相应的等级属性隐式子句中只能包含数据属性。相应的等级属性隐式地决定了是地决定了是c .对等于用户安全级的实例的影响与传统对等于用户安全级的实例的影响与传统UPDATE相同相同.对更低级关系实例无影响对更低级关系实例无影响.操作结果反映给安全级高于操作结果反映给安全级高于c的用户的实例的用户的实例.4.3 Jajodia-Sandhu模型模型更新语句的例子更新语句的例子U-用户执行的用户执行的UPDATE语句语句:实际上此时的数据为:实际上此时的数据为:.4.3 Jajodia-Sandhu模型模型更新语句的例子更新语句的例子修改后的结果修改后的结果:U-用
43、户看到的:用户看到的:S-用户看到的:用户看到的:实际上是插入了一条元组实际上是插入了一条元组U用户看到的是什么?为什么?用户看到的是什么?为什么?(包容关系包容关系).4.3 Jajodia-Sandhu模型模型更新语句的例子更新语句的例子S-用户发出的更新语句:用户发出的更新语句:更新的结果:更新的结果:是否正确?是否正确?(是)(是).4.3 Jajodia-Sandhu模型模型更新语句的例子更新语句的例子S-用户发出的更新语句:用户发出的更新语句:更新的结果:更新的结果:.4.3 Jajodia-Sandhu模型模型更新语句的例子更新语句的例子U-用户发出的更新语句:用户发出的更新语句
44、:更新后更新后S-用户看到的结果:用户看到的结果:传递更新数据传递更新数据.4.3 Jajodia-Sandhu模型模型关于关于更新的形式化更新的形式化(2)更新的形式化更新的形式化c-用户对用户对Rc的的UPDATE操作:操作:设设s=tRc:t 满足谓词满足谓词p .第一步,对第一步,对s中的每个元组中的每个元组t,t被元组被元组t替代,除了在替代,除了在set子句中给出新值的属性外,子句中给出新值的属性外,t与与t完全相同完全相同类似于类似于不带安全级情形下的不带安全级情形下的UPDATE的语义。的语义。.4.3 Jajodia-Sandhu模型模型关于关于更新的形式化更新的形式化c-用
45、户对用户对Rc的的UPDATE操作:操作:被更新的属性被更新的属性Ai的的 tCic,有多个元组在,有多个元组在Rcc中,与中,与t有相同的外观主有相同的外观主键键(即即uA1,C1=tA1,C1),且,且uAk,Ck=tAk,Ck),将被修改为将被修改为uAk,Ck=。为保持多实例完整性必。为保持多实例完整性必须修改须修改uAk的值为的值为sk.4.3 Jajodia-Sandhu模型模型更新影响高安全级实例更新影响高安全级实例 为维护实例间完整性,我们在为维护实例间完整性,我们在Rcc中插入中插入t和和t(若(若t存在并在存在并在消除包容消除包容时保留下来)时保留下来)实际实际上就是上就是
46、c-用户更新了标记为用户更新了标记为c的属性时,不必插入的属性时,不必插入新元组新元组.4.3 Jajodia-Sandhu模型模型DELETE语句语句5.删除操作删除操作.删除操作删除删除操作删除Rc中满足谓词条件的元组。中满足谓词条件的元组。.从从*-特性来看,只有那些满足特性来看,只有那些满足tTC=c这个附加条件这个附加条件的元组的元组t才会被从才会被从Rc中删除中删除.为保持实例间完整性,多实例化的元组也被从为保持实例间完整性,多实例化的元组也被从Rcc中删除。若中删除。若tC1=c,则删除,则删除t时,时,Rcc任何实例化任何实例化元组将从元组将从Rcc中删除。于是中删除。于是t代
47、表的实体从多级关代表的实体从多级关系中消失系中消失.若若tC1tC1 .4.3 Jajodia-Sandhu模型模型比较比较.与与SeaView模型相比,更新时产生了更新数据的模型相比,更新时产生了更新数据的”向向上上”传递,从而在一定程度上减少了多实例的产生传递,从而在一定程度上减少了多实例的产生.由于由于INSERT、UPDATE语句的操作可能导致不止插语句的操作可能导致不止插入一条元组,仍然会产生大量的多实例入一条元组,仍然会产生大量的多实例.4.3 Jajodia-Sandhu模型模型多级关系分解与恢复算法多级关系分解与恢复算法.TCB子集法实现子集法实现DBMS,依赖底层的多级操作系
48、统实现依赖底层的多级操作系统实现强制访问控制强制访问控制.多级关系的物理存储多级关系的物理存储:拆分为单级关系的集合,多级关拆分为单级关系的集合,多级关系被访问时,再由单级关系恢复而成系被访问时,再由单级关系恢复而成 前述前述Rc不不是实际数据库中保存的数据,而是恢复得到的结果是实际数据库中保存的数据,而是恢复得到的结果.分解与恢复算法分解与恢复算法 .分解:水平分解分解:水平分解+垂直分解垂直分解(SeaView)水平分解水平分解(Jajodia-Sandhu)安全级信息安全级信息保存在数据库中,又没有加密,存在一定风险保存在数据库中,又没有加密,存在一定风险.4.3 Jajodia-San
49、dhu模型模型多级关系分解与恢复算法多级关系分解与恢复算法 高安全级用户高安全级用户 低安全级用户低安全级用户可信前端可信前端TFE可信前端可信前端TFE可信操作系统可信操作系统高安全级高安全级DBMS进程进程低安全级低安全级DBMS进程进程高安全级数据库分片高安全级数据库分片低安全级数据库分片低安全级数据库分片 集中式体系结构示意图集中式体系结构示意图.4.3 Jajodia-Sandhu模型模型 多级关系分解与恢复算法多级关系分解与恢复算法.分解分解:对于每个多级关系模式对于每个多级关系模式:R(A1,C1,An,Cn,TC)分解是分解是:单级基关系单级基关系Dc(A1,C1,An,Cn)
50、的集的集合。每个安全级合。每个安全级c上有一个关系上有一个关系;元组安全级是元组安全级是c的元组集合的元组集合.4.3 Jajodia-Sandhu模型模型 c级别用户的查询级别用户的查询.c 级别的用户查看到的实例级别的用户查看到的实例:c-用户总是看到并与用户总是看到并与c-实例实例Rc交互交互.c级别的用户更新级别的用户更新(插入、修改、删除插入、修改、删除):元组就会被加入到元组就会被加入到Dc、修改或者删除修改或者删除Dc。.c-用户发出更新时用户发出更新时,Dc被修改,而在其他被修改,而在其他Dc,cc中没有变化中没有变化.Rc的改变必须正确地反映到的改变必须正确地反映到Rcc(并