CN101847155A - 包括访问受保护的xml数据的xml数据库的管理系统 - Google Patents

包括访问受保护的xml数据的xml数据库的管理系统 Download PDF

Info

Publication number
CN101847155A
CN101847155A CN201010140810A CN201010140810A CN101847155A CN 101847155 A CN101847155 A CN 101847155A CN 201010140810 A CN201010140810 A CN 201010140810A CN 201010140810 A CN201010140810 A CN 201010140810A CN 101847155 A CN101847155 A CN 101847155A
Authority
CN
China
Prior art keywords
xml
xquery
xdbms
access rights
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201010140810A
Other languages
English (en)
Inventor
托尔斯特恩·飞尔比格
海科·韦伯
于尔根·哈巴斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Software AG
Original Assignee
Software AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Software AG filed Critical Software AG
Publication of CN101847155A publication Critical patent/CN101847155A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8365Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

公开了一种包括访问受保护的XML数据的XML数据库的管理系统。本发明涉及一种用于包括XML文档(30)的XML数据库(20)的XML数据库管理系统(XDBMS,10),每个XML文档(30)包括一个或多个结构化元素(35)并且遵循XML模式(40),其中至少一个所述结构化元素(35)被保护以防止用户(60)访问,所述XDBMS(10)包括:a.优化器(300),适于处理包括一个或多个XQuery表达式(55)的所述用户(60)的XQuery(50),并且还适于生成优化的XQuery执行计划(70);b.执行引擎(400),适于执行所述优化的XQuery执行计划(70),以从所述XML数据库(20)检索XML数据(80),其特征在于c.所述优化器(300)适于生成所述优化的XQuery执行计划(70),以使得所述优化器(300)忽略涉及被保护以防止所述用户(60)访问的一个或多个所述结构化元素(35)的所有XQuery表达式(55)。

Description

