《数据库的访问控制.ppt》由会员分享,可在线阅读,更多相关《数据库的访问控制.ppt(94页珍藏版)》请在课桌文档上搜索。
1、1,数据库的访问控制,2,本 章 概 要,4.1 访问控制策略概述4.2 自主访问控制 4.3 强制访问控制4.4 多级安全访问控制模型4.5 安全数据视图模型4.6 贾让第-沙胡模型4.7 RBAC96模型,3,4.1 访问控制策略概述,在数据库中,访问控制可以分为两大类:(1)基于能力的访问控制:以访问主体为判断对象实现访问控制。访问主体能力列表中的一个元素表示为一个二元组(o,a),其中o表示资源客体,a表示一种访问控制方式。(2)基于访问控制列表的访问控制:以资源客体为判断对象实现访问控制。资源客体访问控制列表中的一个元素表示为一个二元组(s,a),其中s表示访问主体,a表示一种访问控
2、制方式。,4,4.1 访问控制策略概述,4.1.1 自主访问控制概述自主访问控制是一种最为普遍的访问控制手段,用户可以按自己的意愿对系统的参数做适当修改以决定哪些用户可以访问他们的资源,亦即一个用户可以有选择地与其它用户共享他的资源。用户有自主的决定权。,5,自主访问控制模型中,用户对信息的控制基于对用户的鉴别和访问规则的确定。它基于对主体及主体所属的主体组的识别,来限制对客体的访问,还要校验主体对客体的访问请求是否符合存取控制规定来决定对客体访问的执行与否。这里所谓的自主访问控制是指主体可以自主地(也可能是单位方式)将访问权,或访问权的某个子集授予其它主体。,6,4.1.2 强制访问控制概述
3、强制访问控制是指主体与客体都有一个固定的安全属性。系统通过检查主体和客体的安全属性匹配与否来决定一个主体是否可以访问某个客体资源。安全属性是强制性的规定,它是由安全管理员,或者是操作系统根据限定的规则确定的,用户或用户的程序不能加以修改。,7,如果系统认为具有某一个安全属性的主体不适于访问某个资源,那么任何人(包括资源的拥有者)都无法使该主体具有访问该文件的权力。强制安全访问控制可以避免和防止大多数数据库有意或无意的侵害,因此在数据库管理系统中有很大的应用价值。,8,4.1.3 基于角色的访问控制概述基于角色访问控制(RBAC)模型是目前国际上流行的先进的安全访问控制方法。它通过分配和取消角色
4、来完成用户权限的授予和取消,并且提供角色分配规则。安全管理人员根据需要定义各种角色,并设置合适的访问权限,而用户根据其责任和资历再被指派为不同的角色。这样,整个访问控制过程就分成两个部分,即访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。,9,4.2 自主访问控制,自主访问控制基于自主策略管理主体对数据的访问,主要机制包括基于主体的标识和授权规则。这些规则是自主的,即它们允许主体将数据权限授予其他主体。自主访问控制的一个重要方面是与授权管理策略密切相关。所谓授权管理,是指授权和撤消授权的功能。,10,访问控制矩阵模型利用矩阵A表示系统中主体、客体和每个主体对每个客体
5、所拥有权限之间的关系。任何访问控制策略最终均可被模型化为访问矩阵形式:一行表示一个主体的能力列表,一列表示一个客体的访问控制列表。每个矩阵元素规定了相应的主体对应于相应的客体被准予的访问许可、实施行为。,11,表1 访问控制矩阵,A S1,O1=“读”,表示主体S1对客体O1有读权限。其余类推。,12,授权状态用一个三元组Q=(S,O,A)来表示。其中S是主体的集合;O是客体的集合,是安全机制保护的对象。A中的每个元素A(si,oj)表示主体i对客体j的操作授权,它是访问模式的一个子集。一般在数据库管理系统中,访问模式包括读、写、执行、附加和拥有。访问控制矩阵原语是对访问控制矩阵执行的、不使之
6、中断或处于不完整状态的操作。,13,表2 访问控制操作集合,1 结果状态:S=S,O=O Asi,oj=Asi,oj r Ash,ok=Ash,ok(hi,kj)2 结果状态:S=S,O=O Asi,oj=Asi,oj-r Ash,ok=Ash,ok(hi,kj),14,表2 访问控制操作集合,3 结果状态:S=S Si,O=O Si As,o=As,o(S S,o o)Asi,o=(o o)As,si=(S S)4 结果状态:S=S-Si,O=O-Si As,o=As,o(S S,o o),15,表2 访问控制操作集合,5 结果状态:S=S,O=O Oj As,o=As,o(S S,o o)
7、As,oj=(o o)6 结果状态:S=S,O=O-Oj As,o=As,o(S S,o o),16,约束条件 每种命令的可选的条件语句中,可以包含对该命令执行时的时间或数据约束。数据约束:可规定所访问的数据的值的限制。时间约束:规定允许读写发生的时间条件。上下文约束:例如只读取姓名字段或工资字段是允许的,但把它们组合起来读取就需要限制。历史记录约束:该约束条件的激活依赖于该操作先前的操作。,17,自主访问控制特点:根据主体的身份及允许访问的权限进行决策。自主是指具有某种访问能力的主体能够自主地将访问权的某个子集授予其它主体。灵活性高,被大量采用。自主访问控制缺点:信息在移动过程中其访问权限关
8、系会被改变,权限控制某些情况下不够严格。如用户A可将其对目标O的访问权限传递给用户B,从而使不具备对O访问权限的B可访问O。,18,4.3 强制访问控制,为系统中每个主体和客体标出不同安全等级,这些安全等级由系统控制,不能随意更改。根据主体和客体的级别标记来决定访问模式。如绝密级,机密级,秘密级,无密级等。在军队中经常应用,支持多级安全考虑到偏序关系,主体对客体的访问主要有四种方式:(1)向下读(rd,read down):主体安全级别高于客体信息资源的安全级别时允许的读操作;(2)向上读(ru,read up):主体安全级别低于客体信息资源的安全级别时允许的读操作;,19,(3)向下写(wd
9、,write down):主体安全级别高于客体信息资源的安全级别时允许执行的动作或是写操作;(4)向上写(wu,write up):主体安全级别低于客体信息资源的安全级别时允许执行的动作或是写操作。其访问控制关系可分为:下读/上写和上读/下写,分别进行机密性控制和完整性控制通过安全标签实现单向信息流通模式。,20,BLP模型用于保证保密性,其依赖于系统元素密级。密级用安全等级来表示。每个安全等级是一个二元组,记作L=。通常将密级划分为公开(Unclassified)、秘密(Confidential)、机密(Secret)、绝密(Topsecret)四个等级,这些等级构成一个全序关系,即Tops
10、ecretSecretConfidentialUnclassified。范围:根据主体和客体所涉及的信息类别将主体和客体分为一系列不同的属类,这些属类称为范围。类别之间是彼此独立,并有是无序的。一个安全类仅包含一个安全等级,而它包括的类别可以任意多。,4.3.1 Bell-Lapadula模型,21,安全标签是限制在某一特定对象之上的一组安全属性信息项。在BLP模型中,所有的主体和客体都被打上了标签,这个标签用于记载安全等级和实体所属的类别。模型规定当信息能从一个实体流向另一个实体时,必须满足后者的安全等级和实体所属类别都支配前者。对这种支配定义如下:给定两个安全等级L1=,L2=,称(1)L
11、1支配L2成立,当且仅当C1C2且S1 S2。记L1L2。(2)L1严格支配L2成立,当且仅当C1C2且S1 S2。记L1L2。对给定的两个安全等级L1,L2,如果L1L2和L2L1均不成立,则L1和L2是不可比的。,22,显然对于安全类集合中的任意元素A、B、C都有:(1)自反性:AA;(2)传递性:如果AB且BC,则AC;(3)反对称性:如果AB且BA,则A=B。BLP模型提供了八种操作:,23,24,BLP模型主要用来控制主体和客体之间的信息流动。该模型设计了一种信息流动的策略来保证信息安全性。信息流动可以用一个格表示,-决定了不同实体间信息是否可以流动,如x-y,即x的信息可以流向y。
12、BLP模型信息流动的一般原则:简单安全性。主体s对客体o具有读访问权,当且仅当(Ao,Co)(As,Cs)。简单安全性确定了读操作的原则。对读操作来说,主体必须对客体有支配权,这一原则也称为下读原则。,25,星(*)特性。主体s对客体o具有写访问权,并且仅当(As,Cs)(Ao,Co).星特性确定了写的操作原则。对于写操作来说,客体必须对主体有支配权。这一原则也叫做上写原则。信息流通模式:,26,BIBA模型是为保护信息的完整性而设计的。BIBA模型同样基于主体、客体和安全等级这些概念。基中,主体和客体的概念与BLP模型是一致的,系统中每个主体和客体都打上了标签,这个标签主要功能是记载完整性等
13、级和实体所属的类别。BIBA模型的完整性等级由安全等级和范围集合两个部分组成。其中,安全等级主要的类型是极重要(crucial,C)、非常重要(Very Important,VI)和重要(Important,I),三者之间是全序关系,即CVII。范围的定义与BLP模型类似。,4.3.2 BIBA模型,27,BIBA模型的基本思想是低完整性的信息不能向高完整性的实体流动。反之可以。即如果信息能从一个实体流向另一个实体时,必须满足前者的完整性等级和实体所属类别都支配后者。支配关系定义如下:给定两个安全等级I1=,I2=,称(1)I1支配I2成立,当且仅当C1C2且S1 S2。记I1I2。(2)I1
14、严格支配I2成立,当且仅当C1C2且S1 S2。记I1I2。对给定的两个安全等级I1,I2,如果I1I2和I2I1均不成立,则I1和I2是不可比的。,28,显然对于完整性集合中的任意元素A、B、C都有:(1)自反性:AA;(2)传递性:如果AB且BC,则AC;(3)反对称性:如果AB且BA,则A=B。BLP模型定义了四种访问模型:,29,BIBA模型的基本思想是低完整性的信息不能向高完整性的实体流动。反之可以。即如果信息能从一个实体流向另一个实体时,必须满足前者的完整性等级和实体所属类别都支配后者。支配关系定义如下:给定两个安全等级I1=,I2=,称(1)I1支配I2成立,当且仅当C1C2且S
15、1 S2。记I1I2。(2)I1严格支配I2成立,当且仅当C1C2且S1 S2。记I1I2。对给定的两个安全等级I1,I2,如果I1I2和I2I1均不成立,则I1和I2是不可比的。,30,一种广泛使用非自主安全策略是严格完整性策略,包括以下规则:(1)完整性星规则:一个主体能够对一个客体持有Modify的访问方式,仅当主体的完整性等级支配客体的完整性等级。(2)援引规则:一个主体能够对另一个主体持有Invoke的访问方式,仅当第一个主体的完整性等级支配第二个主体的完整性等级。(3)简单完整性条件:一个主体能够对一个客体持有Observe的访问方式,仅当客体的完整性等级支配主体的完整性等级。,3
16、1,Bell-LaPadula模型:保证保密性简单安全特性(不向上读):一个主体只能读一个低级别或相同安全级别的对象*-特性(不向下写):一个主体只能写一个高级别的或相同安全级别的对象 Biba模型:保证完整性与Bell-LaPadula模型正好完全相反:不向下读、不向上写,强制访问控制的两种模型,32,4.4 多级安全访问控制模型,在关系型数据库中应用MAC策略首先需要扩展关系模型自身的定义。因此提出了多级关系模型(Multilevel Relational Model)。多级关系的本质特性是不同的元组具有不同的访问等级。关系被分割成不同的安全区,每个安全区对应一个访问等级。一个访问等级为c
17、的安全区包含所有访问等级为c的元组。一个访问等级为c的主体能读取所有访问等级小于等于c的安全区中的所有元组,这样的元组集合构成访问等级c的多级关系视图。类似地,一个访问等级为c的主体能写所有访问等级大于或等于c的安全区中的元组。,33,4.5 安全数据视图模型,安全数据视图模型(Secure Sea View)是Denning等人在1986年前后于斯坦福研究所开发的一个保护关系数据库系统的安全模型。模型采用强制访问控制策略和自主访问控制策略控制数据访问。安全数据视图模型分为两个层次:下层是强制访问控制模型,上层是可信计算基(Trusted Computing Base,TCB)模型。其中MAC
18、模型是实施了BLP模型的访问监控器。TCB则定义了多级关系的概念,支持对于多级关系和视图的自主访问控制。由于TCB模型位于MAC模型的上层,其所有信息均存储在MAC访问监控器控制的客体中。,34,MAC模型基于信息的安全等级构造,所有需要访问敏感信息的用户必须提供访问这些信息所要求的机密性、完整性授权。访问等级:由一个保密等级部分和一个完整性等级部分组成,记为。其中保密等级对应于BLP模型中的安全等级,完整性等级对应于BIBA模型中的完整性等级。该访问等级形成一个满足偏序关系的格。此偏序关系称为支配关系。一个访问等级C1支配另一个访问等级C2,当且仅当C1的保密等级支配C2的保密等级,C1的完
19、整性等级受C2的完整性等级支配。,4.5.1 SeaView的MAC模型,35,支配关系的形式化定义:给定两个访问等级C1=,C2=,C1支配C2,即C1C2当且仅当X1X2,Y1Y2。如果上述两个不等式中任意一个是严格成立的(即或),则称C1严格支配C2。如果C1C2和C2C1均不成立,则称C1和C2是不可比的。客体:定义为必须对其进行访问的信息容器。每个客体指派一个惟一的标识符和一个惟一的访问等级。此标识符和访问等级在客体的整个生命周期固定不变。由MAC模型保护的客体不是数据库的抽象结构,而是底层操作系统中的单级文件,数据库信息映射到这些文件中。这允许模型用访问单级客体的方式说明并实现强制
20、访问控制策略。,36,主体:MAC模型中的主体是用户进程。用户进程的访问等级等价于用户的访问关系。系统为每个用户指定一个允许执行的保密等级和完整性等级范围:最小保密等级(minsecrecy),最小完整性等级(minintegrity),最大保密等级(maxsecrecy)、最大完整性等级(maxintegrity)。偶对称为主体的写等级,偶对称为主体的读等级。显然,读等级必须支配写等级。如果一个主体的读等级来格支配其写等级,则此主体是可信息。若保密等级不等式严格成立,则称此主体是关于机密性可信的。允许以低于读出数据的保密等级写数据,但必须证明主体没有向下传播信息。,37,如果对于完整性等级不
21、等式严格成立,则称此主体是关于完整性可信的。允许以低于写入数据完整性等级读数据,但必须证明主体没有用低完整性等级的信息污染主体所写的信息。读等级等于写等级的主体称为不可信主体。访问方式:模型的强制访问控制策略限定了在数据库底层操作系统客全上可以执行的基本访问方式,主要是:读:读存储在客体中的信息。写:向客体中写信息。执行:执行一个客体。,38,规则:MAC模型通过一组规则集控制访问方式的执行,这些规则是:(1)读规则(Read Property):仅当主体的读等级支配客体的访问等级时,主体能够读客体的信息。形式化表示为:主体s能够读客体o,仅当readclass(s)access class(
22、o)。该规则相当于要求主体的maxsecrecy支配客体的保密等级,主体的minintegrity受客体的完整性等级支配。该规则是BLP模型中不上读保密规则和BIBA模型中严格完整性策略的不下读完整性规则的综合。,39,(2)写规则(Write Property):仅当主体的写等级受客体的访问等级时,主体能够向客体写信息。形式化表示为:主体s能够写客体o,仅当writeclass(s)access class(o)。该规则相当于要求主体的minsecrecy受客体的保密等级支配,主体的maxintegrity支配客体的完整性等级。该规则是BLP模型中不下写保密规则和BIBA模型中严格完整性策略
23、的不上写完整性规则的综合。(3)执行规则(Execute Property):仅当主体的maxintegrity小于或等于客体的完整性等级,且主体的maxsecrecy大于或等于客体的保密性等级时,主体能够执行客体。,40,TCB模型定义了多级关系,提供形式化的自主安全策略,同时支持数据的一致性(Consistency)、审计性(Accountability)、标识(Labelling)、聚合(Aggregation)、清洗(Sanitization)、等级重分(Reclassification)。多级关系:一个多级关系是由关系模式R(A1,C1,A2,C2,An,Cn,TC)表示的。一个多级
24、关系的任一属性Ai及其相应的安全等级Ci是单级的,当且仅当Ci是定义在访问等级格中由一个单级表示的域上,否则,称其为多级的。如果所有的属性是单级的且是同一访问等级,则一个多级关系是单级的。,4.5.2 SeaView的TCB模型,41,一个多级关系中的元组可以表示为(a1|c1,an|cn,t),其中每个ai|ci表示属性i的值和安全等级。元素t表示整个元组的安全等级,即元组中信息的访问等级。对不同的访问等级会有不同的实例。在关系中,给定访问等级c的实例由安全等级c所支配的所有元素组成,也就是关系中可由访问等级为c的用户访问的信息,而关系中不能由访问等级为c的用户访问的值被替代为空值。多级关系
25、的不同实例遵循如下原则:出现在给定访问等级的关系实例中的每个元组必须出现在具有更高访问等级的实例中,低等级实例中为空的元素在高等级实例中被替换为非空元素。多级关系的模式也被赋予一个访问等级。,42,在安全数据视图模型中客体的安全等级必须满足下列原则:数据库访问等级完整性:关系模式的访问等级必须受能够存储在此关系中的数据的最低访问等级支配。访问等级比数据库低的用户不能使用访问等级比数据库名低的关系。单级主体不能向访问等级高的数据库中的访问等级低的关系写信息。该规则遵循与BLP模型的客体层次结构一致的约束。要求客体的访问等级支配其先驱的访问等级。,43,可见数据规则:关系模式的访问等级必须受能够存
26、储在此关系中的数据的最低访问等级支配。一个属性访问等级范围的最大下界必须支配关系模式的访问等级。该规则遵循外延的访问等级必须支配内涵的访问等级的规则,否则,关系中低于关系模式访问等级的数据对于低访问等级的用户不可用,因为这此用户无法访问关系模式。单级主体不能将低访问等级数据写到高访问关系中,因为首先无法读高访问等级关系模式。,44,视图访问级完整性:视图定义的访问等级必须支配视图定义中出现的所有关系和视图的访问等级。否则,由于强制访问控制策略,视图将不能访问构成此视图的关系和视图。安全数据视图模型还定义了一组多级关系访问等级必须满足的规则:多级实体完整性多级参照完整性,45,访问多级关系:在安
27、全数据视图模型中,多级关系的访问包括读、写(插入和删除)操作。对于读操作,主体可以读多级关系中具有与自己相同或更低访问等级的实例。对于写操作,由于允许对一个属性在不同访问等级上赋予不同值,模型根据主体与已存在的数据客体的访问等级分为两种情况。(1)主体访问等级受数据访问等级支配。为了不让主体得知同名数据已经存在,这一插入应被接受。为了维护完整性,原有数据也不应该删除,由此引入多实例。,46,(2)主体访问等级支配数据访问等级。或者延迟操作,通知主体出现冲突;或者执行操作,但主体不能删除或覆盖较低访问等级的数据,由此引入多实例。自主安全策略:允许说明用户和用户组对特定客体能够执行的操作,也允许说
28、明用户和用户组对特定客体禁止执行的操作。模型通常采用空值表示否定授权。如果主体在某个客体上的授权为空,则该主体不允许在客体上执行任何操作。主体是系统用户或用户组。一个用户可以属于多个用户组。每个用户组的成员必须是用户。客体是数据库、数据库关系(视图、快照)和MAC客体。,47,不同类型的客体具有不同的访问方式,其中mrelation为多级关系。(1)数据库访问方式 Null:拒绝访问客体。List:获取属于一个数据库的多级关系名和模式。Create-mrelation:在数据库中建立一个多级关系。Delete-db:删除一个数据库。Grant:授予其他用户对数据为除Grant与Give-gra
29、nt之外的任何访问方式。Give-grant:授予其他用户对数据库的任何访问方式。包括Grant和Give-grant。,48,(2)自主访问方式 Null:拒绝对关系的任何访问。Select:从关系中检索元组。Insert:向关系中插入元组。Update(i):更新关系中第i个属性。Delete-tuple:从关系中删除元组。Create view:在关系之上建立一个视图。Delete-mrelation:删除一个多级关系。Reference:访问一个关系。Grant:授予其他用户对于关系除Grant和Give-grant之外的任何访问方式。Give-grant:授予其他用户对关系的任何访问
30、方式。,49,(3)MAC客体访问方式 Null:拒绝对客体的任何访问。Read:读一个客体。Write:写一个客体。Grant:授予其他用户对于客体除Grant和Give-grant之外的任何访问方式。Give-grant:授予其他用户对客体的任何访问方式。,50,访问控制:访问控制根据授权确定应该接受还是拒绝用户的访问请求。模型允许对用户组授权。如果肯定授权和否定授权发生冲突,模型按照最高说明规则解决冲突:(1)如果一个用户显示地说明某个客体的否定授权,则此否定授权高于对此有户和所属用户组的其他任何授权。(2)如果一个用户确实没有说明某个客体的否定授权,但显式地说明对客体授予某些访问方式,
31、则此用户只拥有对客体的这些访问方式,不拥有所属用户组对此客体的访问方式。(3)如果一个有户没有说明对某个客体的任何授权,并且其所属用户组也没有说明对此客体的任何否定授权,则此用户持有所属用户组对此客体拥有的访问授权。,51,授权管理:用户可以授权其他用户访问数据库客体,也可以撤消用户的所授权限。同样方式适用于用户组。授权的传播通过Grant和Give-grant控制。如果一个用户对一个数据库客体具有Grant访问方式,则此用户能够向其他用户和用户组授予对此客体的除Grant和Give-grant外的任何访问方式,也能从它们处撤消所授权限。用户还可以通过授予Null访问方式的方法,拒绝其他用户和
32、用户组对此客体的任何访问方式。如果一个用户对一个客体持有Give-grant访问方式,则此用户可以向其用户和用户组授予和撤消对此客体的任何访问方式。此用户同也可以通过授予Null访问方式的方法,拒绝其他用户对此客体的任何访问方式。,52,一个用户已被授予对一个客体的Grant或Give-grant访问方式,则能撤消对此客体的任何访问方式,包括他从未授予的访问方式。从一个用户处撤消授权,并影响对此用户可能已经复制的数据副本的授权,也不影响此用户已授予他人的权限,即撤消是不递归的。当一个用户建立了一个除视图之外的数据库客体时,持有对此客体除Null之外的所有访问方式。当用户建立一个视图时,只能获得
33、用户所持有视图定义中直接涉及的每个表的访问方式,即对一个新建视图的授权集合是有户所持有的视图定义中直接涉及的所有关系的授权的交的子集。对于读数据库中的关系、视图和约束的定义,并对数据库中客体进行操作,需要持有对数据库的访问权限。,53,安全数据视图模型安全策略要求是实施自主安全策略和所有支持策略的系统安全机制要由实施强制安全策略的安全内核约束。由此,TCB使用的所有信息都必须存储在MAC模型的客体中,并对它的访问都经由强制策略控制。特别是每个多极关系,均必须存储在多级关系的客体中。由于MAC模型客体是单级的,每个多级关系必须分解,按照它们的访问等级分别存放在不同的客体中。安全数据视图模型提供了
34、将多级关系分解为关系模型中标准的单级关系的方法。,4.5.3 多级关系的表示,54,4.6 贾让第-沙胡模型,是一种用于关系数据库的多级安全数据模型。该模型采用与BLP模型相同的安全等级。1、多级关系的定义模型在标准关系模型中引入了安全等级标签,将一个扩展的包括安全等级关系称为多级关系,多级关系由以下两部分构成:(1)一个独立于状态的多级关系模型R(A1,C1,A2,C2,An,Cn,TC).其中Ai是定义在域Di上的属性,每个Ci是Ai的安全等级,TC是元组安全等级。Ci的域是一个由Li,Hi描述的范围,是访问等级下界Li到访问等级上界Hi的子格。TC域也是一个范围,其下界和上界分别等于属性
35、的安全等级域的下界和上界的最小上界。,4.6.1 多级关系模型,55,(1)一个依赖于状态的关系实例集合Rc(A1,C1,An,Cn,TC)。在给定的格中,对每个访问等级c,具有一个关系实例。每个实例是形如(a1,c1,an,cn,tn)的元组集合。其中每个元素ai或者是域Di中的一个值,或者是Null。每个ci是小于c的特定范围的一个值。Tc是元组中属性访问等级的最小上界。,表3 职工的一个多级关系,56,表4 职工关系的S级和TS级实例,职工关系的S实例,职工关系的TS实例,57,2、规则读写操作需要满足不上读和不下写的规则。对此多级关系中元素的安全等级还需要引入一些其他约束用以控制多实例
36、。(1)实例完整性规则设AK是关系模式R上的外观主码,一个多级关系满足实体完整性,当且仅当对所有R的实例Rc与tRc,有:AiAk=tAinull.该规则保证Rc中没有主码属性为空的元组。Ai,AjAk=tAi=tAj。该规则指出组成AK的各属性具有相同的安全等级。它保证所有的码属性在特定的安全等级下要么完全可见,要么完全是空值。AiAk=tCi tCi。该规则指出在任何元组中,非码属性的访问等级必须支配码属性的访问等级。保证在多级关系的每个实例中,所有元组的主码不会出现空值。,58,(2)空值完整性规则多级关系R满足空值完整性,当且仅当对R的每个实例Rc均满足下列条件:对所有tRc,tAi=
37、null=tCi=tCAK.即空值安全等级等于码的安全等级。Rc中不包含两个不同的元组,其中一个元组归类于另一个元组,也就是说,Rc无归类。,59,(3)实例间完整性规则多级关系R满足实例间完整性,当且仅当对于所有的cc,Rc=(Rc,c),其中过滤函数按以下方式从Rc产生安全等级为c的实例Rc:,满足tAk,CAK=tAK,CAk。有,60,(4)多实例完整性规则多级关系R满足多实例完整性,当且仅当对于每个Rc,所有Ai满足AK,CAK,Ci-Ai。该规则规定,用户定义的外观主码、实际主码的访问等级以及属性的访问等级函数决定此属性的值。这一规则隐式地定义了多级关系的主码是外观主码的属性和访问
38、等级,以及所有非码属性的访问等级。多级关系的主码可形式化写为AKCAKCR。其中CR为所有非码属性的访问等级集合。上述规则可进一步表示为AKCAKCR-AR,其中AR表示所有非码属性的集合。,61,3、访问多级关系对数据的访问遵循BLP模型的不上读规则。用户只能看到与自己访问等级相同或更低访问等级的数据,因此读操作不改变数据库的状态。改变数据库状态的写操作不仅要满足用户的要求,还要使修改后的数据库状态满足模型规则的要求。若一个用户的访问等级为c,则此用户可以看到多级关系R的实例Rc,并可以对其进行操作。R的其余实例可以分三类:一类是其访问等级严格受c支配的实例,即RccRc,cc.第三类是访问
39、等级与c不可比的实例,即RccRc,cc.,62,(1)插入操作访问等级为c的用户的插入操作可写成语句:INSERT INTO RcAi,Aj VALUES(ai,aj)。VALUES子句中只包含数据属性值,其相应的访问等级值隐含为c。设t是待插入的元组,如果Ai包括在插入语句的属性中,tAi=ai,如果Ai未包含在属性中,则tAi=null,且对1in,有tCi=c,tCi是元素tAi的访问等级,当且仅当满足下例条件时,插入操作被接受:tAK不包括任何空值。对所有的uRc:uAK tAK。如上述条件满足,元组t被插入到Rc中,并随之插入到所有实例Rcc 中,该插入结果只能在Rcc中看到。,6
40、3,(2)更新操作访问等级为c的用户的更新操作可写成语句:UPDATE Rc SET Ai=si,Aj=sj WHERE p。其中sj是一标量表达式,p是谓词表达式,以确定要更新的元组。更新操作对实例Rc的影响设S是实例Rc中满足谓词p的元组集合,更新操作对每个元组tS的影响是两个方面的。按用户要求用t更替t,t中除SET子句中出现的属性赋于新值外,所有属性值与t中相应属性值相同,即:,64,为了避免隐蔽通道,每更新一个元组,可能要再插入一个元组,将此更新对那些访问等级低于c的用户隐藏起来,新插入的元组t定义如下:,更新操作时,对每个元组tS,是用t和t来替换,如果更新结果满足多实例完整性,更
41、新操作成功,否则,拒绝此更新操作,原关系不变。,65,更新操作对实例Rc的影响实例Rc更新操作的结果是按照最小传播策略传播到访问等级更高的实例R设S是实例Rcc中的,即只将为维护实例间完整性所必须的元组插入实例Rcc。插入实例Rcc的元组是更新过的元组t,可能还有元组t。设Ai是SET子句中的一个属性,tCi=c,tAi=x,其中x是非空值。假定一个访问等级为c的用户要求将属性tAi的值x修改为si。由于是多实例的原因,在Rcc中可能存在几个元组,它们与t具有相同的外观主码,并且在属性上Ai上具有相同的值与安全等级。为满足多实例完整性,这些元组中的属性Ai的值x必须修改为si。对每个AiSET
42、子句,且tAinull,设U=uRcc|uAK,CAK=tAK,CAK,uAi,Ci=tAi,Ci对每个uU,构造一个u:对SET子句中出现的每个Ai,使uAi,Ci=(si,c),使u中其他元素与u中相应元素相同,用u替代u.向实例Rcc中插入元组t和t。,66,(3)删除操作删除操作语句的格式:DELETE FROM Rc WHERE p。这里p是谓词表达式,以确定Rc中应删除的元组在多实例条件下,可能要求执行某些附加的操作,如可能要在Rcc中删除相应的元组,以维护实例间完整性。设t是DELETE语句中满足谓词条件的元组,则有:如果tCAK=c,则删除Rcc中所有多实例元组。如果tCAKc
43、,所有多实例元组将继续留在Rc tCAK的所有实例中。,67,对模型作扩展,从不同角度为排除多实例做出努力。(1)使所有码是可见的。在这一方法中,关系的外观主码具有最低访问等级,因此关系中所有外观主码是可见的。(2)划分主码域。这种方法将主码的域按主码可能具有的各种访问等级进行划分,这就排除了具有不同访问等级的有户试图向关系中插入具有相同外观主码的元组的情况。(3)限制插入操作由可信主体完成。这种方法中,限制所有插入操作必须由一个系统最高访问权限的用户或由一个能访问所有元组的用户来完成。,4.6.2 模型的扩展,68,4.7 RBAC96模型,RBAC模型与DAC模型和MAC模型之间最本质的区
44、别是:权限不直接赋予特定的用户,而是指派给角色。当用户被指派到特定角色中后获得适当的权限。目前三种广泛运用的基于角色的访问控制模型,分别是RBAC96、角色图模型和NIST模型。RBAC模型的基本术语包括:角色(Role):一种表述组织中权限和职责的工作功能。该工作功能可以授予被指派到该角色的用户。,4.7.1 基本术语和记号,69,权限(Permission):描述授权行为类型,即主体对客体具有哪些授权行为。用户(User):直接和计算机系统进行交互的人。主体(Subject):引起信息在对象之间流动或改变系统状态的主动实体。客体(Object):包含或接受信息的被动实体。资源(Resour
45、ce):执行功能时任何可用的东西。角色层次(Role Hierarchy):角色之间的一种偏序关系。约束(Constraint):两个角色或多个角色之间的关系。,70,管理角色(Administrative Role):一个具有更改用户、角色和权限的集合,具有更改用户指派或权限指派关系的角色。组(Grop):用户集合。会话(Session):用户与用户所具有的角色,激活子集之间的映射。职责分离(Separation of Duty):一种禁止约束,即同一个体不能同时指派给两个或多个互斥的角色中。行为约束(Obligation Constraint):特定的角色必须在一个会话中被同时激活。,71
46、,表5 RBAC96的常用记号,72,组是访问控制中通用的一个单元,包含用户集合。角色是一个建立用户和权限之间连接的访问控制单元。每个角色与一组用户和有关的动作相互关联,角色中所属的用户可以有权执行这些操作角色与组的区别组:一组用户的集合角色:一组用户的集合+一组操作权限的集合,4.7.2 组和角色,73,4.7.3 RBAC96模型的构成,RBAC96模型提出了RBAC模型的层次,如图所示。该层次可解释为:上层模型具有下层模型的全部特性。,最简单的RBAC0定义了RBAC96和基于角色的访问控制的先决特性。RBAC1和RBAC2不能直接比较,前者定义角色层次的概念,后者定义了角色约束的概念。
47、RBAC3则包含RBAC1和RBAC2的所有特性。,74,1.RBAC0是RBAC96的基本模型,其形式化定义为:RBAC0模型包含以下部分:角色(R)、用户(U)、权限(P)和会话(S)。是权限和角色之间的多对多关系。是用户与角色之间的多对多关系。该函数将会话映射到用户中。该函数将会话映射到角色集合中。,75,2.RBAC1RBAC1继承了RBAC0的所有特性,同时引入了一定的层次结构来表现角色之间的关系,这种表示角色之间的层次关系称为角色层次。角色层次的形式化定义为角色层次 是一个自反的、反对称的、传递的二元关系。角色层次RH是一种偏序关系,如果(r,r)RH,则称角色r是角色r的上级关系
48、。角色层次具有两种功能:(1)权限继承:模型假设角色r隐含地指派了它所有下级角色的权限。(2)角色活动。模型假设如果用户u指派给角色r,则用户u能激活角色r的任何下级角色,所有这些下级角色隐含地指派给用户u。,76,RBAC1模型的形式化定义如下:是权限和角色之间的多对多关系。是用户与角色之间的多对多关系。角色集合R上的偏序关系。该函数将会话映射到用户中。该函数将会话映射到角色集合中。,77,3.RBAC2RBAC2模型在RBAC0的基础上引入了约束的概念,从而能清晰地表示职责分离策略和势策略。职责分离策略可以指定两个或多个角色不能在同一个会话中被激活,而势策略能指定一个角色最多能有几个活动实
49、例。职责分离策略将敏感任务分为几个指派给不同用户的子任务,使得两个或多个用户必须合作完成该任务。职责分离的目的是防止单个用户危害组织的安全要求。职责分离通过角色对建模,主要分为静态职责分离和动态职责分离。前者指为每个用户指定的角色集合一定不能包含那些在职责中分离中的角色。后者指在一个会话中一定不能包含那些在职责分离中的角色。,78,4.RCL2000为角色授权约束语言(RCL),RCL2000的一个重要特性是引入了冲突集的概念。定义了以下组件:。冲突角色集合的集合。这个集合中的一个元素 定义了互斥的角色集合,这些角色用来声明静态职责分离或动态职责分离。冲突权限集合的集合。这个集合中的一个元素
50、定义了互斥的权限集合,这些权限用来声明可操作的职责分离约束。冲突用户集合的集合。这个集合中的一个元素 定义了冲突用户集合,这些集合用来声明同一族的两个用户不能分别指派两个互斥的角色。,79,一个RCL2000表达式包括以下内容:集合集合操作和谓词。两个非决定函数Oneelement(OE)和Allother(AO).5.RBAC3其为一个完整的模型。它同时包括RBAC1和RBAC2的所有特性,各部分关系如下:,80,4.7.4 RBAC管理模型,1.ARBAC97模型是引入了基于角色的访问控制的管理模型。为管理RBAC96,该模型引入了管理角色(AR)的概念,并要求角色R的集合与角色AR的集合