一种本源xml数据库中xml文档的访问控制方法

文档序号:6429576阅读:122来源:国知局
专利名称:一种本源xml数据库中xml文档的访问控制方法
技术领域
针对非结构化数据管理系统的安全控制机制,设计一种基于XML技术的非结构化数据XML访问控制方法。
背景技术
2001年,美国国家标准化和技术委员会(NIST)提出了标准的基于角色的访问控制 RBAC(Role-Based Access Control)参考模型 NIST RBAC0 该模型分成核心 RBAC、 等级RBAC和约束RBAC三个子模型。核心RBAC定义了参考模型的基本功能,它包括五个基本数据元素用户(Users)、角色(Roles)、会话集Cessions)、客体(Objects)、操作 (Operations),以及角色权限分配(PRA)、用户角色分配(URA)。其基本思想是通过角色建立用户和访问权限之间的多对多关系,用户由此获得访问权限。XML Schema定义了 XML文档的合法构建模块,它使用一系列合法的元素来定义文档的结构,类似DTD (Document Type Def inition,文档类型定义)。XML Schema本身是一个结构良好的XML文档,因此在XML Schema上进行访问授权,而XML文档中的元素继承相应 Schema元素的权限。针对XML文档的层次结构,以khema节点为客体,定义基于角色的XML访问控制模型,即X-RBAC模型。