包括访问受保护的XML数据的XML数据库的管理系统
技术领域
本发明涉及一种用于包括访问受保护的XML数据的XML数据库的XML数据库管理系统。
背景技术
在像遵循面向服务的架构(SOA)的范型的现代应用中,可扩展标记语言(XML)格式的数据的重要性正在增加。为了高效地存储和检索这种XML数据,XML数据库管理系统(XDBMS)是现代IT基础结构中的中心组件。要将XDBMS理解为包括适于便利对于XML数据的访问的硬件和/或软件的系统,XML数据例如为XML数据库中存储的XML文档或者XML文档的各个XML元素。因为现代应用通常分布于多个硬件上,例如不同方所管理的服务器,其中应用的所分布部分经由网络(像LAN或因特网)来通信,安全-并且尤其是访问控制-成为关键性的问题。访问控制通常指防止高度机密的数据被用户未经授权地访问,其中用户可以是人类用户、另一个应用、web服务等。因此,经由访问控制保护XML数据在XDBMS中是重要的必然,以便确保数据的安全性和机密性。
XML数据通常为层次结构,即,XML数据片段中的任何XML元素本身可包括任何数量的另外的XML元素,从而形成树状结构。而且,XML数据可包括任何数量的XML属性、XML处理指令、XML注释或XML标准定义的任何其它种类的结构化元素。在下面,术语“结构化元素”可指XML数据的任何上述内容。XML的一般语法在万维网联盟的“Extensible Markup Language(XML)1.0(Fifth Edition)”(W3C推荐标准,2008年11月26日,URL http://www.w3.org/TR/xml/)中定义。而且,XML数据通常以具有相同结构但是不同内容的多个XML文档的形式存储在XML数据库中,其中每个XML文档表示XML数据库中的数据记录。XML文档也可称为XML实例。通常,XML文档的结构在XML模式中定义。XML模式语言是万维网联盟的“XML Schema Part 0:PrimerSecond Edition”(更多信息可见W3C推荐标准,2004年10月28日,URL http://www.w3.org/TR/xmlschema-0)中定义的XML方言。
考虑组织XML数据的特定方式,现代XDBMS,像申请人的TaminoXML服务器,遵循两种用于访问受保护的机密数据的主要方法。首先,基于结构的访问控制指保护XML数据中的某些结构,即避免未被授权的用户访问在包括机密数据的XML数据库中存储的XML文档的一个或多个元素。其次,基于实例的访问控制指避免未被授权的用户访问XML数据库中单个机密的XML文档,即数据记录。在下面的详细描述中进一步说明这两种方法。
除了访问控制,XDBMS的另一个关键特征是查询XML数据的接口,即用户检索XML数据库中存储的XML数据的方式。在XML的领域中,公布的XML查询语言(XQuery)已成为最通用的查询语言。XQuery在万维网联盟的“XQuery 1.0:An XML Query Language”(W3C标准,2007年1月23日,URL http://www.w3c.org/TR/xquery/)中说明。任何查询处理方法的一个特定目标是增加效率,即尽可能快地提供查询结果并且在计算能力方面进行最少的工作。
处理XQuery以便检索期望的数据通常遵循四个阶段,标记为图1中描绘的分析器、预处理器、优化器和优化器。这四个阶段通常由分别称为分析器、预处理器、优化器和优化器的数据库系统组件执行,它们可共同称作为查询处理器。如可见的,首先分析进入的XQuery,即提取进入XQuery的逻辑单元以便产生抽象语法树(AST)。然后预处理AST,这包括分类AST,即为AST中的每个表达式分配数据类型以便产生类型化的AST。然后优化类型化的AST以便产生查询执行计划。优化可包括静态优化,例如确定哪些索引可用于以更加有效的方式来评估XQuery并且由此重写类型化的AST。前述阶段还可包括XQuery的语义分析,共同称作为编译(compilation)。随后,执行产生的查询执行计划以检索最终的查询结果。
一般而言,从现有技术中已知各种方法用于增加总地涉及XML数据的上述查询处理的效率,例如根据申请人的EP 1 986 108A1。然而,当查询访问受保护的XML数据时,这些方法不太适合,因为访问控制在很大程度上增加了查询处理的复杂性并且因此常常导致XQuery的优化不足,导致整个XQuery处理的性能不可接受。
在不同的上下文中,即对于关系数据库而不是XML数据库,US2007/0276835A1公开了一种用于有效访问控制的技术。它公开了重写针对关系数据库的访问受保护的行或表中的数据的查询,以使得可更有效地处理重写的查询。然而,关系数据库下的数据模型遵循严格线性的存储范式,包括作为主要数据结构的具有行和列的单调的表。因为该存储模型根本上不同于上述层次XML数据模型,从关系数据库已知的优化方法不能用于XML数据库。
因此,本发明下面的技术问题是提供一种XML数据库管理系统,其便利了从XML数据库检索访问受保护的XML数据,这加强了访问受保护的XML数据的安全性并且同时显著地增加了查询处理的效率,由此至少部分地克服了现有技术的上述缺点。
发明内容
根据本发明的一个方面,该问题由用于包括XML文档的XML数据库的XML数据库管理系统(XDBMS)解决,每个XML文档包括一个或多个结构化元素并且遵循XML模式,其中至少一个结构化元素被保护以防止用户访问。在权利要求1的实施例中,XDBMS包括:
a.优化器,适于处理包括一个或多个XQuery表达式的用户的XQuery,并且还适于生成优化的XQuery执行计划;
b.执行引擎,适于执行优化的XQuery执行计划,以从XML数据库检索XML数据,其中
c.优化器适于生成优化的XQuery执行计划,以使得优化器忽略涉及被保护以防止用户访问的一个或多个结构化元素的所有XQuery表达式。
因此,实施例定义了显著地增加了从包括XML数据的数据库检索XML数据的效率的XDBMS,所述XDBMS遵循上面导言部分中描述的基于结构的访问控制。为此,XML数据库中存储的XML文档中的至少一个结构化元素被保护以防止用户访问。如上已经描述,该上下文中的结构化元素可以是XML元素、XML属性或XML标准定义的XML数据的任何其它结构化实体。用户发起的XQuery通常包括一个或多个XQuery表达式,其中每个XQuery表达式适于从XML数据库检索某些结构化元素。实例XQuery在下面的详细描述中描述。
XDBMS提供的优化器适于首先根据XQuery生成优化的XQuery执行计划。随后,XDBMS提供的执行引擎执行优化器生成的优化的XQuery执行计划。因此,执行引擎产生了包括用户期望依靠XQuery检索的XML数据的查询结果。迄今为止,根据本发明的XDBMS对于图1中描绘的XML查询处理一般地遵循通常方法。
然而,XDBMS的优化器特别适于相关于受保护以防止用户访问的XML数据增加XQuery处理的效率。为此,优化器适于以这样的方式生成优化的XQuery执行计划:由优化器忽略涉及被保护以防止用户访问的结构化元素的XQuery的所有XQuery表达式。该方法具有三个主要优点:
-首先,显著地降低了优化器的处理步骤的数量并且由此降低了处理时间,因为涉及访问受保护的结构化元素的所有XQuery表达式在优化器执行优化期间被忽略。换言之,优化器专注于仅优化涉及用户可访问的结构化元素的XQuery表达式,以使得相比于从现有技术已知的方法整个优化处理花费显著更少的时间。
-第二,因为优化器产生的XQuery执行计划已经是特别为要检索的XML数据优化的,相比于从现有技术已知的通用方法,执行引擎的随后处理也花费远远更少的时间和处理能力。这两个方面进一步由下面的详细描述中的示例来说明。
-第三,应当理解,XQuery处理的整体安全性一点也不受影响或者降低,使得本发明有利地组合了高安全标准的可信赖加强和非常有效的XQuery处理这两个目标。
根据本发明的另一个方面,XDBMS还适于确定用户所属的一个或多个组并且保护至少一个结构化元素免受所述一个或多个组的访问。因此,用户可属于一个或多个组,其中组本身可属于一个或多个另外的组,由此可建立复杂的组层次。组可以是内部组,即XDBMS内定义的组,或者外部组,即例如在外部用户储存库(如LDAP储存库)中定义的组。
确定用户(或组)属于的组,即解析组层次,优选地作为查询处理器的查询编译的第一步骤之一执行,以确保涉及检查的访问控制的效率。为此,查询处理器可首先确定用户直接属于的一个或多个组。对于所确定的组中的每一个,查询处理器然后可递归地确定这些组本身是否属于另外的组。
而且,因为组层次可以是任意复杂的,上述组解析的结果可被缓存,以便改善整体性能。为此,关于用户属于哪些组的信息可临时存储在用户/组缓存中。如果组层次需要在随后阶段被再次解析,可检查该用户/组缓存,而不是重新执行完整的组解析。为了使用户/组索引保持最新,可根据管理员设置的参数定期地执行组解析。
在另一个方面中,XDBMS还包括预处理器,该预处理器适于评估至少一个基于结构的访问权限,以确定要由优化器忽略的XQuery表达式,所述至少一个基于结构的访问权限保护用户和/或组对相应结构化元素的访问。在该上下文中评估访问权限意味着检查访问权限的内容,以使得可就访问权限准予或拒绝委托人(用户和/或组)进行某个动作得出结论。访问权限的思想在下面详细描述中更详细地说明。因此,对比于现有技术,评估基于结构的访问权限不在执行引擎的查询执行期间执行,而是已经由XDBMS提供的预处理器执行,即在XQuery处理过程中远远更早的时间。特别是,在优化器开始它的处理之前执行评估基于结构的访问权限,以使得优化器在XQuery的XML表达式的已经“过滤”的集合上执行它的优化任务。
而且,预处理器还可适于从XML模式中定义的类型信息得到至少一个基于结构的访问权限。这具有另外的优点,基于结构的访问权限可存储在中心位置,即在XML模式内。作为候选,访问权限也可以分布式方式存储并且可由XML模式引用。然而,在这两种情况下,基于结构的访问权限可仅定义一次并且然后应用到遵循XML模式的所有XML文档的所有各个XML元素,这在创建并且随后更新基于结构的访问权限时显著地减少了工作。因为基于结构的访问权限可从XML模式中定义的类型信息得到,评估基于结构的访问权限可已经在分类过程期间执行,即在生成类型化AST期间(参照图1)。
而且,至少一个基于结构的访问权限可附属到包括各个结构化元素的XML文档,并且执行引擎还可适于评估至少一个基于结构的访问权限。如在前面段落中说明的,在分类过程期间,为涉及某些结构化元素的XQuery表达式确定的类型信息通常由XML模式定义。然而,如将在下面的详细描述中进一步说明的,不可能静态地分类某些XQuery表达式,因为在XML模式中不存在对应的分类信息。代替地,类型信息在查询分类的时候可能是未知的。通常,在该情况下对应的结构化元素从结构化元素包括在其中的XML文档内部引用它们的类型信息,而不是从XML模式。因此,涉及这些结构化元素的基于结构的访问权限可附属到XML文档本身。执行引擎然后可在查询执行期间从XML数据库检索单独的XML文档时,评估这些基于结构的访问权限。
在该情况下,执行引擎还可适于扫描结构索引,例如从申请人的US2005/0131895A1已知的。结构索引通常用于存储聚集的结构信息,即它可用于在任何给定时间确定哪些结构化元素当前存在于XDBMS中存储的XML文档内,和哪些结构化元素未出现在XDBMS中当前存储的XML文档内。因此,查阅结构索引在不能静态地分类某些XQuery表达式时尤其有利,如上所述。
根据本发明的又另一个方面,执行引擎还适于评估附属到至少一个XML文档的一个或多个基于实例的访问权限,基于实例的访问权限保护用户和/或组对相应XML文档的访问。因此,基于实例的访问权限不涉及单个结构元素(像基于结构的访问权限),而是完整的XML文档,因此遵循上面导言部分中描述的基于实例的访问控制方法。用于基于实例的访问权限的评估的示例可在下面的详细描述中找到。
而且,XDBMS可适于根据基于结构的和/或基于实例的访问权限生成访问权限索引,并且执行引擎可适于扫描访问权限索引。因此,由于使用了访问权限索引,评估基于结构和/或基于实例的访问控制的效率显著地增加。如本领域技术人员将会理解的,相比于单独地查阅各个基于结构和/或基于实例的访问权限,扫描索引需要更少的处理时间,并且因此是相当更加高效的。
访问权限索引可包括一个或多个索引条目,所述索引条目各自包括到用户和/或组的引用、到XML文档的引用、访问权限和/或标识符。而且,执行引擎可适于根据索引条目的标识符定义的顺序来评估访问权限索引中与用户和/或组匹配的第一索引条目。访问权限索引及其有利用途的示例在下面的详细描述中示出。
通常,基于结构的和/或基于实例的访问权限可由访问控制列表(ACL)定义。
本发明还涉及一种包括用于实现任意上面给出的XML数据库管理系统的指令的计算机程序。
而且,本发明涉及一种方法,用于处理用户的XQuery以使用任意上面给出的XML数据库管理系统从XML数据库检索XML数据。最后,提供了一种包括用于实现上面给出的方法的指令的计算机程序。
附图说明
在随后的详细描述中,参考下面的附图进一步描述本发明的当前优选实施例:
图1:根据现有技术的用于XQuery处理的控制流程的示意性概览;
图2:根据本发明的XML数据库管理系统的实施例的示意性概览;
图3:根据本发明实施例的基于结构的访问控制的示意性概览;
图4:根据本发明实施例的基于实例的访问控制的示意性概览;
图5a:根据本发明实施例的示例XML模式;
图5b:遵循图5a的XML模式的两个示例XML文档;
图6a、b:根据本发明实施例的用于基于结构的访问控制的示例性基于结构的访问权限;
图7a:根据本发明实施例的用于基于实例的访问控制的示例性基于实例的访问权限;
图7b:根据本发明实施例的示例组定义;
图8:根据本发明实施例的示例XQuery执行计划的示意性概览;和
图9:根据本发明实施例的示例访问权限索引的示意性概览。
具体实施方式
如在导言部分中已经描述的,查询访问控制受保护的XML数据是现代XML数据库管理系统(XDBMS)中的一个重要特征,以支持遵循面向服务的架构(SOA)的范型的应用。本发明提供了XDBMS 10(参照图2),其适于对访问控制受保护的XML数据进行有效的XQuery 50处理,所述XML数据例如XML数据库20中存储的XML文档30或XML文档30的各个XML元素35,所述XDBMS 10便利了基于结构的和基于实例的访问控制。遵循用于XQuery处理的通用模型,可在XQuery 50的语义分析期间评估基于结构的访问控制。对于基于实例的访问控制,XML数据库20中存储的XML文档30可用访问控制列表(ACL)批注。为了在查询执行期间评估ACL,本发明的XDBMS 10生成扩展的XQuery执行计划70。扩展的XQuery执行计划70根据提供涉及访问控制的运算符的扩展XQuery处理代数来声明。本发明由此通过应用代数查询优化便利了扩展XQuery执行计划70的优化。而且,本发明提供了ACL索引的思想,用于高效地访问ACL信息。
XML数据库中的访问控制
XML数据库中的XML数据的保护显著地不同于从关系数据库系统已知的安全思想,因为XML数据模型,即组织XML数据的方式,完全不同于关系数据模型(参照上面的导言部分)。在像申请人的Tamino XML服务器这样的产品中,可使用基于结构以及基于实例的访问控制,这将在下面更详细地描述。
基于结构的访问控制意味着通过为某些结构化元素,例如XML元素、XML属性或由XML标准定义的XML数据的任何其它结构化实体定义访问权限来保护XML数据。结构化元素通常由XML模式定义。在本发明的XDBMS 10中,一个或多个XML模式40以XML模式语言来指定,在上面的导言部分中提及。图5a描绘了定义用于在XML数据库20中存储涉及雇员的数据(XML文档30)的employee XML元素35的结构的示例XML模式40。如在图5a中可见,employee XML元素35定义为包括子XML元素35date-of-birth、name、salary、和manager。而且,date-of-birth XML元素35定义为类型xs:date,并且salary和manager XML元素35定义为类型xs:integer,如XML模式40的相应类型信息45所表示的。name XML元素35本身由两个子XML元素35定义,即xs:string类型的last XML元素35和firrst XML元素35,这突出了XML的层次结构。而且,图5a中的示例XML模式40定义了employee XML元素35必须包括需要的类型为xs:integer的XML属性number。应当理解,根据本发明的XDBMS 10可包括多于一个的XML模式40,用于针对不同目的来定义不同类型的XML文档。而且,定义employee元素的结构的示例XML模式仅仅是广泛种类的示例之一。
图5b示出了表示上面给出的XML模式40的实例的两个示例XML文档30。如可见的,遵循XML模式40的XML文档30具有由XML模式40定义的精确结构,其中XML文档30的XML元素35用必须遵循XML模式40中定义的类型的具体值来填充。
在图5a和5b的示例中,XML文档30的某些XML元素35,例如name或者date-of-birth,根据安全性被设想为不关键的,并且因此应当对于XDBMS 10的任何用户是可访问的。相反,访问每个XML文档30的XML元素salary 35必须限制到仅仅有限集合的用户,因为salary XML元素35存储机密信息(雇员的年薪),并且应当在任何情况下对于大部分XDBMS的用户保持为秘密。应当理解,使用基于结构的访问控制,不仅可保护各个XML元素35,还可保护XML数据库容器,例如集合,以及某些数据检索功能的执行。而且,如上面已经描述的,可保护XML数据的任何结构化元素,例如XML属性、XML注释等。
为了指定对XML文档30的XML元素35的访问级别,可使用访问控制列表(ACL),其示例在图6a中示出。图6a的示例ACL对持有employee元素的集合hr,例如XML文档30,定义了基于结构的访问权限90。在该上下文中的ACL name“default(默认)”表示各个ACL应当应用于所有可能的用户,除非另外声明。为此,图6a中的示例ACL对于employee XML元素35准予read访问,而拒绝对salary XML元素35的任何访问,因为公司想要将个人薪水保持为秘密。如示例所示,ACL如在申请人的Tamino XML服务器中定义的那样,包括任何数量的访问权限/访问控制元素(ACE)。每个ACE 90由定义目标XML元素35的可选“subject(主题)”和“privilege(权限)”的“grant(准予)”或“deny(拒绝)”组成,所述“权限”例如为“读”、“更新”、“删除”、“全部”或者任何其它适合的权限。为了更有效率,需要将ACL分配到单个用户和/或组(group),其中组可引用一个或多个用户或另外的组,建立任意复杂的组层次(参见上面)。如已经提及的,图6a的示例ACL隐含地分配到“默认”组,该组包括所有可能的用户,即XDBMS 10的所有用户根据图6a的给定ACL继承访问权限90。为了允许用户访问salaryXML元素35,用户需要属于特别被授权的组,例如图7b中定义的示例hrgroup组65。如可见的,组65列出组的用户(在示例中为用户“A”和用户“B”)并且引用hracl ACL,该hracl ACL定义了许可给hrgroup组65的访问权限90。对应的hracl ACL在图6b中描绘。如在图6b中可见到的,hrgroup组65的成员被准予对employee XML元素35的全部访问权限。
图6b中定义的访问权限90突出了XML的层次结构所特有的方面。因为允许属于hrgroup组65的用户访问employee XML元素35,也允许这些用户访问employee XML元素35的所有子XML元素35,例如salaryXML元素35。因此,XML元素上定义的访问权限可根据XML的层次结构由全部子XML元素“继承”。
如在图3中可见到的,为了定义基于结构的访问控制,基于结构的访问权限90优先地从XML模式40的类型信息45引用。
而且,ACL还可用于根据基于实例的访问控制保护XML数据库中存储的实例,即单个XML文档30。为此,XML数据库20中存储的XML文档30直接用包括一个或多个基于实例的访问权限95的一个或多个ACL来批注,以定义哪个用户可对XML文档30执行的操作(参照图4)。包括两个基于实例的访问权限(ACE)95的图7a中描绘的示例ACL对于hrgroup的成员准予完全访问。所有其它用户对于受保护文档不能进行任何访问(参照图7a中的“principal”元素以及“grant”和“deny”元素)。如可见到的,图7a的基于实例的访问权限95不引用单个结构化元素35(如相比于上述的基于结构的访问权限90),而是图7a中描绘的整个ACL从XML文档30来引用,以便由该ACL保护。如图7a进一步示出的,ACL不需要是“无冲突”的。ACL可包括允许某种操作的ACE90、95以及拒绝该操作的ACE 90、95。该“冲突”经由给定ACL中的ACE 90、95的顺序来解决,即当确定适合的ACE 90、95时,选择匹配给定用户的第一ACE。
用XQuery查询受保护的XML数据
因为XQuery是用于查询XML数据的最通用的语言,XQuery处理器或XDBMS 10必须分别实施上面给出的授权方法。因此,当执行由用户60发起的XQuery 50时(参照图2),需要评估用户60的授权。必须不能由进行查询的用户60访问的XML数据必须对于用户60来说变为不可见。参考上面给出的示例,对于以下XQuery 50,必须不允许不属于hrgroup组65的用户60检索任何结果:
For$x in collection(“hr”)/employee
Let$y:=$x/salary
Where$y>100000
Return$x
在示例中,上面的XQuery 50确定具有给定数量,即100000以上的薪水的所有雇员。XQuery 50的第一行在XML数据库20的集合hr中存储的所有XML文档30上迭代。它通过应用path XML表达式55来提取所包括的employee XML元素35并且将所提取的XML元素35绑定到变量$x。第二行将变量$y绑定到已绑定到变量$x的employee XML元素35中包括的salary XML元素35。For子句和let子句都产生用于每个employee XML元素35的元组。在示例中,生成的元组,也称为元组列表,包括保存用于变量$x和$y的绑定的两个条目。随后元组列表由示例XQuery 50的第三行中示出的where子句过滤。仅仅具有绑定到包括的值大于100000的$y的元素的那些元组通过过滤器(where子句)。最后,在上述步骤之后,XQuery 50将仍然绑定到变量$x的所有元组返回(参见XQuery 50的第四行)。通常,上述示例中的每个path表达式,例如hr/employee,值(例如$y>100000)与变量的每次比较,和每次向变量分配值(例如$y:=$x/salary),构成XQuery表达式55。
如果根据上述图6a和6b的ACL,授权是基于结构的,salary XML元素35不能由用户60读取。因此,变量$y被分配为空白序列。根据XQuery规范,比较空白序列产生布尔值false。
如果根据上述图7a的ACL,授权是基于实例的,所有的XML文档30对于不是hrgroup组65的成员的用户60是不可见的。
处理XQuery
如技术人员将会理解的,评估访问控制很大地增加了查询处理的复杂性并且可导致显著的性能下降。为了解决访问控制定义导致的性能问题,需要在XQuery处理期间优化访问控制的评估。本发明提供的方法基于图1中示意性示出并且在下面说明的通用XQuery处理模型。
在XQuery处理期间的一个步骤是分类XQuery 50的XQuery表达式55。因为XQuery是强类型化的语言,每个XQuery表达式55和子XQuery表达式55被分配一种类型,即XQuery表达式55产生的结果的某种数据类型。为了确定从XML数据库20中存储的XML文档30提取XML数据的path XML表达式55的类型,检查XML模式40的定义,即基于XML模式40中存储的类型信息45确定path XML表达式55的类型(参照图5a和上面的说明)。
由于XQuery表达式55的潜在复杂性,不是对于每种XQuery表达式55都可静态地确定相关XML元素35的类型,即在编译XQuery 50的期间。这些情况可通过动态类型检查来覆盖,其中XQuery表达式55涉及的XML元素35直接引用它们的类型。
在像申请人的Tamino XML服务器这样的XDBMS 10中(参照图2),查询编译的结果是指定可如何从XML数据库20获得查询结果80的XQuery执行计划70。XQuery执行计划70包括XDBMS 10的查询执行引擎400提供的操作。这些操作可包括数据库访问操作、过滤器操作以及XQuery特定的操作。
在XQuery编译期间由优化器300执行的优化过程应该找到最佳的XQuery执行计划70。为此,通常已知的方法是将给定的XQuery 50转换为代数表达式(图1中的“抽象语法树(AST)”和/或“类型化的AST”)并且经由重写或变换代数表达式来执行优化,这最终得到优化的XQuery执行计划70。该方法也称作为代数查询处理。
代数查询处理基于反映基础的执行引擎400的能力的运算符集合。运算符消费和生产排序的元组列表。每个元组条目包括例如已根据索引读取、从XML文档30提取或者通过应用XQuery表达式55确定的一部分XML数据。这些元组条目称为变量绑定。运算符交换的元组列表称为表结构。
图8示出了作为上面给出的示例XQuery 50的变换结果的示例代数查询表达式。图8描绘了“运算符树”,即代数表达式的运算符710、720、730、740表示为节点(参照图8中的框)。每个运算符710、720、730、740消费它的输入运算符710、720、730、740的结果并且产生可由任何其它运算符710、720、730、740消费的结果。运算符树的定向边(参照图8中的箭头)可视化了运算符710、720、730、740之间的数据流。不消费任何输入的运算符,例如710,称作为扫描运算符。扫描运算符负责从磁盘(或者XML数据库30的任何其它存储装置)读取XML文档30或者访问已在XML文档30上定义用于高效检索的索引。
图8的示例运算符树包括DoctypeScan运算符710。在申请人的Tamino中,数据库可包括一个或多个集合,其中集合可包括一个或多个文档类型。一个文档类型可将各自包括相同根XML元素的一个或多个XML文档成组(例如文档类型employee中的每个XML文档包括XML元素employee作为最顶层(根)XML元素)。DoctypeScan运算符710扫描属于文档类型employee的所有XML元素30并且将它们绑定到变量$d。换言之,DoctypeScan运算符710为文档类型employee中的每个XML文档30产生一个元组,其中每个元组包括保存完整XML文档30的单个条目。随后的Path运算符720从所扫描的XML文档30中提取employee XML元素35并且将它们绑定到变量$x。通常,Path运算符720、730的注脚(图8中在“[”和“]”之间的运算符的部分)包括输出变量和受限制的XQuerypath表达式55。Path运算符720、730评估用于输入表结构的每个元组的path表达式55并且将输出变量绑定到产生的XML片段,即path表达式55选择的XML数据的部分。第二Path运算符730从每个employee XML元素35提取salary XML元素35。DoctypeScan 710和两个Path运算符720、730的结果是具有变量$d、$x和$y的表结构。该表结构随后由在每个输入元组上应用它的脚注的过滤器谓词(在图8中为“$y>100000”)的Select运算符740来过滤。在图8的示例中,仅仅具有值大于100000的绑定到salary XML元素55的$y变量的那些元组通过Select运算符740。通常,Select运算符740的过滤器谓词可以是任意复杂的布尔XQuery表达式。
转换后的查询(即上述和图8中示出的代数查询表达式)是用于实际查询优化的输入。运算符树,例如图8中描绘的运算符树给出了代数查询表达式的描述性显现。然而,为了描述随后的代数变换,将使用更简明的文本表示。应当理解,代数查询表达式的符号、运算符树和以下的文本表示是等同的。对于上面给出的代数查询表达式,文本表示如下:
Select[$y>100000](
  Path[$y:$b/salary](
    Path[$x:$d/employee](
      DoctypeScan[$d;“employee”])))
用于改善查询处理的效率的通常已知的方法是索引。索引帮助减少需要从XML数据库30的存储装置读取的XML数据的数量以便评估查询。应当理解,从存储装置,例如硬盘读取数据是极度费时的并且因此应当保持为最小量。通过代数重写,索引访问运算符可引入代数查询表达式。假设索引在salary XML元素35上,上述的示例实施例50可通过引入相应的索引访问运算符来优化。产生的重写的代数表达式内容如下:
Path[$x:$d/employee](
  IdxScan[$d;/employee/salary;>;100000])
因此,IdxScan检索包括薪水大于100000的雇员的XML文档30。这尤其有利,因为仅必须从XML数据库20的存储装置读取满足给出的搜索谓词的那些XML文档30。在可能有几百万XML文档30的巨型XML数据库的上下文中,例如上述的索引导致巨大的性能改善。
基于结构的访问控制的评估
在下面,基于结构的访问控制的评估将描述为由图2中描绘的XDBMS 10有利地执行。
如已经在上面描述的,通过用ACL中包括的访问权限90来批注XML模式40,便利了基于结构的访问控制。由于这点,可在分类XDBMS 10的预处理器200执行的XQuery 50的XQuery表达式55期间,有利地执行基于结构的访问控制的评估。在类型分析期间,从XML模式40检索类型信息45并且用来自XML模式40的类型信息45批注每个XQuery表达式55。因为用ACL批注XML模式40,分配到XQuery表达式55的类型信息45引用需要被评估的ACL。如果ACL拒绝声明XQuery 50的用户60的访问,相应的XQuery表达式55呈现为返回空白序列。因为通常可在语义分析阶段期间静态地执行大部分分类,也可在那时执行大部分基于结构的访问控制的评估,即由XDBMS 10的预处理器200执行。评估基于结构的访问控制是执行由XDBMS 10的优化器300执行的随后XQuery优化的前提。当优化器300执行XQuery 50的优化时,查询优化器300不考虑全部受保护的XQuery表达式55,即涉及受保护以防止用户60访问的XML元素35的所有XQuery表达式55。
如上面已经描述的,对于不能静态分类的那些XQuery表达式55,在运行时期间执行访问控制的评估,即由XDBMS 10的执行引擎400执行。因为在该情况下,与从XML模式40引用形成对照,直接从XML文档30引用类型信息,可根据来自于XML文档30的引用确定各个ACL。为了减少需要动态访问控制检查的情况的数量,可使用结构索引。结构索引可保存关于当前XML数据库中存储的XML数据(即XML文档)的结构的信息,即关于结构化元素的信息,并且可用于分类XQuery。为此,结构索引可提供XML数据库中哪些结构化元素当前可用并且哪些不可用的信息,以使得可更具体地确定某些XQuery表达式的类型。
基于实例的访问控制的评估
因为在基于实例的访问控制中,从XML文档30本身引用ACL,可通过审查XML数据库20中存储的实例,即XML文档30,来实施基于实例的访问控制,这优选地在查询执行期间完成,即由XDBMS 10的执行引擎400完成。为此,优化器300生成的查询执行计划70根据本发明而被扩展。因此,提供了返回布尔值的并且适于用作为过滤器谓词的checkPrivelege()函数。基于上述的示例XQuery,扩展后的XQuery执行计划70如下:
Path[$x:$d/employee](
  Select[checkPrivilege($d,user,read)](
    IdxScan[$d;/employee/salary;>;100000]))
上面列表的第二行中的另外的Select运算符使用checkPrivilege()函数来根据用户60的授权级别过滤XML文档30。如果索引扫描IdxScan(参照上面列表中的第三行)返回少量的XML文档30,上面的XQuery执行计划70具有高性能。
另一方面,在XML数据库20主要包含高薪水的雇员并且声明XQuery 50的用户60仅可读取有限数量的XML文档30的情况下,甚至可通过应用不同的XQuery执行计划70来进一步改善性能。根据该不同的XQuery执行计划70,首先经由相应的访问权限索引97,即如图9中示出的ACL索引,来检索可由用户60访问的XML文档30。
图9中示出的ACL索引97由XDBMS 10生成并且用于经由用户60的给定用户ID以及经由访问操作(例如“读取”、“更新”等)来检索XML文档30。ACL索引97的索引条目970表示ACE 90、95。每个索引条目970包括principal 970(对用户和/或组的引用)和具有表示准予或拒绝权限的标志的privilege 973。与为基于实例的访问控制定义的包括一个或多个访问权限/ACE 95的ACL形成对照,ACL索引97的索引条目970包括单个访问权限。对于具有多个访问权限的ACL,生成多个索引条目970。图9示出了根据图7a的ACL生成的ACL索引97。假设图7a的ACL引用具有标识符“#1”的XML文档30并且因此ACL索引97在索引列“文档(主题)”972中包括“#1”。
在图9的示例中,除了用户或组标识符971之外,每个ACL索引条目970包括XML文档标识符972和权限97,以及标识ACL内所表示的ACE的ACE标识符(ACE ID)974。在ACE ID上定义对应于ACL中ACE顺序的顺序,根据所述ACL中ACE顺序生成ACL索引97。因此,ACE ID允许重建初始ACL内ACE的顺序,以便解决“冲突”的ACE。如上面已经说明的,ACE不必是“无冲突”的,即一个ACE可允许某种操作并且另一个ACE可拒绝该操作。在该情况下,ACE ID用于按ACE ID定义的顺序检查单个ACE并且用于根据索引条目970确定第一匹配的ACE,以便解决冲突。
使用ACL索引97的示例XQuery执行计划70描绘为如下:
Path[$x:$d/employee](
  SemiJoin(
    AclIdxScan[$d;userId,read],
     IdxScan[$d;/employee/salary;>;100000]))
因此,AclIdxScan(上面列表中的第三行)确定可由给定用户60访问的XML文档30。为此,AClIdxScan读取匹配于给定用户ID(参数userID)和给定访问操作(上面列表中为read)的所有ACE,并且检查第一匹配的ACE。基于该ACE,AclIndexScan决定引用的XML文档30是否属于结果集,即是否用户60被授权检索XML文档30。对于每个结果XML文档30,随后的SemiJoin(上面列表中的第二行)检查XML文档30是否也属于可经由IdxScan的搜索谓词(上面列表中的第四行)检索的文档集。
ACL索引97还可用于优化涉及Join运算和聚集的复杂XQuery。应当执行XQuery执行计划70的上面给出的变量中的哪些的决定优选地由XDBMS 10的优化器300执行。为此,优化器300可使用对XML数据库20中的数据(即XML文档30)进行收集的统计数字,以及对XML数据库20中存储的ACL的统计数字。

Claims (14)

1.一种用于包括XML文档(30)的XML数据库(20)的XML数据库管理系统(XDBMS,10),每个XML文档(30)包括一个或多个结构化元素(35)并且遵循XML模式(40),其中至少一个所述结构化元素(35)被保护以防止用户(60)访问,所述XDBMS(10)包括:
a.优化器(300),适于处理包括一个或多个XQuery表达式(55)的所述用户(60)的XQuery(50),并且还适于生成优化的XQuery执行计划(70);
b.执行引擎(400),适于执行所述优化的XQuery执行计划(70),以从所述XML数据库(20)检索XML数据(80),其特征在于
c.所述优化器(300)适于生成所述优化的XQuery执行计划(70),以使得所述优化器(300)忽略涉及被保护以防止所述用户(60)访问的一个或多个所述结构化元素(35)的所有XQuery表达式(55)。
2.根据权利要求1所述的XDBMS(10),还适于确定所述用户(60)所属的一个或多个组(65)并且其中保护至少一个所述结构化元素(35)免受所述一个或多个组(65)的访问。
3.根据权利要求1或2所述的XDBMS(10),还包括预处理器(200),该预处理器适于评估至少一个基于结构的访问权限(90),以确定要由所述优化器(300)忽略的所述XQuery表达式(55),所述至少一个基于结构的访问权限(90)保护所述用户(60)和/或所述组(65)对所述相应结构化元素(35)的访问。
4.根据前述权利要求所述的XDBMS(10),其中所述预处理器(200)还适于从所述XML模式(40)中定义的类型信息(45)得到所述至少一个基于结构的访问权限(90)。
5.根据权利要求3或4所述的XDBMS(10),其中至少一个所述基于结构的访问权限(90)附属到包括所述各个结构化元素(35)的所述XML文档(30),并且其中所述执行引擎(400)还适于评估所述至少一个基于结构的访问权限(90)。
6.根据前述权利要求所述的XDBMS(10),其中所述执行引擎(400)还适于扫描结构索引。
7.根据前述任一权利要求所述的XDBMS(10),其中所述执行引擎(400)还适于评估附属到至少一个所述XML文档(30)的一个或多个基于实例的访问权限(95),所述基于实例的访问权限(95)保护所述用户(60)和/或所述组(65)对所述相应XML文档(30)的访问。
8.根据前述任一权利要求所述的XDBMS(10),还适于根据所述基于结构的(90)和/或基于实例的访问权限(95)生成访问权限索引(97),并且其中所述执行引擎(400)适于扫描所述访问权限索引(97)。
9.根据前述权利要求所述的XDBMS(10),其中所述访问权限索引(97)包括一个或多个索引条目(970),所述索引条目(970)各自包括到用户和/或组的引用(971)、到XML文档的引用(972)、访问权限(973)和/或标识符(974)。
10.根据前述权利要求所述的XDBMS(10),其中所述执行引擎适于根据所述索引条目(970)的标识符(974)定义的顺序来评估所述访问权限索引(97)中与所述用户(60)和/或所述组(65)匹配的第一索引条目(970)。
11.根据前述任一权利要求所述的XDBMS(10),其中所述基于结构的(90)和/或基于实例的访问权限(95)由访问控制列表(ACL)定义。
12.一种包括用于实现根据前述任一权利要求所述的XML数据库管理系统(XDBMS,10)的指令的计算机程序。
13.一种方法,用于处理用户(60)的XQuery(50)以使用根据前述权利要求1-11中任何一个所述的XML数据库管理系统(XDBMS,10)从XML数据库(20)检索XML数据(80)。
14.一种包括用于实现根据前述权利要求所述的方法的指令的计算机程序。
CN201010140810A 2009-03-24 2010-03-24 包括访问受保护的xml数据的xml数据库的管理系统 Pending CN101847155A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP09156076.3 2009-03-24
EP09156076A EP2234025A1 (en) 2009-03-24 2009-03-24 XML database management system for an XML database comprising access-protected XML data

Publications (1)

Publication Number Publication Date
CN101847155A true CN101847155A (zh) 2010-09-29

Family

ID=40801770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010140810A Pending CN101847155A (zh) 2009-03-24 2010-03-24 包括访问受保护的xml数据的xml数据库的管理系统

Country Status (3)

Country Link
US (1) US8117191B2 (zh)
EP (1) EP2234025A1 (zh)
CN (1) CN101847155A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107515879A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于文档检索的方法和电子设备
CN110837647A (zh) * 2018-08-16 2020-02-25 迈普通信技术股份有限公司 管理访问控制列表的方法及装置
CN110928875A (zh) * 2019-10-16 2020-03-27 中科驭数(北京)科技有限公司 关系型数据库管理系统中的元组排序方法、查询方法及装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908286B2 (en) * 2004-12-08 2011-03-15 Oracle International Corporation Techniques for providing XQuery access using web services
EP2031520A1 (en) * 2007-09-03 2009-03-04 Software Ag Method and database system for pre-processing an XQuery
US9767268B2 (en) * 2011-04-20 2017-09-19 International Business Machines Corporation Optimizing a compiled access control table in a content management system
CN103218378A (zh) * 2012-01-19 2013-07-24 阿尔卡特朗讯 基于ldap进行基于复杂逻辑的数据库操作的方法
US8732201B2 (en) * 2012-02-28 2014-05-20 Software Ag Systems and/or methods for automatically deriving web service permissions based on XML structure permissions
US11074231B1 (en) * 2013-03-15 2021-07-27 Informatica Llc Validating modifications to mapping statements for processing hierarchical data structures
US20150248461A1 (en) * 2014-02-28 2015-09-03 Alcatel Lucent Streaming query deployment optimization
US9424311B2 (en) * 2014-03-20 2016-08-23 International Business Machines Corporation Query routing based on complexity class determination
US11895138B1 (en) * 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
CN104850625B (zh) * 2015-05-20 2018-05-04 浪潮电子信息产业股份有限公司 一种数据库安全防护方法及装置
KR102120519B1 (ko) * 2016-06-09 2020-06-09 한국조선해양 주식회사 선박 데이터 통합 시스템 및 이를 포함하는 선박
US11048815B2 (en) * 2018-08-06 2021-06-29 Snowflake Inc. Secure data sharing in a multi-tenant database system
CN111522816B (zh) * 2020-04-16 2021-04-30 云和恩墨(北京)信息技术有限公司 基于数据库引擎的数据处理方法、装置、终端及介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3982623B2 (ja) * 2003-03-25 2007-09-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、データベース検索システム及びプログラム
US8775468B2 (en) * 2003-08-29 2014-07-08 International Business Machines Corporation Method and system for providing path-level access control for structured documents stored in a database
EP1544749B1 (en) 2003-12-16 2018-11-14 Software AG Method for searching a database and database
US7930277B2 (en) * 2004-04-21 2011-04-19 Oracle International Corporation Cost-based optimizer for an XML data repository within a database
US7433870B2 (en) * 2004-12-27 2008-10-07 Lucent Technologies Inc. Method and apparatus for secure processing of XML-based documents
US10318752B2 (en) 2006-05-26 2019-06-11 Oracle International Corporation Techniques for efficient access control in a database system
US7913241B2 (en) * 2006-06-13 2011-03-22 Oracle International Corporation Techniques of optimizing XQuery functions using actual argument type information
US8117182B2 (en) * 2007-04-23 2012-02-14 International Business Machines Corporation Apparatus and method for optimizing descendant path evaluation in xpath/xquery
DE602007002474D1 (de) 2007-04-27 2009-10-29 Software Ag Verfahren und Datenbanksystem zur Durchführung einer XML-Datenbankabfrage
US7913172B2 (en) * 2007-09-01 2011-03-22 International Business Machines Corporation Fine-grained, label-based, XML access control model
US7865502B2 (en) * 2008-04-10 2011-01-04 International Business Machines Corporation Optimization of extensible markup language path language (XPATH) expressions in a database management system configured to accept extensible markup language (XML) queries

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107515879A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于文档检索的方法和电子设备
US10943023B2 (en) 2016-06-16 2021-03-09 EMC IP Holding Company LLC Method for filtering documents and electronic device
CN110837647A (zh) * 2018-08-16 2020-02-25 迈普通信技术股份有限公司 管理访问控制列表的方法及装置
CN110928875A (zh) * 2019-10-16 2020-03-27 中科驭数(北京)科技有限公司 关系型数据库管理系统中的元组排序方法、查询方法及装置

Also Published As

Publication number Publication date
EP2234025A1 (en) 2010-09-29
US8117191B2 (en) 2012-02-14
US20100250519A1 (en) 2010-09-30

Similar Documents

Publication Publication Date Title
CN101847155A (zh) 包括访问受保护的xml数据的xml数据库的管理系统
US10108813B2 (en) Query conditions-based security
EP3299989B1 (en) Database access-control policy enforcement using reverse queries
US7299171B2 (en) Method and system for processing grammar-based legality expressions
US9075843B2 (en) Authorization check of database query through matching of access rule to access path in application systems
US8166070B2 (en) Techniques for sharing persistently stored query results between multiple users
US9626452B2 (en) Fine-grained database access-control policy enforcement using reverse queries
WO2020081240A1 (en) Multi-tenant authorization
US20070055658A1 (en) Efficient access control enforcement in a content management environment
CA2427209A1 (en) Optimization of queries on views defined by conditional expressions having mutually exclusive conditions
US20040068661A1 (en) Intelligent use of user data to pre-emptively prevent execution of a query violating access controls
US20080040317A1 (en) Decomposed query conditions
Damiani et al. A general approach to securely querying XML
CN101794312A (zh) 基于安全视图的xml访问控制方法
Pernul Canonical security modeling for federated databases
Kudo Access-condition-table-driven access control for XML databases
Patel et al. An efficient access control model for schema-based relational storage of XML documents
US20230306030A1 (en) Row-level permissioning based on evaluated policies
Lim et al. A policy-based approach for assuring data integrity in DBMSs
Peter et al. Data Warehousing Search Engine
Kudo et al. Access control policy models for XML
Nikodem ADVANCED DATABASES
Weggenmann Final Tools for the Governance Framework

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20100929