CN101794312A - 基于安全视图的xml访问控制方法 - Google Patents
基于安全视图的xml访问控制方法 Download PDFInfo
- Publication number
- CN101794312A CN101794312A CN 201010119164 CN201010119164A CN101794312A CN 101794312 A CN101794312 A CN 101794312A CN 201010119164 CN201010119164 CN 201010119164 CN 201010119164 A CN201010119164 A CN 201010119164A CN 101794312 A CN101794312 A CN 101794312A
- Authority
- CN
- China
- Prior art keywords
- user
- authority
- node
- xml
- role
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种计算机网络安全领域的基于安全视图的XML文档访问控制方法,包括以下步骤:定义角色并授权;为每个用户分配角色,进行基于角色的访问控制;将XML文档的Schema模式处理生成Schema安全视图;用户发出访问操作请求时,Schema安全视图的XPath指定权限对象,执行相应的读取读取XML文档或为XML文档添加内容或为XML文档更新内容或为XML文档删除内容。本发明通过生成Schema安全视图,达到基于安全视图的XML文档访问控制,有效的减少了待处理的对象数目,提高了效率;采用RBAC访问控制策略对Schema文档进行扩展,提出了细粒度授权文档的形式,实现了基于角色的访问控制,既保证了XML文档中数据信息的安全性,也不会改变用户对XML文档的使用方式。
Description
技术领域
本发明涉及的是一种计算机网络安全技术领域的方法,具体是一种基于安全视图的XML访问控制方法。
背景技术
作为一种标记语言,XML将内容和显示格式分离开来,并且描述了文档中的文本结构。不同于HTML,在XML中用户可以定义自己的标记语言,因此XML更具有可扩展性,在网络中受到广泛应用,已经成为网上数据和文档传输的标准。安全是互联网业务发展的前提,于是XML文档的安全成为研究者和开发者关心的问题。其中,信息的保密性和完整性是信息安全的重要方面,为了保证XML文档中的信息不受到非授权用户的查看和修改,必须控制用户对XML文档的访问。
访问控制策略包括:自主访问控制(DAC)、强制访问控制(MAC)以及基于角色的访问控制(RBAC)策略。RBAC是近年来安全访问控制领域的热点。它在用户和权限之间引入角色这个中介。安全管理人员根据需要定义各种角色,并设置合适的访问权限,而用户根据其职责和资历被指派为不同的角色。由于XML文档中可能包含敏感性程度不同的数据,例如员工信息中的工资信息敏感性程度就比其他信息要高,用户对这些信息的访问权限是不同的,因此必须实现细粒度的访问控制。实现访问控制有很多机制,例如传统的访问控制体系下使用的访问控制矩阵、ACL等机制。在关系数据库中,视图是实现细粒度访问控制的一种常用手段。因此可以通过视图技术来隐藏用户无权访问的XML数据对象,这样既保证了数据安全,也不会改变用户对XML文档的使用方式。
经过对现有文献检索发现,中国专利申请号:200610033602.2,公开号为:CN1859402,名称为:《XML文档管理系统及其方法与XML文档访问控制方法》,该技术中实现了XML文档的读取、写入、删除、搜索操作的访问控制,其具体方法为:首先XML文档管理客户端向XML文档管理服务器发出XML文档管理操作请求;XML文档管理服务器接收所述XML文档管理客户端的XML文档管理操作请求并判断XML文档管理客户端的请求是否满足所述XML文档管理操作的委托授权规则的生效条件;最后当XML文档管理客户端的请求满足XML文档管理操作的委托授权规则的生效条件时,执行规则规定的XML文档管理操作,否则执行非授权委托处理过程。但是该技术对每一次的客户端请求,需要通过消息交互判断其是否满足权限规则的生效条件,造成处理效率偏低。
又经检索发现,Wenfei Fan,Chee-Yong Chan等人发表的《Secure XML Querying withSecurity Views(基于安全视图的XML安全查询)》、《Rewriting Regular XPath Queries on XMLViews(XML视图上的XPath查询重写)》以及Gabriel Kuper,Fabio Massacci,NataliyaRassadko发表的《Generalized XML Security Views(通用的XML安全视图)》,研究了基于安全视图的XML查询以及路径重写,然而这些技术建立的是DTD的视图,而DTD出现的时间比较早,与Schema相比有许多明显的缺点,DTD有另外的语法要求,而Schema本身是良构的XML文档,可以采用和XML文档相同的处理机制。
发明内容
本发明的目的在于克服现有技术的上述不足,提供了一种基于安全视图的XML访问控制方法,能够根据访问权限和XML文档对应的Schema,处理得到Schema安全视图,视图中包含所有用户有权限访问的内容并屏蔽所有无权限的内容,在视图基础上构建XPath后对XML文档进行操作的结果都将符合访问权限的限定,以此实现对XML文档的访问控制。
本发明是通过如下技术方案实现的,本发明包括如下步骤:
步骤一,系统定义了若干角色,每个角色包括若干权限,且为每个角色生成XML格式的授权文档。
所述的角色间存在层次关系,该层次关系是偏序关系,或者是自反关系,或者是传递关系,或者是反对称关系。
所述的角色间存在约束关系,该约束关系是互斥约束,或者是基数约束,或者是先决约束,或者是会话约束,或者是等级约束。
所述的授权文档用于指定角色对XML文档具有的权限,该文档包括:角色信息、权限对象、权限类型、权限值和继承取值。
所述的权限对象是访问控制的对象,包括:XML文档、模式、元素和属性。
所述的权限类型包括:读取、添加、更新和删除,其中:添加、更新和删除都包括读取。
所述的权限值包括:有权限、无权限和受限权限。
所述的受限权限是指该对象是否有权限和对象在XML文档中的具体内容有关,当对象在XML文档中的具体内容满足设定的限制条件时,该对象才有权限;否则该对象无权限。
所述的继承取值决定对象的后代是否允许继承该权限,继承取值包括:允许继承取值和不允许继承取值。
所述的授权文档由XPath的谓词实现基于内容的细粒度访问权限定义,XPath的谓词(Predicates)用来查找特定的节点或者包含指定值的节点。
步骤二,为每个用户分配若干角色,当用户登录后,得到其所分配的角色,进行基于角色的访问控制(RBAC),从而得到节点权限。
所述的节点权限采用封闭式权限定义方式,包括:直接权限和继承权限,其中:直接权限是直接定义在节点上的权限,继承权限是定义在节点祖先节点上的允许继承取值的权限,直接权限用0表示,继承自父亲节点的才继承权限类型值为1,继承自祖父节点的继承权限类型值为2,以此类推,继承权限类型值随继承层数的增多而增大,其中:最小的继承权限类型值为节点的最终权限。
所述的基于角色的访问控制是:用户在一个环境中被指定为一个角色来访问资源,在另一个环境中用户被指定为另一个角色来访问资源,每个角色有若干权限。
步骤三,用户根据其得到的权限,将XML文档的Schema模式处理生成Schema安全视图,Schema安全视图只包含角色有权限访问的内容,而隐藏或删除了角色没有权限的内容。
所述的Schema安全视图包括:Schema视图Sv以及生成Sv的过程中产生的映射σ,其中:Sv包含所有用户有权限和受限权限的元素和属性结构和数据类型信息,用户没有权限的信息在Sv中被删除或隐藏;而σ是将基于Sv的XPath转换为基于原文档Schema的XPath的映射,该映射对用户隐藏。
所述的隐藏了角色没有权限的内容是:通过用哑(dummy)节点替换没有权限的原节点,实现在不改变文档结构的基础上隐藏节点。
所述的删除了角色没有权限的内容是:通过用哑节点替换没有权限的原节点,当哑节点没有属性和子元素或者其所有属性和子元素均为哑节点时,则删除哑节点。
所述的删除哑节点是通过剪枝方法实现的。
步骤四,用户发出访问操作请求时,Schema安全视图的XPath指定权限对象,当用户请求读取XML文档时,执行步骤五;当用户请求为XML文档添加内容时,执行步骤六;当用户请求为XML文档更新内容时,执行步骤七;当用户请求为XML文档删除内容时,执行步骤八。
所述的访问操作包括:读取操作、添加操作、更新操作和删除操作,其中:读取操作是用户查看XML文档中元素的内容和属性值,添加操作是用户为XML文档添加元素或属性并提供该节点的名称和内容,更新操作是用户更改XML文档元素和属性,删除操作是用户删除元素及其子元素和属性。
步骤五,当用户所属的角色具有读取权限时,先将Schema安全视图给出的XPath表达式中的哑节点替换为原节点,并对原XML文档查找,获得的结果集合便是用户所查询的所有信息中有权限的部分;当用户所属的角色不具有读取权限时,则用户读取XML文档的请求被拒绝。
步骤六,当用户所属的角色具有添加权限且添加的内容合法时,用户根据Schema安全视图结构构造的分支(Branch)添加到原XML文档中,缺失的元素或属性根据原Schema补充;否则,用户请求为XML文档添加内容的请求被拒绝。
步骤七,当用户所属的角色具有更新权限且更新的内容合法时,用户根据Schema安全视图构造的更新分支替换原XML文档的内容或属性;否则用户请求为XML文档更新内容的请求被拒绝。
步骤八,当用户所属的角色具有删除权限时,先将Schema安全视图给出的XPath表达式中的哑节点替换为原节点,然后用户将欲删除分支的根节点进行删除,即该根节点中所有的子元素和属性都被删除;否则,用户请求为XML文档删除内容的请求被拒绝。
与现有技术相比,本发明的有益效果是:通过生成Schema安全视图,达到基于安全视图的XML文档访问控制,当一个Schema文档对应若干个XML实例时,本发明只需要对Schema文档进行处理,不需要针对每一个XML文档生成视图,有效的减少了待处理的对象数目,提高了效率;本发明采用RBAC访问控制策略对Schema文档进行扩展,提出了细粒度授权文档的形式,实现了基于角色的访问控制,既保证了XML文档中数据信息的安全性,也不会改变用户对XML文档的使用方式。
附图说明
图1是实施例的访问控制原理示意图;
图2实施例安全视图定义的示意图。
具体实施方式
下面结合附图对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本实施例包括以下步骤:
步骤一,系统定义了若干角色,每个角色包括若干权限,且为每个角色生成XML格式的授权文档。
所述的角色间存在层次关系,该层次关系是偏序关系,或者是自反关系,或者是传递关系,或者是反对称关系。
所述的角色间存在约束关系,该约束关系是互斥约束,或者是基数约束,或者是先决约束,或者是会话约束,或者是等级约束。
所述的授权文档用于指定角色对XML文档具有的权限,该文档包括:角色信息、权限对象、权限类型、权限值和继承取值。
所述的权限对象是访问控制的对象,包括:XML文档、模式、元素和属性。
所述的权限类型包括:读取、添加、更新和删除,其中:添加、更新和删除都包括读取。
所述的权限值包括:有权限、无权限和受限权限。
所述的无权限节点的处理方法,具体为:对于无权限的节点,应该在安全视图中隐藏或删除。通过用哑节点替换没有权限的原节点,在不改变文档结构的基础上达到隐藏节点的目的。当一个哑节点没有属性和子元素或者其所有属性和子元素均为哑节点时,显示该节点对用户没有任何意义,删除该节点。文档中用户没有权限的节点至少有一个,不能全用dummy来替换,此外,也有可能本来就存在名称为dummy的元素或属性。本实施例的具体处理方法是:通过节点名称生成相应的ID,用dummy+ID来替换原节点,需要保证dummy节点ID的唯一性,同时需要将ID和原名称的对应关系记录到哑节点映射文件中,作为访问控制过程XPath转换的准备,等所有没有权限的节点都用dummy+ID替换后,再执行剪枝方法删除必要的节点。
所述的哑节点映射文件,具体为,符合如下Schema的XML文档:
<?xml version=″1.0″encoding=″UTF-8″?>
<xs:schema xmlns:xs=″http://www.w3.org/2001/XMLSchema″
elementFormDefault=″qualified″attributeFormDefault=″unqualified″>
<xs:element name=″hashresults″>
<xs:complexType>
<xs:sequence>
<xs:element name=″dummy″min0ccurs=″0″max0ccurs=″unbounded″>
<xs:complexType>
<xs:sequence>
<xs:element name=″originalname″type=″xs:string″/>
</xs:sequence>
<xs:attribute name=″id″type=″xs:string″
use=″required″/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
所述的受限权限节点的处理方法,具体为:受限权限的节点权限跟节点内容有关,在Schema中无法判定限制条件是否成立,不能将其归为有权限或无权限的节点分别处理。在安全视图中当不正常显示受限权限节点的名称,用户访问XML文档,且存在限制条件成立的节点时,返回结果中将包含安全视图中未正常显示的节点;反之正常显示的话,当不存在符合条件的节点,返回结果将不包含安全视图中包含的节点。为了解决这些矛盾,应当将节点的名称正常显示,并为节点设置min0ccurs属性值为0。此外也要将限制条件记录到限制条件文档,作为访问控制过程XPath转换的依据。
所述的限制条件文档,具体为,符合如下Schema的XML文档:
<?xml version=″1.0″encoding=″UTF-8″?>
<xs:schema xmlns:xs=″http://www.w3.org/2001/XMLSchema″>
<xs:element name=″originalname″type=″xs:string″/>
<xs:element name=″objectpath″type=″xs:string″/>
<xs:element name=″hashresults″>
<xs:complexType>
<xs:sequence>
<xs:element name=″condition″max0ccurs=″unbounded″>
<xs:complexType>
<xs:sequence>
<xs:element ref=″originalname″/>
<xs:element ref=″objectpath″/>
</xs:sequence>
<xs:attribute name=″id″use=″required″/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
所述的继承取值决定对象的后代是否允许继承该权限,继承取值包括:允许继承取值和不允许继承取值。
所述的授权文档由XPath的谓词实现基于内容的细粒度访问权限定义,XPath的谓词用来查找特定的节点或者包含指定值的节点。
本实施例中在授权时指定:/bookstore/book[price>35.00],其含义是选取所有bookstore元素中的price元素大于35.00的book元素,角色对price高于35的book具有read权限,而不符合price高于35这一条件的book不具有read权限。XML文档中同一个book元素,通过权限定义时谓词的使用,就变为有权限或无权限,从而达到了细粒度授权。
所述的XML格式的授权文档,具体为,符合如下Schema的XML文档:
<?xml version=″1.0″encoding=″UTF-8″?>
<xs:schema xmlns:xs=″http://www.w3.org/2001/XMLSchema″
elementFormDefault=″qualified″attributeFormDefault=″unqualified″>
<xs:element name=″Policy″>
<xs:complexType>
<xs:sequence>
<xs:element name=″ObjectSchema″type=″xs:string″/>
<xs:element name=″Privileges″type=″PrisType″/>
<xs:element name=″PrivilegeRoleAssignment″type=″PRAType″/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name=″PrisType″>
<xs:sequence>
<xs:element name=″Privilege″type=″PriType″min0ccurs=″0″
max0ccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″PRAType″>
<xs:sequence>
<xs:element name=″Role″type=″RoleType″min0ccurs=″0″
max0ccurs=″unbounded″/>
</xs:sequence>
</xs:complexType>
<xs:complexType name=″PriType″>
<xs:sequence>
<xs:element name=″ObjectPath″type=″xs:string″/>
<xs:element name=″AccessType″type=″xs:string″/>
<xs:element name=″Permission″type=″xs:string″/>
<xs:element name=″Recursive″type=″xs:string″/>
</xs:sequence>
<xs:attribute name=″PriID″type=″xs:string″/>
</xs:complexType>
<xs:complexType name=″RoleType″>
<xs:sequence>
<xs:element name=″Assigned″min0ccurs=″0″max0ccurs=″unbounded″>
<xs:complexType>
<xs:attribute name=″PriID″type=″xs:string″/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name=″RoleID″type=″xs:string″/>
</xs:complexType>
</xs:schema>
所述的符合以上Schema的XML文档,具体为,如下例所示:
<Policy>
<ObjectSchema>target</ObjectSchema>
<Privileges>
<Privilege PriID=″1″>
<ObjectPath>a/b/d</ObjectPath>
<AccessType>write</AccessType>
<Permission>[q]</Permission>
<Recursive>Y</Recursive>
</Privilege>
</Privileges>
<PrivilegeRoleAssignment>
<Role RoleID=″r01″>
<Assigned PriID=″1″/>
</Role>
</PrivilegeRoleAssignment>
</Policy>
步骤二,为每个用户分配若干角色,当用户登录后,得到其所分配的角色,进行基于角色的访问控制,从而得到节点权限。
所述的节点权限包括:直接权限和继承权限,其中:直接权限是直接定义在节点上的权限,继承权限是定义在节点祖先节点上的允许继承取值的权限,直接权限用0表示,继承自父亲节点的才继承权限类型值为1,继承自祖父节点的继承权限类型值为2,以此类推,继承权限类型值随继承层数的增多而增大,其中:最小的继承权限类型值为节点的最终权限。
节点权限的定义有开放式和封闭式两种方式:开放式是指对于不具有直接权限和任何继承权限的节点,默认为有权限;封闭式则与此相反,节点默认为无权限。本实施例采用封闭式定义。
为保证授权的完整性,对于没有定义任何权限也没有继承任何权限的对象,本实施例设有一个默认权限。
所述的基于角色的访问控制是:用户在一个环境中被指定为一个角色来访问资源,在另一个环境中用户被指定为另一个角色来访问资源,每个角色有若干权限。
步骤三,用户根据其得到的权限,将XML文档的Schema模式处理生成Schema视图,Schema视图只包含角色有权限访问的内容,而隐藏或删除了角色没有权限的内容。
所述的隐藏了角色没有权限的内容是:通过用哑节点替换没有权限的原节点,实现在不改变文档结构的基础上隐藏节点。
所述的删除了角色没有权限的内容是:当哑节点没有属性和子元素或者其所有属性和子元素均为哑节点时,且所有没有权限的节点都用dummy+ID替换后,通过剪枝方法删除哑节点。
所述的剪枝方法,具体为:当元素及其所有子元素和属性对某个角色都没有权限,这些元素和属性都会被哑节点代替,全部由哑节点组成的分支对用户没有任何意义,不应该在安全视图中存在,因此需要将符删除条件的节点删除。
所述的Schema视图包括:Schema视图Sv以及生成Sv的过程同时产生的一个映射σ。Sv包含所有且仅包含用户有权限和受限权限的元素和属性结构和数据类型信息,用户没有权限的信息在Sv中被删除或隐藏。而σ是将基于Sv的XPath转换为基于原文档Schema的XPath的映射,对用户不可见。由于Schema视图Sv中需要隐藏用户不可访问的信息,新生成哑节点以替换用户无权限的元素和属性。授权允许独立针对每个元素或属性,祖先后代关系的节点不一定具有同样的权限。因此基于视图Sv的XPath路径Pv中可能包含哑元素,这种情况下直接用Pv在原XML文档做查询只能得到空结果。需要通过σ(Pv)=P得到基于原Schema的等效路径P再做查询。根据授权文档,原Schema文档中没有权限的元素被dummy所替代。仅有dummy元素组成的分支被剪枝,生成对应的Schema视图Sv,以及映射σ。
所述的生成Schema视图,具体方法为:
输入:访问者的角色role
目标XML文档target.xml
输出:XML Schema视图targetview.xsd
t=parse(target.xsd);//得到target.xsd的文档树
nodeList=FindEleAndAttr(target.xsd)
for(all the nodes∈nodeList)
//判断节点是否有read权限,其他权限的对象包含在有read权限的对象中
result=findPermission(role,node,targetpolicy.xml);
if(N==result)
proInaccNode(node);//处理没有权限的节点
elseif(Y==result)
proAccNode(node);//处理有权限的节点
else
proCoaccNode(node);//处理受限权限的节点
//保存为XML Schema视图
saveAsFile(targetView.xsd);
prune(targetView.xsd);//剪枝处理。
fileOutput(targetview.xsd);//输出XML Schema视图
本实施例中生成Schema视图的过程中首先解析目标Schema文档target.xsd,找出所有代表元素和属性定义的节点。对每一个节点,通过findPermission()方法从授权策略文档中取得其权限,然后分三种情况分别处理无权限、受限权限和有权限的节点:proInaccNode()是处理无权限节点的方法,用哑节点替换原节点;proCoaccNode()是处理受限权限节点的方法,受限表达式的真假在现阶段无法判定,和用户的操作类型或具体实例有关,因此在XML Schema视图中应正常显示受限权限的节点,并将限制条件保存;proAccNode()是处理有权限的节点,目前什么也不做。将所有的元素和属性节点处理完之后,当生成的XML Schema视图中存在若干只包含哑节点的分支时,这些分支没有必要在XML schema视图中显示,所以输出视图之前需要执行prune()方法,该方法对没有子元素或只有哑元素子元素的哑元素进行剪枝。
步骤四,用户根据Schema视图的结构发出访问操作请求,Schema视图的XPath指定权限对象,当用户请求读取XML文档时,执行步骤五;当用户请求为XML文档添加内容时,执行步骤六;当用户请求为XML文档更新内容时,执行步骤七;当用户请求为XML文档删除内容时,执行步骤八。
所述的访问操作包括:读取操作、添加操作、更新操作和删除操作,其中:读取操作是用户查看XML文档中元素的内容和属性值,添加操作是用户为XML文档添加元素或属性并提供该节点的名称和内容,更新操作是用户更改XML文档元素和属性,删除操作是用户删除元素及其子元素和属性。
本实施例具体为:若干个XML文档对应一个Schema文档,用户的操作为读取XML文档的根元素,Schema视图根据安全视图的定义以及用户所属角色所具有的权限生成,用户基于Schema视图对XML文档进行操作,读取操作的结果则恰好为XML文档视图。
步骤五,当用户所属的角色具有读取权限时,先将Schema视图给出的XPath表达式中的哑节点替换为原节点,并对原XML文档查找和剪枝处理,获得的结果集合便是用户所查询的所有信息中有权限的部分;当用户所属的角色不具有读取权限时,则用户读取XML文档的请求被拒绝。
如图2所示,本实施例中用户需要查询ele4,构造查询路径为:ele1/dummy1/ele4,在原XML文档中查询之前,需确定dummy1对应的节点,进而将路径转换为:ele1/ele2/ele4。基于原XML文档的查询结果不一定会符合Schema安全视图,必须依据安全视图对结果进行修剪,本实施例中的具体做法为,查询结果中的节点如果在dummy映射文档中存在,则用dummy+ID替换,否则如果节点出现在包含限制条件的文档中,需要根据限制条件所限定的路径判定节点是否有权限。例如,假设限制条件为://product[@type=‘book’],表示用户只对book类型的product有权限,当用户查询//product时,结果中的所有product节点在包含限制条件的文档中存在,只有type属性为book的product节点符合限制条件,不符合限制条件的节点用dummy+ID替换,最终的查询结果在返回给用户之前同样需要进行剪枝操作。
步骤六,当用户所属的角色具有添加权限且添加的内容合法时,用户根据Schema视图结构构造的分支添加到原XML文档中,缺失的元素或属性根据原Schema补充,如果Schema中定义了元素或属性的默认值,则使用默认值,否则取空值;当用户所属的角色不具有添加权限或添加的内容不合法时,用户请求为XML文档添加内容的请求被拒绝。
本实施例中具体的做法为:如果用户对添加的内容中任何一个节点有权限,则首先按照Schema中的定义添加一个内容为空或默认值的完整分支,在通过更新这个分支的内容来完成整个添加。
步骤七,当用户所属的角色具有更新权限且更新的内容合法时,用户根据Schema视图构造的更新分支替换原XML文档的内容或属性;否则用户请求为XML文档更新内容的请求被拒绝。
更新操作改变元素和属性的内容,但不影响文档的结构。当用户根据Schema试图构造好需要更新的分支Branch,权限检查通过且内容合法时,将Branch中包含的元素和属性更新即可。更新操作成功后,除了元素的内容或者属性的值发生了变化外,XML文档的其他部分都没有发生改变。
步骤八,当用户所属的角色具有删除权限时,先将Schema视图给出的XPath表达式中的哑节点替换为原节点,然后用户将欲删除分支的根节点进行删除,即该根节点中所有的子元素和属性都被删除;否则,用户请求为XML文档删除内容的请求被拒绝。
本实施例中具体的做法为:对用户想要删除的节点,并不直接删除,而是先将元素或属性的内容清空,直到处理完Branch分支中所有的节点后,根据剪枝方法,将没有实际内容的分支删除;如果分支中仍存在有意义的节点,则需保留。
本实施例实现了基于安全视图的XML文档访问控制,给出了授权文档的具体形式,以及生成安全视图的具体方法,丰富灵活的特性使得RBAC模型能很好地满足大型系统对复杂权限管理的需求。由于实现了用户与访问权限的逻辑分离,基于角色的访问策略极大地方便了权限管理。
Claims (10)
1.一种基于安全视图的XML访问控制方法,其特征在于,包括以下步骤:
步骤一,系统定义了若干角色,每个角色包括若干权限,且为每个角色生成XML格式的授权文档;
步骤二,为每个用户分配若干角色,当用户登录后,得到其所分配的角色,进行基于角色的访问控制,从而得到节点权限;
步骤三,用户根据其得到的权限,将XML文档的Schema模式处理生成Schema安全视图,Schema安全视图只包含角色有权限访问的内容,而隐藏或删除了角色没有权限的内容;
步骤四,用户发出访问操作请求时,Schema安全视图的XPath指定权限对象:
当用户请求读取XML文档时,执行步骤五;
当用户请求为XML文档添加内容时,执行步骤六;
当用户请求为XML文档更新内容时,执行步骤七;
当用户请求为XML文档删除内容时,执行步骤八;
步骤五,当用户所属的角色具有读取权限时,先将Schema安全视图给出的XPath表达式中的哑节点替换为原节点,并对原XML文档查找,获得的结果集合便是用户所查询的所有信息中有权限的部分;
当用户所属的角色不具有读取权限时,则用户读取XML文档的请求被拒绝;
步骤六,当用户所属的角色具有添加权限且添加的内容合法时,用户根据Schema安全视图结构构造的分支添加到原XML文档中,缺失的元素或属性根据原Schema补充;否则,用户请求为XML文档添加内容的请求被拒绝;
步骤七,当用户所属的角色具有更新权限且更新的内容合法时,用户根据Schema安全视图构造的更新分支替换原XML文档的内容或属性;否则用户请求为XML文档更新内容的请求被拒绝;
步骤八,当用户所属的角色具有删除权限时,先将Schema安全视图给出的XPath表达式中的哑节点替换为原节点,然后用户将欲删除分支的根节点进行删除,即该根节点中所有的子元素和属性都被删除;否则,用户请求为XML文档删除内容的请求被拒绝。
2.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤一中所述的授权文档用于指定角色对XML文档具有的权限,该文档包括:角色信息、权限对象、权限类型、权限值和继承取值;
所述的权限对象是访问控制的对象,包括:XML文档、模式、元素和属性;
所述的权限类型包括:读取、添加、更新和删除,其中:添加、更新和删除都包括读取;
所述的权限值包括:有权限、无权限和受限权限;
所述的继承取值决定对象的后代是否允许继承该权限,继承取值包括:允许继承取值和不允许继承取值。
3.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤一中所述的角色间存在层次关系,该层次关系是偏序关系,或者是自反关系,或者是传递关系,或者是反对称关系。
4.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤一中所述的角色间存在约束关系,该约束关系是互斥约束,或者是基数约束,或者是先决约束,或者是会话约束,或者是等级约束。
5.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤一中所述的授权文档由XPath的谓词实现基于内容的细粒度访问权限定义,XPath的谓词用来查找特定的节点或者包含指定值的节点。
6.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤二中所述的节点权限采用封闭式权限定义方式,包括:直接权限和继承权限,其中:直接权限是直接定义在节点上的权限,继承权限是定义在节点祖先节点上的允许继承取值的权限,直接权限用0表示,继承自父亲节点的才继承权限类型值为1,继承自祖父节点的继承权限类型值为2,以此类推,继承权限类型值随继承层数的增多而增大,其中:最小的继承权限类型值为节点的最终权限。
7.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤二中所述的基于角色的访问控制是:用户在一个环境中被指定为一个角色来访问资源,在另一个环境中用户被指定为另一个角色来访问资源,每个角色有若干权限。
8.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤三中所述的Schema安全视图包括:Schema视图Sv以及生成Sv的过程中产生的映射σ,其中:Sv包含所有用户有权限和受限权限的元素和属性结构和数据类型信息,用户没有权限的信息在Sv中被删除或隐藏;而σ是将基于Sv的XPath转换为基于原文档Schema的XPath的映射,该映射对用户隐藏。
9.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤三中所述的隐藏了角色没有权限的内容是:通过用哑节点替换没有权限的原节点,实现在不改变文档结构的基础上隐藏节点;所述的删除了角色没有权限的内容是:通过用哑节点替换没有权限的原节点,当哑节点没有属性和子元素或者其所有属性和子元素均为哑节点时,则删除哑节点。
10.根据权利要求1所述的基于安全视图的XML访问控制方法,其特征是,步骤四中所述的访问操作包括:读取操作、添加操作、更新操作和删除操作,其中:读取操作是用户查看XML文档中元素的内容和属性值,添加操作是用户为XML文档添加元素或属性并提供该节点的名称和内容,更新操作是用户更改XML文档元素和属性,删除操作是用户删除元素及其子元素和属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010119164 CN101794312A (zh) | 2010-03-08 | 2010-03-08 | 基于安全视图的xml访问控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010119164 CN101794312A (zh) | 2010-03-08 | 2010-03-08 | 基于安全视图的xml访问控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101794312A true CN101794312A (zh) | 2010-08-04 |
Family
ID=42587011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010119164 Pending CN101794312A (zh) | 2010-03-08 | 2010-03-08 | 基于安全视图的xml访问控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101794312A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262667A (zh) * | 2011-07-27 | 2011-11-30 | 北京航空航天大学 | 一种本源xml数据库中xml文档的访问控制方法 |
WO2012159231A1 (zh) * | 2011-07-25 | 2012-11-29 | 华为技术有限公司 | 访问控制方法及访问控制服务器 |
CN102932369A (zh) * | 2012-11-19 | 2013-02-13 | 西北大学 | 一种针对用户特征的细粒度资源授权方法 |
CN103139296A (zh) * | 2013-01-31 | 2013-06-05 | 中国人民解放军信息工程大学 | 基于xml的安全标记与数据客体的绑定方法 |
CN103530538A (zh) * | 2012-07-03 | 2014-01-22 | 沈阳高精数控技术有限公司 | 一种基于Schema的XML安全视图查询方法 |
CN107679099A (zh) * | 2017-09-12 | 2018-02-09 | 中国科学院软件研究所 | 访问控制要素图构建方法、策略描述方法、访问控制判定方法及框架 |
CN112416966A (zh) * | 2020-12-11 | 2021-02-26 | 北京顺达同行科技有限公司 | 即席查询方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060015471A1 (en) * | 2004-07-01 | 2006-01-19 | Gmorpher Incorporated | System, Method, and Computer Program Product of Building A Native XML Object Database |
CN101615190A (zh) * | 2009-07-31 | 2009-12-30 | 复旦大学 | 安全的xml关键字检索方法 |
-
2010
- 2010-03-08 CN CN 201010119164 patent/CN101794312A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060015471A1 (en) * | 2004-07-01 | 2006-01-19 | Gmorpher Incorporated | System, Method, and Computer Program Product of Building A Native XML Object Database |
CN101615190A (zh) * | 2009-07-31 | 2009-12-30 | 复旦大学 | 安全的xml关键字检索方法 |
Non-Patent Citations (2)
Title |
---|
《中国优秀硕士论文电子期刊网》 20060930 谢领 面向XML文档的访问控制模型研究与实现 25-43 1-10 , 2 * |
《信息技术》 20100131 肖灵,李斓,李建华 XML Schema视图的研究与实现 1-4 1-10 , 第1期 2 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103004135B (zh) * | 2011-07-25 | 2015-04-29 | 华为技术有限公司 | 访问控制方法及访问控制服务器 |
WO2012159231A1 (zh) * | 2011-07-25 | 2012-11-29 | 华为技术有限公司 | 访问控制方法及访问控制服务器 |
CN103004135A (zh) * | 2011-07-25 | 2013-03-27 | 华为技术有限公司 | 访问控制方法及访问控制服务器 |
CN102262667B (zh) * | 2011-07-27 | 2012-12-12 | 北京航空航天大学 | 一种本源xml数据库中xml文档的访问控制方法 |
CN102262667A (zh) * | 2011-07-27 | 2011-11-30 | 北京航空航天大学 | 一种本源xml数据库中xml文档的访问控制方法 |
CN103530538B (zh) * | 2012-07-03 | 2016-05-18 | 沈阳高精数控技术有限公司 | 一种基于Schema的XML安全视图查询方法 |
CN103530538A (zh) * | 2012-07-03 | 2014-01-22 | 沈阳高精数控技术有限公司 | 一种基于Schema的XML安全视图查询方法 |
CN102932369A (zh) * | 2012-11-19 | 2013-02-13 | 西北大学 | 一种针对用户特征的细粒度资源授权方法 |
CN103139296A (zh) * | 2013-01-31 | 2013-06-05 | 中国人民解放军信息工程大学 | 基于xml的安全标记与数据客体的绑定方法 |
CN107679099A (zh) * | 2017-09-12 | 2018-02-09 | 中国科学院软件研究所 | 访问控制要素图构建方法、策略描述方法、访问控制判定方法及框架 |
CN107679099B (zh) * | 2017-09-12 | 2021-07-30 | 中国科学院软件研究所 | 访问控制要素图构建方法、策略描述方法、访问控制判定方法及框架 |
CN112416966A (zh) * | 2020-12-11 | 2021-02-26 | 北京顺达同行科技有限公司 | 即席查询方法、装置、计算机设备和存储介质 |
CN112416966B (zh) * | 2020-12-11 | 2024-01-26 | 北京顺达同行科技有限公司 | 即席查询方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ferrari | Access Control in Data Management Systems: A Visual Querying Perspective | |
US10108813B2 (en) | Query conditions-based security | |
US8930403B2 (en) | Fine-grained relational database access-control policy enforcement using reverse queries | |
US9594778B1 (en) | Dynamic content systems and methods | |
US8793489B2 (en) | Method and system for controlling data access to organizational data maintained in hierarchical | |
US7299171B2 (en) | Method and system for processing grammar-based legality expressions | |
WO2019226806A1 (en) | Organization based access control system | |
US20170323029A1 (en) | Fine-grained database access-control policy enforcement using reverse queries | |
CN101794312A (zh) | 基于安全视图的xml访问控制方法 | |
CA2510835A1 (en) | Schema server object model | |
CN101847155A (zh) | 包括访问受保护的xml数据的xml数据库的管理系统 | |
CN115280299A (zh) | 合规实体合并和访问 | |
US20220188448A1 (en) | System and method for implementing mandatory access control on queries of a self-describing data system | |
AU2005201002B2 (en) | Method and system for displaying and managing security information | |
Mohamed et al. | Extended authorization policy for graph-structured data | |
Mohamed et al. | A systematic literature review of authorization and access control requirements and current state of the art for different database models | |
Shi et al. | A secure and efficient discovery service system in EPCglobal network | |
Moniruzzaman et al. | A study of privacy policy enforcement in access control models | |
Farooqi et al. | Developing a dynamic trust based access control model for xml databases | |
Kechar et al. | An access control system architecture for xml data warehouse using xacml | |
Lim et al. | A policy-based approach for assuring data integrity in DBMSs | |
Yang et al. | Action type based access control model for XML documents | |
Morovat | Designing Secure Access Control Model in Cyber Social Networks | |
Ge et al. | Secure database development and the Clark-Wilson security model | |
Rahman et al. | Faculty of computer science and information systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100804 |