发明内容
本发明解决的技术问题针对AUDR安全控制的需求,重点研究了在X-RBAC模型的基础上,利用XML技术实施数据访问控制,实现了系统的安全控制机制。本发明的技术方案是一种本源XML数据库中XML文档的访问控制方法,在 X-RBAC模型的基础上,定义了 XML访问控制系统的一种策略模型,给出了该模型的一种策略结构,并设计了策略模型的一种策略决策方法及其效率改进方案。其特征在于采用如下步骤(1)在基于角色的XML访问控制模型X-RBAC的基础上,建立XML访问控制系统的策略模型;(2)构建该模型的树形策略结构;(3)策略结构采用XML文档的形式描述,将这些访问控制策略封装成一棵策略子树,即把策略子树作为相应khema节点的子树从而加入khema文档中,作出基于khema 文档的策略组织结构;(4)当用户请求访问khema文档中的某个节点时,访问控制系统首先需要获取相关的访问控制策略,然后根据冲突解决机制进行策略决策,并生成该节点,即节点子树的安全视图,最后系统根据安全视图控制用户对节点的访问请求;(5)实施策略决策。所述的步骤(1)中所述策略模型中,访问控制规则表示为五元组rule (roles,schema—node,action, permission, propagation);(l.a)roleS表示角色,为系统中角色集的一个子集,是访问控制策略的主体;(l.b)schema_node表示schema节点,包括元素节点和属性节点,不含文本节点, 本文以元素节点为访问控制保护的对象,属性节点的权限继承于相应元素节点的权限,它是访问控制策略的客体,并采用XPath来描述;(1. c) action表示行为,为主体对客体实施的操作,包括“read”、“create”、 “Write”、“delete”,分别表示读、添加、更新及删除四种操作;(l.cOpermission表示权限,为主体对客体执行某种操作的许可,取“permit”、 “deny”两种值,从而实现肯定授权和否定授权两种授权方式,访问控制规则中,使用“ + ”、 “_”两种符号sign来分别表示肯定授权或否定授权;(1. e)propagation表示传播选项,为授权传播的深度,取值为“*”、“0”或具体正整数“n”,实现三种传播方式“*”传播,即瀑布式传播,授权规则作用范围为自身节点及所有子节点;“0”传播,即无传播,授权规则作用范围仅为自身节点,“η”传播,η取值为正整数,授权规则作用范围为自身节点及深度小于等于η的所有子节点。所述的步骤(4)进一步包括请求用户的当前角色为guest,执行操作为read,访问节点为〈node〉,所述〈node〉 为target, xsd中的节点,则针对该节点子树的策略决策流程如下(4. a)读取khema文档target, xsd中以节点〈node〉为根的整个子树,并将其解析为 Document Object Model 树,艮口 DOM 树;(4. b)获取当前子树的根节点root,并读取该节点及其祖先节点上定义的所有策略;(4. c)从步骤(4.b)获得的所有策略中,获得与当前角色guest和操作read相关的策略policy ;(4. d)如果获得的策略policy为空,则根据系统定义的默认策略,为root节点添加否定标记“_”;否则,根据策略传播及冲突解决机制,对节点应用该获得的策略;如果结果为“permit”,为节点添加肯定标记“ + ”,否则添加否定标记“_” ;(4. e)如果root节点有子节点,以每个子节点为一颗子树返回(4. b)遍历;否则结束遍历,并生成带“ + ”、“_”标记的标记树Label Tree ;(4. f)对标记树进行剪枝生成khema节点子树的安全视图;为了保持khema结构及访问控制策略定义的灵活性,采用的剪枝原则为剪去所有仅包含否定节点的子树;最后,XML文档中节点〈node〉及其子节点的访问权限由该khema节点子树的安全视图决定;如果安全视图中含有某个节点,则该节点允许访问,否则不允许访问。所述的步骤(5)实施策略决策,包括如下步骤(5. a)为系统中的每个角色分配一个唯一的素数ID ;(5. b)对于一个khema文档,把所有角色同一种操作的标记树合为一个新标记树,新标记树的每个节点仅记录一个整数,该整数为所有允许访问该节点的角色ID之积; 如果不存在允许访问的角色,则该整数为1 ;
(5. c)显然khema节点记录的整数个数与操作个数相同,进一步把这些整数封装成一个〈number〉元素节点,该节点的子节点为四种操作组成的子节点,其值为相应的整数;(5. d)把〈number〉元素节点作为相应khema节点的子节点与其绑定后添加到 Schema文档中,从而实现新标记树的保存;(5. e)新标记树中,如果节点某一操作的取值能被角色ID整除,则该角色允许对该节点执行这个操作;否则不允许。本发明的优点在于用户每次请求访问XML文档中的节点时,访问控制系统都需要根据决策流程进行策略决策。而该决策流程中的查找策略、生成标记树、剪枝等操作都是非常耗时的过程,因此决策的时间较长。而且当访问请求频繁时,访问控制系统的效率就会急剧下降,因此效率问题成为访问控制系统的瓶颈问题。本发明提出一种保存标记树的方法,并对标记树进行压缩存储,使策略决策时不必考虑查找策略、验证策略的操作,既可以减少存储空间又提高了策略决策效率。


图1为策略结构图;图2为基于khema的策略组织结构图;图3 (a)为角色admin的标记树图;图3 (b)为角色guest的标记树图;图4为记录角色的标记树图;图5为记录权限字的标记树图;图6为khema文档的权限树图;图7为策略模型实施流程图。
具体实施例方式下面参考附图,对本发明的实施例进行详细的说明。首先对XML访问控制策略模型定义进行说明。在XML访问控制策略模型中,访问控制规贝1J表不为五兀组 rule (roles, schema_node, action, permission, propagation)。具体定义如下(Droles表示角色,为系统中角色集的一个子集,是访问控制策略的主体。(2) schema_node表示schema节点,包括元素节点和属性节点,不含文本节点。本文以元素节点为访问控制保护的对象,属性节点的权限继承于相应元素节点的权限。它是访问控制策略的客体,并采用XPath来描述。(3) action表示行为,为主体对客体实施的某种操作,包括“read”、“create,,、 “Write”、“delete”等,分别表示读、添加、更新及删除四种操作。(4) permi ss ion表示权限,为主体对客体执行某种操作的许可,取“ permi t ”、 “deny”两种值,实现肯定授权和否定授权两种授权方式,并使用“ + ”、“-”两种符号(sign)
来表不。(5) propagation表示传播选项,为授权传播的深度,取值为“*”、“0”或具体正整数“n”,实现三种传播方式
“*”传播,即瀑布式传播,授权规则作用范围为自身节点及所有子节点。“0”传播,即无传播,授权规则作用范围仅为自身节点。“η”传播,η取值为正整数,授权规则作用范围为自身节点及深度小于等于η的所有子节点。根据策略模型给出了一种策略结构,如图1所示(*表示0个或多个子节点,@表示属性节点)。从图1可以看出,策略结构是一种层次结构,可以采用XML文档的形式描述,有利于策略管理和决策。访问控制规则的一个主要目的就是用来定义对客体的某种操作权限,而策略模型中的客体是khema节点,为此将定义在同一 khema节点上访问控制规则组成一组访问控制策略,定义在不节点上的访问控制规则位于不同的访问控制策略中。同时, 将这些访问控制策略封装成一棵策略子树,融入khema文档中,即把策略子树作为相应 Schema节点的子树从而加入khema文档中。如图2所示,显示了基于khema文档的策略组织结构。其中,节点〈basicfeature〉 的子节点〈policy〉详细的给出了策略子树的结构,其他〈policy〉节点的结构与其相同。为简单起见,图2中的使用〈policy〉元素代替策略子树。当用户请求访文档中的某个节点时,访问控制系统首先需要获取相关的访问控制策略,然后根据冲突解决机制进行策略决策,并生成该节点(即节点子树)的安全视图,最后系统根据安全视图控制用户对节点的访问请求。假设请求用户的当前角色为 guest,执行操作为read,访问节点为〈node〉(target, xsd中的节点),则针对该节点子树的一般策略决策流程如下(a)读取khema文档target, xsd中以节点〈node〉为根的整个子树,并将其解析为 Document Object Model 树,艮口 DOM 树;(b)获取当前子树的根节点root,并读取该节点及其祖先节点上定义的所有策略;(c)从步骤(b)获得的所有策略中,获得与当前角色guest和操作read相关的策略policy ;(d)如果获得的策略policy为空,则根据系统定义的默认策略,为root节点添加否定标记“_”;否则,根据策略传播及冲突解决机制,对节点应用该获得的策略;如果结果为 “permit”,为节点添加肯定标记“ + ”,否则添加否定标记“-”;(e)如果root节点有子节点,以每个子节点为一颗子树返回(b)遍历;否则结束遍历,并生成带“ + ”、“_”标记的标记树Label Tree ;(f)对标记树进行剪枝生成khema节点子树的安全视图;为了保持khema结构及访问控制策略定义的灵活性,采用的剪枝原则为剪去所有仅包含否定节点的子树;最后,XML文档中节点〈node〉及其子节点的访问权限由该khema节点子树的安全视图决定;如果安全视图中含有某个节点,则该节点允许访问,否则不允许访问。显然,用户每次请求访问XML文档中的节点时,访问控制系统都需要根据上述决策流程进行策略决策。而该决策流程中的查找策略、生成标记树、剪枝等操作都是非常耗时的过程,因此决策的时间较长。而且当访问请求频繁时,访问控制系统的效率就会急剧下降,因此效率问题成为访问控制系统的瓶颈问题。一种解决思想是以空间效率换取时间效率。然而保存khema文档树的安全视图方法是不可行的,因为khema文档对不同角色的不同操作的安全视图不同,因此安全视图数量庞大不易存储。而且策略更新及角色变化时,安全视图的更新工作量也较大,不易于策略管理。此外不同的应用系统中的剪枝原则不一定相同,因此保存安全视图的方法也不利于策略模型的推广应用。本发明设计了一种压缩保存标记树的方法,既可以减少存储空间又提高了策略决策效率。下面以一个具体实例说明该方法。首先假设系统中只有admin和guest两个角色, 根据系统中定义的访问控制策略,针对read操作和khema文档树执行上述策略决策流程, 得到两个标记树如图3所示。进一步考虑合并角色admin和guest的标记树,采用每个节点仅保存允许访问角色的方法,则标记树可以合并为如图4所示的标记树,对于两个角色都不允许访问的节点, 标记为空。最后,为系统中的每个角色分配一个唯一的素数I D (例如admin的ID为2、guest 的ID为3),则节点可以仅保存允许访问角色ID的乘积,如果节点不允许任何角色访问,该节点取默认值1,如图5所示。从而每个节点都记录了一个正整数,称为该节点的权限字,如果节点上的权限字能被角色的ID整除,则表示允许角色访问该节点,否则不允许访问该节
点ο显然,khema节点记录的权限字个数与操作个数相同,进一步把这些权限字封装成一个〈number〉元素节点。该节点的子节点为四种操作组成的子节点,其值为相应的权限字(如<read>6</read>)。然后,把〈number〉元素节点作为相应khema节点的子节点与其绑定后添加到khema文档中,形成khema文档的权限树,如图6所示。其中,详细给出了节点<basicfeature>的〈number〉子树结构,其他节点的〈number〉子树结构与其相同。保存标记树的优点可以归结为如下三点(1)存储空间小只需在khema节点添加〈number〉子节点即可,而且实现了 Schema文档、策略和标记树的一起存储。(2)更新简单当策略更新时,只需读取相关节点子树及涉及到的角色和操作,更新〈number〉元素艮口可。(3)改善了决策效率当用户请求访问系统资源时,访问控制系统只需读取相应 khema节点的标记树,然后根据权限值判定及剪枝原则,进行剪枝生成安全视图即可。
权利要求
1.一种本源XML数据库中XML文档的访问控制方法,其特征在于采用如下步骤(1)在基于角色的XML访问控制模型X-RBAC的基础上,建立XML访问控制系统的策略模型;(2)构建该模型的树形策略结构;(3)策略结构采用XML文档的形式描述,将这些访问控制策略封装成一棵策略子树,即把策略子树作为相应khema节点的子树从而加入khema文档中,作出基于khema文档的策略组织结构;(4)当用户请求访问khema文档中的某个节点时,访问控制系统首先需要获取相关的访问控制策略,然后根据冲突解决机制进行策略决策,并生成该节点,即节点子树的安全视图,最后系统根据安全视图控制用户对节点的访问请求;(5)实施该策略决策。
2.根据权利要求1所述的本源XML数据库中XML文档的访问控制方法,其特征在于 所述步骤(1)中的策略模型中,访问控制规则表示为五元组rule (roles,schema_node, action, permission,propagation)(1. a)r0leS表示角色,为系统中角色集的一个子集,是访问控制策略的主体; (l.b)schema_node表示schema节点,包括元素节点和属性节点,不含文本节点,本文以元素节点为访问控制保护的对象,属性节点的权限继承于相应元素节点的权限,它是访问控制策略的客体,并采用XPath来描述;(1. (3)3(^丨011表示行为,为主体对客体实施的操作,包括“仪3(1”、“(3仪3{6”、 1^6”、 “delete”,分别表示读、添加、更新及删除四种操作;(l.d)permission表示权限,为主体对客体执行某种操作的许可,取“permit”、“deny” 两种值,从而实现肯定授权和否定授权两种授权方式,访问控制规则中,使用“ + ”、“-”两种符号sign来分别表示肯定授权或否定授权;(l.ebropagation表示传播选项,为授权传播的深度,取值为“*”、“0”或具体正整数 “n”,实现三种传播方式“*”传播,即瀑布式传播,授权规则作用范围为自身节点及所有子节点; “0”传播,即无传播,授权规则作用范围仅为自身节点,“η”传播,η取值为正整数,授权规则作用范围为自身节点及深度小于等于η的所有子节点。
3.根据权利要求1所述的本源XML数据库中XML文档的访问控制方法,其特征在于 所述的步骤(4)进一步包括请求用户的当前角色为guest,执行操作为read,访问节点为〈node〉,所述〈node〉为 target, xsd中的节点,则针对该节点子树的策略决策流程如下(4. a)读取khema文档target, xsd中以节点〈node〉为根的整个子树,并将其解析为 Document Object Model 树,艮口 DOM 树;(4. b)获取当前子树的根节点root,并读取该节点及其祖先节点上定义的所有策略; (4. c)从步骤(4.b)获得的所有策略中,获得与当前角色guest和操作read相关的策略policy ;(4. d)如果获得的策略policy为空,则根据系统定义的默认策略,为root节点添加否定标记“_” ;否则,根据策略传播及冲突解决机制,对节点应用该获得的策略;如果结果为 "permit",为节点添加肯定标记“ + ”,否则添加否定标记“_” ;(4. e)如果root节点有子节点,以每个子节点为一颗子树返回(4. b)遍历;否则结束遍历,并生成带“ + ”、“_”标记的标记树Label Tree ;(4. f)对标记树进行剪枝生成khema节点子树的安全视图;为了保持khema结构及访问控制策略定义的灵活性,采用的剪枝原则为剪去所有仅包含否定节点的子树;最后,XML文档中节点〈node〉及其子节点的访问权限由该khema节点子树的安全视图决定;如果安全视图中含有某个节点,则该节点允许访问,否则不允许访问。
4.根据权利要求1所述的本源XML数据库中XML文档的访问控制方法,其特征在于 所述的步骤(5)实施该策略决策,包括如下步骤(5. a)为系统中的每个角色分配一个唯一的素数ID ;(5. b)对于一个khema文档,把所有角色同一种操作的标记树合为一个新标记树,新标记树的每个节点仅记录一个整数,该整数为所有允许访问该节点的角色ID之积;如果不存在允许访问的角色,则该整数为1 ;(5. c)显然khema节点记录的整数个数与操作个数相同,进一步把这些整数封装成一个〈number〉元素节点,该〈number〉元素节点的子节点为四种操作组成的子节点,其值为相应的整数;(5. d)把〈number〉元素节点作为相应khema节点的子节点与其绑定后添加到khema 文档中,从而实现新标记树的保存;(5. e)新标记树中,如果节点某一操作的取值能被角色ID整除,则该角色允许对该节点执行这个操作;否则不允许。
全文摘要
一种本源XML数据库中XML文档的访问控制方法(1)在X-RBAC模型的基础上,定义了XML访问控制系统的一种策略模型;(2)给出了该模型的一种树形策略结构;(3)策略结构可以采用XML文档的形式描述,将这些访问控制策略封装成一棵策略子树;(4)在此基础上提出了一种有效策略决策算法,根据访问控制策略为特定的用户或角色生成Schema文档中某个节点子树的安全视图;(5)对策略决策实施效率提出改进方案,设计了一种压缩保存标记树的方法,既可以减少存储空间又提高了策略决策效率。
文档编号G06F21/22GK102262667SQ20111021283
公开日2011年11月30日 申请日期2011年7月27日 优先权日2011年7月27日
发明者张然, 郎波 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1