法律状态公告日
法律状态信息
法律状态
2014-09-17
未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20121212 终止日期:20130727 申请日:20110727
专利权的终止
2012-12-12
授权
授权
2012-04-11
实质审查的生效 IPC(主分类):G06F17/30 申请日:20110727
实质审查的生效
2011-11-30
公开
公开
技术领域
针对非结构化数据管理系统的安全控制机制,设计一种基于XML技术的非 结构化数据XML访问控制方法。
背景技术
2001年,美国国家标准化和技术委员会(NIST)提出了标准的基于角色的 访问控制RBAC(Role-Based Access Control)参考模型NIST RBAC。该模型分 成核心RBAC、等级RBAC和约束RBAC三个子模型。核心RBAC定义了参考模型 的基本功能,它包括五个基本数据元素:用户(Users)、角色(Roles)、会话集 (Sessions)、客体(Objects)、操作(Operations),以及角色权限分配(PRA)、 用户角色分配(URA)。其基本思想是通过角色建立用户和访问权限之间的多对 多关系,用户由此获得访问权限。
XML Schema定义了XML文档的合法构建模块,它使用一系列合法的元素来 定义文档的结构,类似DTD(Document Type Definition,文档类型定义)。XML Schema本身是一个结构良好的XML文档,因此在XML Schema上进行访问授权, 而XML文档中的元素继承相应Schema元素的权限。
针对XML文档的层次结构,以Schema节点为客体,定义基于角色的XML 访问控制模型,即X-RBAC模型。
发明内容
本发明解决的技术问题:针对AUDR安全控制的需求,重点研究了在X-RBAC 模型的基础上,利用XML技术实施数据访问控制,实现了系统的安全控制机制。
本发明的技术方案是:一种本源XML数据库中XML文档的访问控制方法, 在X-RBAC模型的基础上,定义了XML访问控制系统的一种策略模型,给出了该 模型的一种策略结构,并设计了策略模型的一种策略决策方法及其效率改进方 案。其特征在于采用如下步骤:
(1)在基于角色的XML访问控制模型X-RBAC的基础上,建立XML访问控 制系统的策略模型;
(2)构建该模型的树形策略结构;
(3)策略结构采用XML文档的形式描述,将这些访问控制策略封装成一棵 策略子树,即把策略子树作为相应Schema节点的子树从而加入Schema文档中, 作出基于Schema文档的策略组织结构;
(4)当用户请求访问Schema文档中的某个节点时,访问控制系统首先需 要获取相关的访问控制策略,然后根据冲突解决机制进行策略决策,并生成该 节点,即节点子树的安全视图,最后系统根据安全视图控制用户对节点的访问 请求;
(5)实施策略决策。
所述的步骤(1)中所述策略模型中,访问控制规则表示为五元组 rule(roles,schema_node,action,permission,propagation);
(1.a)roles表示角色,为系统中角色集的一个子集,是访问控制策略的 主体;
(1.b)schema_node表示schema节点,包括元素节点和属性节点,不含 文本节点,本文以元素节点为访问控制保护的对象,属性节点的权限继承于相 应元素节点的权限,它是访问控制策略的客体,并采用XPath来描述;
(1.c)action表示行为,为主体对客体实施的操作,包括“read”、 “create”、“write”、“delete”,分别表示读、添加、更新及删除四种操 作;
(1.d)permission表示权限,为主体对客体执行某种操作的许可,取 “permit”、“deny”两种值,从而实现肯定授权和否定授权两种授权方式,访 问控制规则中,使用“+”、“-”两种符号sign来分别表示肯定授权或否定授权;
(1.e)propagation表示传播选项,为授权传播的深度,取值为“*”、“0” 或具体正整数“n”,实现三种传播方式:
“*”传播,即瀑布式传播,授权规则作用范围为自身节点及所有子节点;
“0”传播,即无传播,授权规则作用范围仅为自身节点,
“n”传播,n取值为正整数,授权规则作用范围为自身节点及深度小于等 于n的所有子节点。
所述的步骤(4)进一步包括:
请求用户的当前角色为guest,执行操作为read,访问节点为<node>,所 述<node>为target.xsd中的节点,则针对该节点子树的策略决策流程如下:
(4.a)读取Schema文档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)对标记树进行剪枝生成Schema节点子树的安全视图;为了保持 Schema结构及访问控制策略定义的灵活性,采用的剪枝原则为:剪去所有仅包 含否定节点的子树;
最后,XML文档中节点<node>及其子节点的访问权限由该Schema节点子 树的安全视图决定;如果安全视图中含有某个节点,则该节点允许访问,否则 不允许访问。
所述的步骤(5)实施策略决策,包括如下步骤:
(5.a)为系统中的每个角色分配一个唯一的素数ID;
(5.b)对于一个Schema文档,把所有角色同一种操作的标记树合为一个 新标记树,新标记树的每个节点仅记录一个整数,该整数为所有允许访问该节 点的角色ID之积;如果不存在允许访问的角色,则该整数为1;
(5.c)显然Schema节点记录的整数个数与操作个数相同,进一步把这些 整数封装成一个<number>元素节点,该节点的子节点为四种操作组成的子节点, 其值为相应的整数;
(5.d)把<number>元素节点作为相应Schema节点的子节点与其绑定后添 加到Schema文档中,从而实现新标记树的保存;
(5.e)新标记树中,如果节点某一操作的取值能被角色ID整除,则该角 色允许对该节点执行这个操作;否则不允许。
本发明的优点在于:用户每次请求访问XML文档中的节点时,访问控制系 统都需要根据决策流程进行策略决策。而该决策流程中的查找策略、生成标记 树、剪枝等操作都是非常耗时的过程,因此决策的时间较长。而且当访问请求 频繁时,访问控制系统的效率就会急剧下降,因此效率问题成为访问控制系统 的瓶颈问题。本发明提出一种保存标记树的方法,并对标记树进行压缩存储, 使策略决策时不必考虑查找策略、验证策略的操作,既可以减少存储空间又提 高了策略决策效率。
附图说明
图1为策略结构图;
图2为基于Schema的策略组织结构图;
图3(a)为角色admin的标记树图;图3(b)为角色guest的标记树图;
图4为记录角色的标记树图;
图5为记录权限字的标记树图;
图6为Schema文档的权限树图;
图7为策略模型实施流程图。
具体实施方式
下面参考附图,对本发明的实施例进行详细的说明。
首先对XML访问控制策略模型定义进行说明。在XML访问控制策略模型中, 访问控制规则表示为五元组rule(roles,schema_node,action,permission, propagation)。具体定义如下:
(1)roles表示角色,为系统中角色集的一个子集,是访问控制策略的主 体。
(2)schema_node表示schema节点,包括元素节点和属性节点,不含文 本节点。本文以元素节点为访问控制保护的对象,属性节点的权限继承于相应 元素节点的权限。它是访问控制策略的客体,并采用XPath来描述。
(3)action表示行为,为主体对客体实施的某种操作,包括“read”、 “create”、“write”、“delete”等,分别表示读、添加、更新及删除四种 操作。
(4)permission表示权限,为主体对客体执行某种操作的许可,取 “permit”、“deny”两种值,实现肯定授权和否定授权两种授权方式,并使用 “+”、“-”两种符号(sign)来表示。
(5)propagation表示传播选项,为授权传播的深度,取值为“*”、“0” 或具体正整数“n”,实现三种传播方式:
“*”传播,即瀑布式传播,授权规则作用范围为自身节点及所有子节点。
“0”传播,即无传播,授权规则作用范围仅为自身节点。
“n”传播,n取值为正整数,授权规则作用范围为自身节点及深度小于等 于n的所有子节点。
根据策略模型给出了一种策略结构,如图1所示(*表示0个或多个子节点, 表示属性节点)。
从图1可以看出,策略结构是一种层次结构,可以采用XML文档的形式描 述,有利于策略管理和决策。
访问控制规则的一个主要目的就是用来定义对客体的某种操作权限,而策 略模型中的客体是Schema节点,为此将定义在同一Schema节点上访问控制规 则组成一组访问控制策略,定义在不同Schema节点上的访问控制规则位于不同 的访问控制策略中。同时,将这些访问控制策略封装成一棵策略子树,融入 Schema文档中,即把策略子树作为相应Schema节点的子树从而加入Schema文 档中。
如图2所示,显示了基于Schema文档的策略组织结构。其中,节点 <basicfeature>的子节点<policy>详细的给出了策略子树的结构,其他 <policy>节点的结构与其相同。为简单起见,图2中的使用<policy>元素代替 策略子树。
当用户请求访问Schema文档中的某个节点时,访问控制系统首先需要获取 相关的访问控制策略,然后根据冲突解决机制进行策略决策,并生成该节点(即 节点子树)的安全视图,最后系统根据安全视图控制用户对节点的访问请求。 假设请求用户的当前角色为guest,执行操作为read,访问节点为<node> (target.xsd中的节点),则针对该节点子树的一般策略决策流程如下:
(a)读取Schema文档target.xsd中以节点<node>为根的整个子树,并将 其解析为Document Object Model树,即DOM树;
(b)获取当前子树的根节点root,并读取该节点及其祖先节点上定义的 所有策略;
(c)从步骤(b)获得的所有策略中,获得与当前角色guest和操作read 相关的策略policy;
(d)如果获得的策略policy为空,则根据系统定义的默认策略,为root 节点添加否定标记“-”;否则,根据策略传播及冲突解决机制,对节点应用该 获得的策略;如果结果为“permit”,为节点添加肯定标记“+”,否则添加否定 标记“-”;
(e)如果root节点有子节点,以每个子节点为一颗子树返回(b)遍历; 否则结束遍历,并生成带“+”、“-”标记的标记树Label Tree;
(f)对标记树进行剪枝生成Schema节点子树的安全视图;为了保持Schema 结构及访问控制策略定义的灵活性,采用的剪枝原则为:剪去所有仅包含否定 节点的子树;
最后,XML文档中节点<node>及其子节点的访问权限由该Schema节点子 树的安全视图决定;如果安全视图中含有某个节点,则该节点允许访问,否则 不允许访问。
显然,用户每次请求访问XML文档中的节点时,访问控制系统都需要根据 上述决策流程进行策略决策。而该决策流程中的查找策略、生成标记树、剪枝 等操作都是非常耗时的过程,因此决策的时间较长。而且当访问请求频繁时, 访问控制系统的效率就会急剧下降,因此效率问题成为访问控制系统的瓶颈问 题。
一种解决思想是以空间效率换取时间效率。然而保存Schema文档树的安全 视图方法是不可行的,因为Schema文档对不同角色的不同操作的安全视图不 同,因此安全视图数量庞大不易存储。而且策略更新及角色变化时,安全视图 的更新工作量也较大,不易于策略管理。此外不同的应用系统中的剪枝原则不 一定相同,因此保存安全视图的方法也不利于策略模型的推广应用。
本发明设计了一种压缩保存标记树的方法,既可以减少存储空间又提高了 策略决策效率。下面以一个具体实例说明该方法。首先假设系统中只有admin 和guest两个角色,根据系统中定义的访问控制策略,针对read操作和Schema 文档树执行上述策略决策流程,得到两个标记树如图3所示。
进一步考虑合并角色admin和guest的标记树,采用每个节点仅保存允许 访问角色的方法,则标记树可以合并为如图4所示的标记树,对于两个角色都 不允许访问的节点,标记为空。
最后,为系统中的每个角色分配一个唯一的素数I D(例如admin的ID为2、 guest的ID为3),则节点可以仅保存允许访问角色ID的乘积,如果节点不允 许任何角色访问,该节点取默认值1,如图5所示。从而每个节点都记录了一 个正整数,称为该节点的权限字,如果节点上的权限字能被角色的ID整除,则 表示允许角色访问该节点,否则不允许访问该节点。
显然,Schema节点记录的权限字个数与操作个数相同,进一步把这些权限 字封装成一个<number>元素节点。该节点的子节点为四种操作组成的子节点, 其值为相应的权限字(如:<read>6</read>)。然后,把<number>元素节点作为 相应Schema节点的子节点与其绑定后添加到Schema文档中,形成Schema文档 的权限树,如图6所示。其中,详细给出了节点<basicfeature>的<number>子 树结构,其他节点的<number>子树结构与其相同。
保存标记树的优点可以归结为如下三点:
(1)存储空间小:只需在Schema节点添加<number>子节点即可,而且实 现了Schema文档、策略和标记树的一起存储。
(2)更新简单:当策略更新时,只需读取相关节点子树及涉及到的角色和 操作,更新<number>元素即可。
(3)改善了决策效率:当用户请求访问系统资源时,访问控制系统只需读 取相应Schema节点的标记树,然后根据权限值判定及剪枝原则,进行剪枝生成 安全视图即可。
机译: 在XML数据库中存储非XML文档的方法,服务器扩展和数据库管理系统
机译: 将非xml文档存储在xml数据库中的方法和管理系统servererweiterung
机译: 在XML数据库中存储非XML文档的方法,服务器扩展和数据库管理系统