一种基于Schema的XML安全视图查询方法
技术领域
本发明涉及数控机床远程监控诊断平台的安全访问控制领域,具体的说是一种基于Schema的XML安全视图查询方法。
背景技术
高档数控装备作为机电一体化产品,其故障发生、故障传播以及误诊、漏诊的可能性很高,通过自诊断和可编程逻辑控制器对机床电器做简单状态检测已无法满足数控装备健康可靠运行的需求,因此,数控机床远程监控诊断平台应运而生。该平台能够充分利用开放式数控***的网络化接口和现有互连网资源实现信息共享、监控诊断、寿命预测以及与制造执行***、企业资源规划等第三方***的集成,但其实现需要解决以下两方面问题:⑴地理上分散的网络节点间的数据接口与***集成规范存在较大差异,造成数控装备信息的异构问题,不便于信息的整合与共享;⑵远程终端为实现精准的判断需要大量数据传输时,可能由于网络带宽、入侵攻击等限制因素造成网络传输延迟和访问控制安全等问题。
可扩展标记语言(eXtensible Markup Language,XML)作为Web上数据描述和交换的实施标准,己在工业界得到广泛的应用。因此,可以借助XML技术,对数控装备信息、加工工艺信息、运行状态信息进行建模和规范化表达,以实现平台中各节点信息的同步与共享。这种XML规范化的信息虽然能够方便授权用户根据需求配置管理功能,在复杂网络制造环境下实现资源自由重组和高效利用,但同时也引入了异构网络节点间敏感信息的安全访问控制问题。如何为不同网络授权用户提供高效、安全的查询访问控制,成为当前的研究热点。
立足于上述工程需求,针对XML信息规范和安全访问控制展开的研究受到普遍关注。主要包括以下三种两种研究方法:⑴基于原始XML文档的访问控制方法,没有为用户提供文档类型定义(Document Type Definition,DTD)或者XML Schema定义(XML Schema Definition,XSD)来结构化可访问信息,其查询算法复杂,完整性开销大。⑵基于DTD文档的访问控制方法,直接将完整的DTD文档展示给所有用户,不仅查询更新耗费的时间多,而且不能对用户隐藏敏感信息路径,使其有可能利用看似安全的查询语句获取访问控制模型保护的敏感信息。⑶基于DTD安全视图的访问控制方法,通过定义于原始DTD文档上的安全策略为不同用户生成安全视图,提供授权范围内的信息访问控制,并通过查询重写技术修改客户端XPath查询语句,防止未授权用户对敏感信息的直接访问和推理访问。但现有方法的视图生成和查询效率并不高,并且由于DTD模型本身的复杂性,不便于用户针对未来需求进行开发、使用和扩展。
发明内容
针对数控机床远程监控诊断平台中异构信息安全交互的需求,以及现有XML安全访问控制方法存在的上述不足之处,本发明要解决的技术问题是提供一种增强访问控制安全性、提高视图生成和信息查询效率、降低空间开销、提高可扩展性的用于数控机床安全访问控制领域的基于Schema的XML安全视图查询方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明一种基于Schema的XML安全视图查询方法包括以下步骤:
搭建数控机床远程监控诊断平台,采用XML Schema技术对平台中的数控装备信息、加工工艺信息、运行状态信息进行建模和规范化表达,形成原始Schema文档;
***管理员通过图形用户界面为数控机床远程监控诊断平台的访问用户设置操作权限,针对用户权限设置,将原始Schema文档中的信息节点划分为三种访问限定集合,包括递归不可访问节点集合、当前不可访问节点集合和条件可访问节点集合,处于上述三种集合以外的节点均属于可访问节点;
***根据由用户设置生成的用户权限说明以及原始Schema文档,在服务器端采用安全视图生成算法自动生成添加了path_to_parent属性的新Schema文档,在屏蔽敏感信息的同时,保存当前节点同父节点之间的原始路径信息;
将去除path_to_parent属性得到的对应安全视图存储于客户端,从而隐藏敏感信息路径,为用户提供授权范围内的信息查询控制;
客户端基于安全视图展开查询,服务器采用查询重写算法重写XPath查询语句,将作用于视图上的查询转换为作用于原始Schema文档上的等价查询,并将查询结果返回客户端。
所述数控机床远程监控诊断平台包括远程客户端、服务器、路由器、数控***、数控机床、嵌入式监控诊断单元及相应的传感器。
所述安全视图生成算法包括以下步骤:
从原始Schema文档的根结点开始,标记当前正在处理的节点;
判断当前节点是否已遍历,如果是,说明以当前节点为根的分支节点树在之前已经生成过,则进入当前节点的下一个兄弟节点进行处理;
判断该兄弟节点是否存在,如果是,将其标记为当前节点,重复上一步骤,如果否,说明以当前节点的父节点为根的宽度遍历已经结束,当前节点的父节点的所有子节点均已进行过处理,标记当前节点的父节点为已遍历状态,并将该父节点记录为当前节点;
判断当前节点是否为根结点,如果否,进入当前节点的下一个兄弟节点进行处理,重复上一步骤,如果是,生成新Schema文档,去除其中的path_to_parent属性,生成安全视图,算法结束。
如果所述当前节点未被遍历,则进一步判断当前节点对于用户权限而言的访问级别,如果当前节点属于递归不可访问节点集合,则删除当前节点及其后续子孙所有节点,并进入当前节点的下一个兄弟节点进行处理,重复上述视图生成过程。
如果所述当前节点属于条件可访问节点集合,则将当前节点和条件查询语句一起加入路径信息中,并存储入path_to_parent属性中,然后进入当前节点的第一个孩子节点进行处理,标记该孩子节点为当前节点,重复上述视图生成过程。
如果所述当前节点属于当前不可访问节点集合,则进一步判断当前节点是否为根结点,如果否,则删除当前节点,并使用当前节点的所有孩子节点进行代替,同时将当前节点记录入路径信息中,然后进入当前节点的第一个孩子节点进行处理,标记该孩子节点为当前节点,重复上述视图生成过程。
如果所述当前节点是根结点,则进一步判断当前节点的孩子个数,如果多于一个孩子,则使用虚拟增加的dummy节点代替当前节点,并将其path_to_parent属性置为空,然后进入当前节点的第一个孩子节点进行处理,标记该孩子节点为当前节点,重复上述视图生成过程。
如果所述当前节点只有一个孩子节点,则使用该孩子节点代替当前节点,进入该孩子节点进行处理,标记该孩子节点为当前节点,重复上述视图生成过程。
如果所述当前节点为可访问节点,则将当前节点记录入路径信息中,并存储入path_to_parent属性中,然后进入当前节点的第一个孩子节点进行处理,标记该孩子节点为当前节点,重复上述视图生成过程。
所述查询重写算法包括以下步骤:
将客户端输入的XPath查询语句按照XPath的基本查询表达式划分为多个子查询语句,针对其中一个子查询语句,按照文档树自顶向下的顺序进行重写操作;
在用户安全视图对应的新Schema文档中,对该子查询语句的目标节点进行查找,并将查找的起始节点标记为临时根结点;
如果能够找到目标节点,则记录从临时根节点到目标节点所经过的所有节点路径,并将该路径中所有的path_to_parent属性添加到对应的查询语句中,以新记录的路径信息替换原始子查询语句,并标记目标节点为新Schema文档的新临时根结点;
判断是否还存在子查询语句未经处理,如果是,则重复上述步骤,如果否,说明重写过程结束,返回新生成的XPath查询语句,算法结束;
如果不能找到所述目标节点,则说明当前查询过程是非法的,用户所输入的查询语句是非法的,需要重置新Schema文档的临时根节点,并终止本次查询,算法结束。
本发明具有以下有益效果及优点:
1.有效增强安全性。本发明方法不仅能够针对特定用户权限生成安全视图,隐藏敏感信息路径和屏蔽敏感信息,而且支持基于Schema的细粒度访问控制和包含通配符、限定符等的XPath复杂查询语句的处理,因此有效增强了复杂异构信息交互的安全性。
2.视图生成和信息查询效率高。本发明方法采用三种访问限定集合的定义,降低了视图生成过程中文档树节点的遍历次数,并且将路径信息存储于节点的属性path_to_parent中,通过直接替换客户端查询语句来恢复原始路径,省去了查询重写过程中路径信息同节点的匹配查找,因此视图生成和信息查询效率高。
3.空间开销低。虽然本发明方法存放安全文档需要占用一定的存储空间,但采用三种访问限定集合的定义,约简了安全文档节点数量,文档压缩率高,因此,空间开销低,不会对物理存储设备和网络传输造成大的负担。
4.可扩展性好。本发明方法基于Schema技术描述XML文档结构,采用XML相同语法编写,无需特殊解析器,便于用户的学习和针对未来需求进行开发,因此可扩展性好。
附图说明
图1为本发明方法应用的数控机床远程监控诊断平台示意图;
图2为本发明方法应用的安全视图访问控制架构图;
图3为本发明方法中安全视图生成算法流程图;
图4为本发明方法中XPath查询重写算法流程图;
图5为本发明方法应用的XML Schema文档树示意图;
图6为本发明方法中算法执行时间结果图;
图7为使用本发明方法所得的文档压缩率结果图。
具体实施方式
下面结合附图及实施例对本发明一种基于Schema的XML安全视图查询方法的实施方式进行详细说明。
如图1所示,为本发明方法应用的数控机床远程监控诊断平台示意图。该图中使用温度、噪声、振动传感器采集数控机床整机及其核心子***的机械载荷状态信息,经嵌入式监控诊断单元的处理,发送至服务器;数控***结合现场总线获取设备信息、加工工艺信息、电气状态信息,发送至服务器;服务器使用XML Schema封装信息,通过路由器提供给远程客户端,同时接收远程客户端的查询信息、控制信息,发送给数控装备。
如图2所示,为本发明方法应用的安全视图访问控制架构图。该图中使用XML技术对数控***与数控机床设备信息、加工工艺信息、运行状态信息进行建模,形成的XML文档数据库由Schema语言定义其合法结构,形成原始Schema文档S;***管理员通过图形用户界面为用户设置操作权限,形成用户权限说明R;***根据用户权限说明以及原始Schema文档,在服务器端采用安全视图生成算法自动生成添加了path_to_parent属性的新Schema文档NS;去除NS中的path_to_parent属性后得到其对应的安全视图Sv,并存储于客户端;客户端基于Sv展开查询,服务器基于Sv对应的NS文档,采用查询重写算法重写XPath查询语句,将作用于Sv上的查询转换为作用于S上的等价查询;将查询结果返回客户端。
如图3所示,为本发明方法中安全视图生成算法流程图。其中,新Schema文档NS为每一节点增设了path_to_parent属性,用以保存当前节点同父节点之间的原始路径信息;Nr为递归不可访问节点集合,其内部包含的节点表示该节点以及该节点的所有后续子孙节点均不可访问;Nl为当前不可访问节点集合,其内部包含的节点表示该节点不可访问,但是存在可访问的后续子孙节点;Nq为条件访问节点集合,其内部包含的节点表示该节点是条件可访问的,[q]即表示条件限制语句;处于上述三种访问限定集合以外的节点均属于可访问节点。
针对Nr、Nl和Nq三种访问限定集合中的节点以及可访问节点,安全视图生成算法具体包括以下步骤:
从原始Schema文档S的根节点Root开始,进行新Schema文档NS和安全视图Sv的生成;
使用A标记当前正在处理的节点;
判断节点A是否已遍历,如果是,说明以A节点为根的分支节点树在之前已经生成过,则进入A的下一个兄弟节点进行处理;
判断A是否存在下一个兄弟节点,如果存在,将该兄弟节点标记为A,重复上述过程;
如果A不存在下一个兄弟节点,说明以A的父节点为根的宽度遍历已经结束,A的父节点的所有子节点均已进行过处理,则标记A的父节点为已遍历状态,并将该父节点标记为A,进一步判断A是否为根结点,如果否,进入A的下一个兄弟节点进行处理,重复上述过程;
如果A是根结点,则生成NS,去除其中的path_to_parent属性,生成Sv,算法结束;
如果A未被遍历,则判断A对于用户权限而言的访问级别,如果A节点属于Nr集合,则删除A及其后续子孙所有节点,并进入A的下一个兄弟节点进行处理,重复上述过程;
如果A属于Nq集合,则将条件查询语句q加入路径信息TPath中,将A记录入TPath中,并存储入path_to_parent属性中,然后进入A的第一个孩子节点进行处理,将该孩子节点标记为A,重复上述过程;
如果A属于Nl集合,则进一步判断A是否为根结点,如果否,则删除A,并使用A的所有孩子节点进行代替,同时将A记录入TPath中,然后进入A的第一个孩子节点进行处理,将该孩子节点标记为A,重复上述过程;
如果A是根结点,则进一步判断A的孩子个数,如果多于一个孩子,则使用虚拟增加的dummy节点代替A,并将其path_to_parent属性置为空,然后进入A的第一个孩子节点进行处理,将该孩子节点标记为A,重复上述过程;
如果A只有一个孩子节点,则使用该孩子节点代替A,进入该孩子节点进行处理,将该孩子节点标记为A,重复上述过程;
如果A为可访问节点,则将A记录入TPath中,并存储入path_to_parent属性中,然后进入A的第一个孩子节点进行处理,将该孩子节点标记为A,重复上述过程。
如图4所示,为本发明方法中XPath查询重写算法流程图。具体包括以下步骤:
将客户端输入的XPath查询语句按照XPath的基本查询表达式划分为多个子查询语句,将其中一个子查询语句标记为P,按照文档树自顶向下的顺序进行重写操作;
在用户安全视图Sv对应的新Schema文档NS中,对P的目标节点进行查找,并将查找的起始节点标记为SRoot;
如果能够找到目标节点,则记录从SRoot到目标节点所经过的所有节点路径,并将该路径中所有的path_to_parent属性添加到对应的查询语句中,以新记录的路径信息替换P,并标记目标节点为NS的新SRoot;
判断是否还存在其他子查询语句未经处理,如果是,则重复上述过程,如果否,说明重写过程结束,返回新生成的XPath查询语句,算法结束;
如果不能找到目标节点,则说明当前查询过程是非法的,用户所输入的查询语句是非法的,需要重置NS的SRoot,并终止本次查询,算法结束。
为验证本发明方法的有效性,通过理论分析和实验测试对本发明所述基于Schema的XML安全视图查询方法进行了研究。
本发明方法不仅能够针对特定用户权限生成安全视图,隐藏敏感信息路径和屏蔽敏感信息,而且支持基于Schema的细粒度访问控制和包含通配符、限定符等的XPath复杂查询语句的处理,增强了复杂异构信息交互的安全性。
本发明所述安全视图生成算法,采用Nr、Nl和Nq限定集合表示节点的访问权限,遍历Schema文档中的节点,分别与三种访问限定集合进行匹配,若节点属于Nr,则该节点和子孙节点均不会包含于Sv,其子孙节点也不必遍历,降低了节点遍历次数;若节点属于Nl,则该节点不会包含于Sv,其子孙节点仍需进一步判断所属集合;若节点属于Nq,则节点必定包含于Sv中;若节点与三个集合均不匹配,则为可访问节点,必定包含于Sv中。因此该算法的时间复杂度为O(M*N),其中M=|Sv|+|Nr|+|Nl|,N=|Nr|+|Nl|+|Nq|,M为遍历的节点的个数,|Sv|为安全视图中节点的规模,|Nr|、|Nl|和|Nq|为Nr、Nl、Nq集合中节点的规模。本发明方法在视图生成过程中将路径信息直接存储于节点的属性path_to_parent中,查询重写算法通过直接对查询语句进行替换来恢复原始路径,省去了路径信息同节点的匹配查找过程,因此该算法的时间复杂度为O(|p|*|NS|),其中|p|为查询语句中基本查询表达式的规模,|NS|为NS文档中节点的规模。相对于现有的基于安全视图的访问控制方法,本发明方法的视图生成和信息查询的效率有了很大程度的提高。
本发明方法基于Schema技术实现,采用与XML相同的语法编写,无需特殊解析器,便于用户的学习和开发;支持数据类型和命名空间,能够创建领域内XML文档信息的共同描述,以形式化的方式保护数据通信,能够针对未来需求随意扩充功能,具有更好的可扩展性。
如图5所示,为本发明方法应用的XML Schema文档树示意图。将本发明方法应用于数控机床远程监控诊断平台中,提取其部分Schema原始文档,对安全视图生成算法和查询重写算法进行了实验测试。该文档树包括设备描述信息节点、连续数据流信息节点、离散事件流信息节点和属性信息节点,共177个标签节点,文档大小为25KB。
实验过程中,首先随机生成三种访问限定集合Nr、Nl、Nq,以模拟不同用户权限的建立,然后记录安全视图生成算法所耗费的时间,以及新生成Schema文件NS的大小,最后针对一个代表性的查询语句测试查询重写算法的执行时间。
如图6所示,为本发明方法中算法执行时间结果图。安全视图生成算法的平均耗时为3.96ms,查询重写算法的平均耗时为0.84ms,时间开销较小,能够满足***稳定运行的需求。其中,部分查询重写算法的耗时非常低,仅为0.1ms左右,这是因为该查询语句对于这些情况下生成的安全视图而言是非法的,从而在早期便终止了查询重写算法的执行。
如图7所示,为使用本发明方法所得的文档压缩率结果图。三种访问限定集合的定义约简了NS文件节点数量(NS文件对应的Sv文件更小),新文件所达平均压缩效果为27%左右,最大可达80%以上。因此,虽然本文所述方法存放安全文档需要占用一定的存储空间,但文档压缩率较高,空间耗费较少,不会对物理存储设备和网络传输造成大的负担,能够有效地提高XPath查询效率。
以上结果表明,本发明方法具有访问控制安全性强、视图生成和信息查询效率高、空间开销低、可扩展性好的优点,能够适用于数控机床远程监控诊断平台的安全访问控制领域,具有良好的应用前景。