【IT168 文档】由于提供了一种标准且可扩展的方式来描述半结构化数据文档,XML已经成为Web应用中数据存储和交换的基本手段。作为未来关系型数据库的潜在替代者,XML除了需要进一步的拓展和规范化之外,更重要的是要保证存储于其中的数据的安全性,尤其是对于存放有机密信息的XML数据库。
早期的XML安全研究侧重于传输过程中的数据加密和数字签名,并不能满足以查询为目的的XML数据库的安全要求。通过基于授权的访问控制可以使用户只能访问其获得许可的XML文档片断,但这只控制了直接的信息泄露,还存在由数据之间语义关系引发的间接泄露。如通过授权可以禁止用户访问XML文档中患者A的疾患信息。然而,基于病房决定疾患这一简单常识,用户查询同病房患者B的疾患信息就可以实现对A的推理。这种推理行为,仅仅依靠访问控制模型是无法限制的,需要研究推理控制技术。
本文将介绍以RXACL为基础的一种推理控制技术。RXACL是在传统基于列表的访问控制模型基础上发展而来的,它利用统一资源描述框架RDF来描述安全对象并刻画安全策略,通过对安全对象描述范围的扩展,使XML访问控制模型能够支持更加灵活的安全粒度需求。本文进一步将RDF用于对象之间语义关系的刻画,修改访问控制体系结构和控制策略,将推理控制与访问控制紧密结合在一起,进一步提高XML数据库的安全性。
1、基本概念
XML是描述半结构化数据的一种标记语言,XML文档由一系列嵌套的元素组成,每个元素由一对表示开始和结束的标记界定,标记可以任意。用(V, E, root)表示的XML文档的有向树型结构,其中V为结点集合,E为有向边集合,root表示文档树的唯一根结点。文档树中的结点分为元素结点和值结点,分别对应于文档中的元素和值。为了便于问题的讨论,我们只考虑元素结点。
RDF是一个W3C标准,它提供的信息表达通用框架用于描述Web中可以被URI标识的各种资源及其相互关系,进而为元数据提供一个非形式化的基础数据模型,实现信息交换中的语义无损性。通过RDF陈述实现资源及其关系的刻画。RDF陈述是由主体、谓词和客体构成的三元组。主体用于资源的识别;谓词用于区分资源的不同属性;客体为属性的值,可以是一个常量,也可以是另一个资源。RDF提供了称为RDF/XML的一种XML语法形式来实现RDF陈述的描述和交换。
2、XML-RDF对象关系模型
XML的主要缺陷在于它只刻画了结点之间的层次关系,无法描述实际存在的丰富而复杂的语义关系,而这些正是XML推理得以实施的前提和基础。因此,实现完善的推理控制必须首先能够如实的描述这些信息,而RDF恰好能够满足这一要求,利用其可以将文档中的结点封装成对象,进而以对象关系来刻画结点间的复杂关系。
RDF对象是经RDF陈述唯一封装的、由路径表达式确定的XML文档树结点,用对象唯一性标识OID区分。多个RDF对象组合在一起可以构成新的组合对象。结点、对象和组合对象三者之间形成层次关系:对象可以看作是结点的集合,组合对象则是对象的集合;每个结点只能封装在一个对象之中,而一个对象可以包含于不同的组合对象。任何复杂的组合对象最终都可以分解为单个对象。
将结点对象化之后,通过RDF就可以方便的描述结点之间各种复杂关系。图1给出的是结点之间常见的依赖关系的RDF表示,图2则描述了依赖关系类型中与推理有关的部分陈述,如属性from表示推理前提,而infertype表示精确推理或是模糊推理。
将对象的映射文件中主健字段元素的内置生成器指定为sequence,并与达梦数据库重的内置序列(sequence)关联,最后指定CLOB类型的属性为"string"类型,BLOB类型的属性为"binary"类型。
3、XML-RDF授权策略模型
实际应用中存在着聚合敏感问题,即聚合体作为整体是敏感的,而各组成部分是非敏感的。为了保证数据的可用性,授权策略模型需要支持这类整体与个体的分离授权,而通常面向结点的授权模型却无法实现。在结点被封装为RDF对象后,将结点的授权转换成对象的授权可以较容易解决这一问题。不失一般性,本模型只考虑构成授权的三个基本组成部分,即授权主体、客体和授权类型。更加复杂的授权模型通过简单的扩展同样可以刻画。
RDF授权是对XML授权中授权主体、授权类型以及授权对象的RDF陈述。其中授权类型分为正授权(+)和反授权(-),分别表示允许访问和拒绝访问。授权以对象为基本单位,对象与其组成间的授权关系满足约定:(1)简单对象封装的所有结点具有和对象自身相同的授权;(2)正授权组合对象的子对象同样具备正授权;(3)反授权组合对象的子对象可以有不同于整体的授权。
模型采用封闭式授权策略,如果主体没有被显式声明允许访问客体,则默认该主体不能访问客体,即用户访问文档中的任何结点必须先获得该结点所属简单对象的访问许可。由于结点唯一封装于一个简单对象之中,文档的任意结点子集必然有唯一的简单对象集与之对应,对该结点集的访问控制可以自然的转换为对相应对象集的访问控制。因此,以对象为单位的授权与以结点为单位的XML访问之间不存在矛盾,对象的透明性不会影响到授权的有效性。
所有授权的集合构成了XML数据库的安全策略,自主访问控制的灵活性使得安全策略中往往存在着授权冲突,表现在两个方面:同一客体上的授权冲突和不同客体之间的授权冲突。对于前者可以在安全策略中预先设定一系列优先规则,冲突发生时根据规则自动确定优先授权,并且在规则不变前提下结果是恒定的。而后者则是面向结点的授权模型无法解决的,如具有相同语义的结点间的不同授权。对于同一对象上的授权冲突,可以采用已有的优先规则(如反授权优先),在访问控制实施过程中加以解决。对于不同对象间的授权冲突,由于其发生在相互关联的对象(如等价对象)之间,是信息泄露的根源,可以通过有效的推理控制加以消除。
4、访问控制与推理控制
推理控制与访问控制是相辅相成的,访问控制通过授权保证用户访问的结点都获得了许可,避免未授权结点的直接泄露;推理控制以此为基础,进一步确保显式拒绝访问的结点不被推理。
推理控制可以在设计和查询两个阶段分别实施。如前所述,推理泄露的根源在于关联对象之间的授权冲突。在设计阶段可以简单的判定这类冲突的存在,并确定发生冲突的对象,进而通过调整授权加以消除。然而通过授权调整并不能解决所有问题,原因可能是基于信息最大可用性的考虑,也可能是法律的必须公开规定等。通过查询阶段的推理控制则可以有效解决,如组合对象整体是反授权的,而各子对象是正授权的,用户可以访问部分子对象,但当用户试图访问所有子对象时,推理控制会加以限制,避免作为整体的组合对象的泄露。这样在保证了安全的同时,提高了数据的可用性和访问控制的灵活性。