第四讲 Seaview模型
Seaview模型是一个多级安全关系数据库系统的形式化模型。它的目标是设计一个达到DoD(美国国防部)可信计算机系统评估准则(TCSEC)A1级的多级安全数据库系统。
多级安全关系数据库系统是指数据库中存放着安全级不同的各种数据,以适应不同安全级别用户的需要。按照强制安全策略的要求,仅当用户的安全级高于或等于(亦称“支配”)数据的安全级时,用户才能读访问这些数据。
一、多级关系模式和客体的安全标记
一个多级安全关系数据库系统,安全级标记的粒度可以是关系,也可以是记录,也可以是属性,但以上定义方式都难以得到高安全级的数据库系统。因为按以上定义方法,或者会使某些敏感数据的安全级降低,或者会使某些数据的安全级升高,也就是或者牺牲安全性或者降低数据的可用性。在Seaview之前有些模型是这样定义的。
用户对数据库的操作在很多情形下实际上都是以数据项为其访问对象,这些数据的敏感程度往往差异很大。例如在一张人员表中查询50岁以上人员的健康状况,这其中有些人的健康状况不是任何人都可以查询的,需有一定的安全级等。
因此,Seaview模型将访问控制粒度定为数据项,即对每一数据项都有安全级标记。为此,它将标准的关系模式R(A1,A2,…,An)扩展为R(A1,C1,A2,C2,…An,Cn)。使每一数据属性Ai之后还有一与之相对应的安全级别属性Ci,即在每一数据项后,都带有该数据项的安全标记。(一个关系的属性表名称为关系模式,关系模式就是二维表的表框架,其中R为关系名,A1, A2,……An为属性名。)
表一 |
d8 |
d7 |
d6 |
d5 |
d2 |
d3 |
d4 |
d1 |
A1 |
C1 |
A2 |
C2 |
A3 |
C3 |
001 |
d2 |
24 |
d5 |
x |
d5 |
013 |
d3 |
15 |
d7 |
y |
d8 |
005 |
d8 |
35 |
d8 |
z |
d8 |
D |
R |
K |
d |
r |
class(D)≤class(R)≤class(K)≤class(d)≤class(r)
注意:①主关键字K可能由多个属性组成,若为多个属性值组成,则要求每个属性值的安全级相等。
②在标准的关系模型中,允许属性值为空,在多级关系中也允许属性值为空,对它也要定义安全级,但安全级取Ci中的最低值。
上述安全级的关系规定的理由是:
1.若class(D)高于class(R),则安全级低于class(D)的用户无法知道该库的存在,便不能访问库中与自己安全级相匹配的数据。
2.类似地,若class(R)≥class(r),则安全级低于class(R)用户不知道该关系存在,因此无法去访问R中与自己安全级相匹配的数据。
3.主关键字是用来唯一地标记该记录的,常作为查询的条件,它的安全级应低于其它属性值的安全级。
4.整条记录的安全级class(r)高于记录中所有数据项的安全级,常取各class(d)的最小上界。它使得用户的安全级只有当其支配class(r)时,才能看到该记录中所有的数据项,否则只能看到部分数据项。
复习数学概念:
一、 偏序关系及次序图;
二、 最小上界和最大下界;
class(r)=class(d1)∨class(d2) ∨…… ∨class(dn)
=lub(class(di)) di∈r
class(R)=glb(class(di)) di∈R
class(D)=glb(class(Ri)) Ri∈D
例如,对于表一,class(r1)=d5,class(r2)=d8,class(r3)=d8,class(R)=glb(d2,d3,d5,d7,d8)=d1。
即class(R)取各数据项安全级别的最大下界。(不能取d5,也不能取<