专利名称:访问控制策略生成方法及装置的制作方法
技术领域:
本发明涉及访问控制技术,特别涉及一种访问控制策略生成方法及装置,属于网
络应用领域。
背景技术:
为了保证网络具有足够的安全性,国际标准化组织I SO在其网络安全体系的设 计标准(IS07498-2)中,定义了五大安全服务功能,包括身份认证服务、访问控制服务、 数据保密服务、数据完整性服务以及不可否认服务。其中,访问控制服务是针对越权使用 资源的防御措施,用于防止用户在未授权的情况下对各种资源的随意访问,从而使计算机 系统能够在合法的范围内被使用。访问控制可以有效的阻止非法用户对系统资源的访 问,以及合法用户对系统资源的非法访问。现有的访问控制策略主要包括自主访问控制 (Discretionary Access Control,以下简称DAC)策略、强制访问控制(Mandatoty Access Control,以下简称MAC)策略,基于标识的访问控制(Identity Based Access Control,以 下简称IBAC)策略和基于角色的访问控制(Role Based Access Control,以下简称RBAC) 策略。 上述传统的访问控制策略虽然能够适用于不同的领域,但本质上都是封闭式的, 不支持对系统未定义用户的授权,因此,上述访问控制策略均不具备足够的灵活性和可扩 展性。例如,为解决面向服务的体系结构(Service-Oriented Architecture,以下简称 S0A)环境下访问控制的问题,可以利用RBAC策略为S0A构建安全体系。但由于RBAC仅仅 将用户的功能或职责属性定义为角色,未考虑用户的其它属性,并且RBAC未考虑用户访问 的客体的除标识之外的其它属性以及与SOA环境相关的安全属性,所以其难以适用于多种 商业应用场景。为解决现有的访问控制策略灵活性和可扩展性差的问题,基于属性的访问 控制(Attribute Based Access control,以下简称ABAC)策略被提出,ABAC是基于IBAC 和RBAC中策略定义标识或角色的局限性而做出扩展和改进,其基本思想是基于主体,资 源或者可操作上下文的相关属性进行策略定义。在访问控制的范畴内,一般会考虑到基于 主体、资源(即客体)、授权、环境这四种实体属性进行策略定义,换言之,四种实体属性可 包括主体属性、资源属性、授权属性和环境属性,并且ABAC策略可以基于任意的主体、资源 或环境属性的组合来定义策略。与传统的访问控制策略不同,ABAC策略基于请求者的属性 对其访问进行授权,不需要预先定义用户,因此具有很好的灵活性和动态可扩展性。所以相 比于IBAC策略和RBAC策略,ABAC策略具有更加丰富的语义,能够提供更加细粒度的访问 控制。 针对ABAC的规范问题,高级结构化信息标准组织(Organization for theAdvancement of Structured Information Standards,以下简禾尔0ASIS)提出了二个 标准,包括安全断言标记语言(Security Assertion Mark卯Language,以下简称SAML) 禾口可J广展i方问控制t示记i吾言(extensible AccessControl Markup Language, XACML)。其 中XACML标准对ABAC提供了良好的支持, 一方面,它为ABAC策略提出了一个访问控制框架,定义了参与访问控制的执行流程的关键实体及各实体之间的交互关系;另一方面,它定 义了一种基于XML的访问控制策略定义语言,可以描述多种访问控制策略。XACML在策略 定义、策略索引以及策略组织方面给出了良好的解决方法;该标准还给出了策略定义时的 各种实体可参考属性,用于定义策略的常用数据类型和能够施加于常用数据之上的常用函 数,为策略定义提供了很好的基础设施。除此之外,XACML还定义了用于策略执行点接受请 求和给与应答的标准XML格式,这对于异构的系统间实现访问控制提供了很好的支持。因 此,XACML被公认为是一种可以对ABAC策略进行准确而全面描述的标准,利用XACML进行 表达的ABAC策略(即基于XACML的ABAC策略)具有很强的实用性。
但基于XACML的ABAC策略也存在如下问题XACML作为一种特定的XML规范,虽 然其可以实现对ABAC策略准确的描述,但基于XACML的ABAC策略语法复杂、语句冗长,当 用户定义基于XACML的ABAC策略时,需要首先理解XACML的描述方法并通过人工方式写出 复杂的基于XACML进行表达的ABAC策略,这对于用户来讲难以掌握和应用,导致了用户难 于定义基于XACML的ABAC策略;并且在用户定义基于XACML的ABAC策略时,通过人工方式 写出复杂的基于XACML的ABAC策略过程中容易出现错误。
发明内容
本发明的目的是针对现有技术中存在的问题,提出一种访问控制策略生成方法及
装置,从而解决现有技术中用户难于定义基于XACML的ABAC策略以及通过人工方式写出复
杂的基于XACML的ABAC策略过程中容易出现错误的问题。 为实现上述目的,本发明提供了一种访问控制策略生成方法,包括 根据用户通过预先建立的基于属性的访问控制ABAC策略视图模板输入的ABAC策
略信息,生成ABAC策略表达式; 根据预先设置的ABAC策略视图模板与可扩展访问控制标记语言XACML模板之间 的映射规则,将所述ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。
为实现上述目的,本发明还提供了一种访问控制策略生成装置,包括
生成模块,用于根据用户通过预先建立的ABAC策略视图模板输入的ABAC策略信 息,生成ABAC策略表达式; 转换模块,用于根据预先设置的ABAC策略视图模板与XACML模板之间的映射规 则,将所述ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。
本发明的技术方案中根据输入的ABAC策略信息生成ABAC策略表达式,再通过设 置的映射规则将ABAC策略表达式自动转换成基于XACML的ABAC策略,在此过程中用户只 需通过ABAC策略视图模板输入一些简单的ABAC策略信息,无需以人工方式写出复杂的基 于XACML的ABAC策略,减轻了用户的负担,便于用户理解和操作,从而解决了用户难于定义 基于XACML的ABAC策略的问题;同时由于基于XACML的ABAC策略是自动生成的,避免了用 户以人工方式写出复杂的基于XACML的ABAC策略过程中容易出现错误的问题,从而保证了 基于XACML的ABAC策略的准确性。 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明访问控制策略生成方法实施例一的流程图; 图2为本发明访问控制策略生成方法实施例二的流程图; 图3为本发明ABAC策略视图模板的结构示意图; 图4为本发明XACML模板的结构示意图; 图5为本发明XACML模板的整体结构示意图; 图6为本发明ABAC策略视图模板与XACML模板之间的映射规则的结构示意图; 图7为本发明将ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策 略的方法的流程图; 图8为本发明实体约束表达式转换成XACML策略模板中元素的示意图; 图9为本发明原子约束表达式转换为XACML模板〈A卯ly〉的流程图; 图10为本发明原子约束表达式转换成的XACML策略模板中元素的示意图; 图11为本发明复合约束表达式的多叉树的结构示意图; 图12为本发明多叉树转换成的XACML策略模板中元素的示意图; 图13为本发明访问控制装置实施例一的结构示意图; 图14为本发明访问控制装置实施例二的结构示意图。
具体实施例方式
图1为本发明访问控制策略生成方法实施例一的流程图,如图1所示,该方法包 括 步骤101、根据用户通过预先建立的ABAC策略视图模板输入的ABAC策略信息,生 成ABAC策略表达式; 步骤102、根据预先设置的ABAC策略视图模板与XACML模板之间的映射规则,将 ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。 本实施例的技术方案中根据输入的ABAC策略信息生成ABAC策略表达式,再通过 设置的映射规则将ABAC策略表达式自动转换成基于XACML的ABAC策略,在此过程中用户 只需通过ABAC策略视图模板输入一些简单的ABAC策略信息,无需以人工方式写出复杂的 基于XACML的ABAC策略,减轻了用户的负担,便于用户理解和操作,从而解决了用户难于定 义基于XACML的ABAC策略的问题;同时由于该方法中基于XACML的ABAC策略是自动生成 的,避免了用户以人工方式写出复杂的基于XACML的ABAC策略过程中容易出现错误的问 题,从而保证了基于XACML的ABAC策略的准确性。 图2为本发明访问控制策略生成方法实施例二的流程图,如图2所示,
步骤201、建立ABAC策略视图模板; ABAC策略视图模板是直接面向用户的ABAC策略表达,用户可以通过该ABAC策略 视图模板输入ABAC策略信息。实际操作中,ABAC策略视图模板可以向用户提供一个进行策 略定义的视图界面,用户可以根据该视图界面的提示输入自己所需的ABAC策略信息,从而 完成对ABAC策略的定义。图3为本发明ABAC策略视图模板的结构示意图,如图3所示,由 于XACML模板在结构上具有树状结构的特征,所以ABAC策略视图模板也是以树状结构表示 的,树状结构是以节点的形式组织属性定义和策略定义中的各个元素。ABAC策略视图模板
6可包括属性定义和策略定义二个部分,属性定义可包括主体属性集、资源属性集、授权属性 集和环境属性集四种实体属性集。每个实体属性集均包括多个实体属性,即多个原子属性。 策略定义可包括若干策略,每个策略包括若干规则,每条规则均可包括主体约束集、资源约 束集、授权约束集和环境约束集四种实体约束集。每个实体约束集均可包括多个实体约束, 即多个原子约束和多个复合约束。用户可以通过定义各类实体属性集下包括的原子属性进 行属性定义,即定义实体约束中要使用的原子属性;用户还可以通过定义各个实体约束集 包括的原子约束和/或复合约束进行安全策略的定义。其中,原子约束还可称为简单约束 (Simple Rule,简称SR),其可以通过例如(属性,操作符,属性值)表达式或者(属性,操 作符,属性)表达式来表示;复合约束(Complex Rule,简称CR)为各原子约束的任意的逻 辑复合,例如al、a2和a3为三个原子约束表达式,则al and(a2 or a3)即为一条复合约束 表达式。采用树状结构组织ABAC策略视图模板,对于用户来说易于理解、便于操作,并且可 以使ABAC策略视图模板中的元素与XACML模板中的元素实现完全映射以保证从ABAC策略 表达式到基于XACML的ABAC策略转换的顺利进行。
步骤202 、建立XACML模板; 本实施例中可以利用XACML标准中定义的38种元素对ABAC策略进行描述,从而 生成基于XACML的ABAC策略。例如,其常用的元素包括〈Policy〉(策略)、〈Rule〉(规则)、 〈Target〉(目标)、〈A卯ly〉(请求)、〈Condition〉(条件)等,实际应用中,可以根据需要 利用XACML定义的元素中的其它元素对ABAC策略进行描述。图4为本发明XACML模板的 结构示意图,如图4所示,XACML模板为树状结构,图4的XACML模板中仅列出了一些外层 的元素,例如图4中的〈Policy〉、〈Rule〉、〈Target〉、〈A卯ly〉以及〈Condition〉元素,其中 〈Policy〉和〈Rule〉为XACML模板的二种顶层元素,而内层的元素在此没有详细列出,并且 该XACML模板仅为一种示例,不能成为对本发明技术方案的限制。 其中,〈Target〉本质上是一个布尔表达式,其固定元素结构表达了一种固定 的逻辑关系。〈Target〉可中以包括四个实体元素集合,分别是〈Sub jects〉(主体)、 〈Resources〉(资源)、〈Actions〉(授权)禾口 〈Enviro騰nts〉(环境),每一个实体元素 集合中可以包含一个或多个相应的实体元素,例如,〈Subjects〉中可以包括一个或多个 〈Subject〉、 〈Resource〉中可以包括一个或多个〈Resource〉、 〈Action〉中可以包括一个或 多个〈Action〉以及〈Environment〉中可以包括一个或多个〈Environment〉。上述每一个实 体元素还可以包括一个或多个相应的实体匹配元素,分别是〈SubjectMatch〉(主体匹配)、 〈ResourceMatch〉(资源匹配)、〈ActionMatch〉(授权匹配)禾口 〈Enviro騰ntMatch〉(环境 匹配)。上述〈Target〉中的元素用于描述具体的ABAC策略,因图4仅为XACML模板的示意 图,所以上述〈Target〉中的元素在图4中未示出。 〈Condition〉本质上也是一个布尔表达式,用来表示资源访问请求应满足的约束 条件。当某一请求通过〈Rule〉中〈Target〉的评估,如果该〈Rule〉中〈Condition〉存在, 则使用〈Condition〉进行进一步的计算。 〈Target〉与〈Condition〉的区别在于〈Target〉具有固定的元素结构和计算逻 辑,〈Condition〉虽然不具备上述特点,但是它更加灵活,策略编写者甚至可以使用各种元 素在〈Condition〉中构造和〈Target〉相同的结构;〈Target〉中最终表达的是一种属性值 与属性间的简单匹配关系,这是因为〈Target〉的作用是索引,考虑到效率问题,其匹配关系不能定义的过于复杂,而在〈Condition〉中,可以定义更加复杂的匹配关系,比如可以在 表达式中的属性值、属性和子表达式中任取二种以构造具有实际意义的匹配关系。
为进一步说明XACML模板中的各种元素,可参见图5,图5为本发明XACML模板的 整体结构示意图。 一条策略〈Policy〉中必须包含一个目标〈Target〉元素,用于在策略查 找的过程中,确定策略是否适合用于对指定的请求进行访问控制。 一条策略中可以包含0 条、1条或多条规则〈Rule〉,策略中提供了标准的规则组合算法来处理多条规则对同一请 求进行评估时出现的冲突,其中当策略中包含0条规则时表示该条策略不对访问请求进行 控制。规则是表达访问控制策略语义的最小元素,包括实体约束,实体约束的逻辑表达式构 成条件〈Condition〉,该条件用来对请求进行评估,以便于使规则给出决策结果。规则不能 独立存在,它必须被封装在某条策略中。基于XACML的ABAC策略中的规则主要在〈Target〉 或〈Condition〉元素中定义。 步骤203、设置ABAC策略视图模板与XACML模板之间的映射规则;
设置的ABAC策略视图模板与XACML模板之间的映射规则要符合以下原则保证 ABAC策略表达式转换成基于XACML的ABAC策略过程中,ABAC策略表达式中的各个实体约 束不丢失,以及各实体约束间的逻辑关系不改变。 在上述原则下,设置的ABAC策略视图模板与XACML模板之间的映射规则可以如图 6所示,图6为本发明ABAC策略视图模板与XACML模板之间的映射规则的结构示意图。ABAC 策略视图模板与XACML模板之间的映射规则可包括以下二个部分ABAC策略视图模板中实 体属性集与XACML模板中元素之间的映射以及ABAC策略视图模板中实体约束集与XACML 模板中元素之间的映射。其中,ABAC策略视图模板的实体属性集中的每个实体属性均直接 映射到XACML模板中〈Target〉或者〈Condition〉中的元素Attribute ID (属性标识)。而 ABAC策略视图模板中的实体约束集中的实体约束可映射到〈Target〉中的〈Entity〉或者 〈Condition>中的〈Apply>。 步骤204、根据用户通过ABAC策略视图模板输入的ABAC策略信息,生成ABAC策略 表达式; 用户通过ABAC策略视图模板输入ABAC策略信息,ABAC策略信息可以包括属性定 义以及策略定义中各元素(具体参见图3)的内容,例如,用户可以输入各实体属性集中的 原子属性的内容、各实体约束集中的原子约束以及复合约束的内容,以及策略名,规则名等 ABAC策略信息。特别地,用户输入的ABAC策略信息可以为空集,原子属性的内容、各实体约 束集中的原子约束以及复合约束的内容等均为空集,即用户可以不输入上述ABAC策略信息。
根据用户输入的ABAC策略信息生成ABAC策略表达式。该ABAC策略表达式在包 括原子属性表达式的基础上,根据策略定义的需要还可以包括原子约束表达式和/或复合 约束表达式。特别地,ABAC策略表达式还可以为空策略,即ABAC策略表达式中既不包括原 子属性表达式,也不包括原子约束表达式和复合约束表达式,ABAC策略表达式为一个空集 合。 步骤205、根据ABAC策略视图与XACML模板之间的映射规则,将ABAC策略表达式 转换成符合XACML模板的基于XACML的ABAC策略; 具体参见图7,图7为本发明将ABAC策略表达式转换成符合XACML模板的基于 XACML的ABAC策略的方法的流程图,步骤205具体包括
步骤2051 、将ABAC策略表达式中的原子属性表达式转换成XACML模板中 〈Target>或者〈Condition>中的Attribute ID ; 步骤2052 、将所述ABAC策略表达式中的原子约束表达式和/或复合约束表达式转 换成XACML模板的〈Rule〉中的〈Target〉中的〈Entity〉或者〈Condition〉中的〈A卯ly〉;
ABAC策略视图模板中,各实体约束集中的实体约束之间的关系是平等的,根据其 生成的各表达式之间的关系也是平等的。而在XACML策略模板中,〈Target〉和〈Condition〉 中虽然都可以容纳各实体约束集中的实体约束表达式,但是二者的结构和作用有所不同。 〈Target〉 一般容纳原子约束表达式,用于确定策略或规则是否适合用于对某一请求进行决 策;〈Condition〉是规则的主体,一般由复杂的布尔表达式构成,用于对请求进行决策。因 为布尔表达式过于复杂会影响策略的验证效率,所以应将能被快速决策的实体约束表达式 放在〈Target〉中,这一方面能够利用〈Target〉中实体约束表达式的过滤作用避免不必要 的〈Condition〉验证,另一方面也减小了 〈Condition〉的复杂度,从而提高策略的验证效 率。 因此,为保证最终生成的基于XACML的ABAC策略具有良好的验证效率,首先将所 述ABAC策略表达式中的原子约束表达式和/或复合约束表达式按照分类规则进行分类处 理,也就是按照各表达式的复杂程度进行分类,其中,原子约束表达式可以是如(第一操作 数,操作符,第二操作数)形式的表达式,其中,第一操作数可以为属性,第二操作数可以为 属性或者属性值,即(第一操作数,操作符,第二操作数)可以为(属性,操作符,属性值) 或者(属性,操作符,属性)形式的表达式,其表示属性与属性值或两个不同的属性之间的 关系运算,其中,属性和属性值可以为简单类型值,具体分类规则如下
l)SRO :形如(属性,操作符,属性值)的原子约束表达式,其中属性为各种实体的 id、主体白勺ip—address或dns—name白勺——禾中。 2)SR1 :形如(属性,操作符,属性值)的原子约束表达式,其中属性不属于各种实 体的id,主体的ip-address或者dns-n咖e。 3)SR2:SR0、SR1之外的原子约束表达式,例如(属性,操作符,属性)形式的原子 约束表达式。
基于上述对原子约束表达式的分类,进一步对复合约束表达式进行分类
l)CRO :由SR0中原子约束表达式之间的"或"关系构成的复合约束表达式。
2)CR1 :由SR0和SR1中原子约束表达式之间的"或"关系构成的复合约束表达式。
3)CR2 :由SR0和SR1中原子约束表达式之间的"与"关系构成的复合约束表达式。
4)CR3 :CR0、CR1以及CR2之外的其它复合约束表达式。 综上所述,按照上述分类规则,可得到如下分类结果原子约束表达式可分为 SRO、 SR1和SR2三种类型,而复合约束表达式可分为CRO、 CR1、 CR2和CR3四种类型。
将分类结果按照分配规则转换成XACML模板〈Rule〉或者〈Condition〉;分配规则 主要包括各分类结果中各实体约束表达式的复杂程度、各个分类结果中各实体约束表达式 间的相关性大小以及〈Target〉的长度三方面因素。 具体地,可以参见图8,图8为本发明实体约束表达式转换成XACML策略模板中元 素的示意图。XACML模板中〈Target〉中的〈Entities〉可分为三种类型①〈Entities〉中 只包含一个〈Entity〉,并且〈Entity〉中只包含一个〈EntityMatch〉;②〈Entities〉中包含多个〈Entity〉,每个〈Entity〉中只包含一个〈EntityMatch〉;③〈Entities〉中包含一个 〈Entity〉,并且〈Entity〉中包含多个〈EntityMatch〉。上述XACML模板中〈Entities〉的数 量可以为多个,〈Condition〉中〈A卯ly〉的数量也可以为多个,图中仅示出一个作为示例。 图8中,SR0型原子约束表达式转换成类型①的〈Entity〉,因类型①的〈Entities〉中只包 含一个〈Entity〉,〈Entity〉中只包含一个〈EntityMatch〉,所以转换成〈Entity〉的实际过 程就是转换成〈Entity〉中的〈EntityMatch〉;部分CR0中的复合约束表达式转换成类型 ②中的一个〈Entity〉,部分CRl中的复合约束表达式转换成类型②中的另一个〈Entity〉, 因类型②的〈Entities〉中每个〈Entity〉中只包含 一 个〈EntityMatch〉,所以转换成 〈Entity〉的实际过程就是转换成〈Entity〉中的〈EntityMatch〉;部分SR1型原子约束表达 式转换成类型③的〈Entity〉中的一个〈EntityMatch〉,部分CR2型的复合约束表达式转换 成类型③的〈Entity〉中的另一个〈EntityMatch〉 ;SR1中的其它原子约束表达式每个转换 成〈Condition〉中的一个〈Apply〉,CRl中的其它复合约束表达式每个转换成〈Condition〉 中的一个或多个〈A卯ly〉,CR2中的其它复合约束表达式每个转换成〈Condition〉中的一个 或多个〈Apply〉。图8中的转换是在对各种约束进行分类的基础上,再按照分配规则进行分 配的结果,该分配规则充分考虑了各分类结果中各实体约束表达式的复杂程度、各个分类 结果内部各实体约束表达式间的相关性大小以及〈Target〉的长度,按照上述分类规则以 及分配规则转换成的基于XACML的ABAC策略,具有良好的验证效率。图8中的示例中转换 成〈Entity〉或〈Apply〉的实体约束表达式均包括原子约束表达式和复合约束表达式,实际 策略定义过程中还可以包括仅有原子约束表达式或者仅有复合约束表达式的情况。
在转换过程中,按照分配规则将所述分类结果中适合转换成XACML模板〈Rule〉中 的〈Target〉中的〈Entity〉的原子约束表达式和/或复合约束表达式转换成〈Rule〉中的 〈Target〉中的〈Entity〉。在具体执行过程中,将分类结果分别放入到不同的List(列表) 中,即将不同类型的原子约束表达式和复合约束表达式放入不同的List,然后对List进行 扫描筛选,List中的原子约束表达式或复合约束表达式位置越靠前其优先级越高,然后将 原子约束表达式或复合约束表达式进行分解,按照分配规则,将其中适合转换成〈Target〉 的原子约束表达式和/或复合约束表达式转换成〈Target〉中的〈Entity〉,在转换过程中原 子约束表达式或复合约束表达式按优先级依次转换,对优先级高的原子约束表达式或复合 约束表达先进行转换。将未转换成〈Target〉的原子约束表达式和/或复合约束表达式转 换成XACML模板〈Rule〉中的〈Condition〉中的〈A卯ly〉。 其中,原子约束表达式转换成〈Rule〉中的元素〈Condition〉中的〈Apply〉的步骤 可如图9所示,图9为本发明原子约束表达式转换为XACML模板〈A卯ly〉的流程图,原子 约束表达式为(第一操作数,操作符,第二操作数)形式的原子约束表达式,其转换过程包 括 步骤2061 、创建〈A卯ly〉; 步骤2062、将原子约束表达式的操作符转换成〈A卯ly〉中的Functionld ; 步骤2063、将原子约束表达式的第一操作数转换成〈A卯ly〉中的元素; 步骤2064、将原子约束表达式的第二操作数转换成〈A卯ly〉中的元素。 具体地,可参见图10,图10为本发明原子约束表达式转换成的XACML策略模板中
元素的示意图,本实施例中原子约束表达式为(第一操作数,操作符,第二操作数),将操作符转换成〈A卯ly〉中的Functionld,具体地,转换成操作符对应的XACML元素,即以XACML 语言表达的操作符;将第一操作数转换成〈Apply〉中的元素,具体地,转换成第一操作数对 应的XACML元素,即以XACML语言表达的第一操作数;将第二操作数转换成〈A卯ly〉中的元 素,具体地,转换成第二操作数对应的XACML元素,即以XACML语言表达的第二操作数。图 10中的转换后的"操作符"、"第一操作数"和"第二操作数"具体应为其对应的XACML元素, 在此仅作为一种示例以说明原子约束表达式的转换过程。 其中,复合约束表达式转换成〈Rule〉中的元素〈Condition〉中的〈A卯ly〉可采用 树的遍历这一运算方法,本实施例中采用的是先序遍历。 首先,将复合约束表达式按照优先级顺序转换成多叉树,优先级顺序是指复合约 束表达式中的各元素从左到右的排列顺序; 例如,对于复合约束表达式al and a2 and a3 or(a4 or a5)and a6,其转换成的 多叉树可参见图11,图11为本发明复合约束表达式的多叉树的结构示意图,图11中的多叉 树包括多个节点,分别为al、a2、a3、a4、a5、a6、and禾P or,其中,al、 a2、 a3、 a4、 a5、 a6为 原子约束表达式,and和or为逻辑连接词,并且多叉树分为多个层次。
其次,对多叉树中的节点进行先序遍历,将遍历到的节点依次转换成〈Condition〉 中的〈A卯ly〉; 多叉树先序遍历的节点依次为or、 and、 al、 a2、 a3、 and、 or、 a4、 a5和a6,按照上 述顺序将遍历到的节点依次转换成〈Condition〉中的〈A卯ly〉。其中,将遍历到的逻辑连接 词转换成〈Apply〉中的Functionld ;将遍历到的原子约束表达式转换成〈A卯ly〉。具体地, 可参见图12,图12为本发明多叉树转换成的XACML策略模板中元素的示意图,以图11中的 多叉树为例。将顶层的逻辑连接词or转换为〈A卯ly〉中的Functionld ;将原子约束表达 式al、a2、a3的逻辑连接词and转换成〈A卯ly〉中的Functionld,该〈Apply〉为or转换成 的〈A卯ly〉的下一层;将原子约束表达式al、 a2、 a3转换成〈A卯ly〉中的元素,该〈Apply〉 为and转换成的〈Apply〉,也就是说该〈Apply〉中Functionld中的and表明了 al、 a2、 a3 的逻辑关系;将另一个逻辑连接词and转换成另一个〈A卯ly〉中的Functionld,该〈A卯ly〉 与al、 a2、 a3的逻辑连接词and转换成的〈A卯ly〉为并列关系;将原子约束表达式a4、 a5 的逻辑连接词or转换为〈A卯ly〉中的Functionld,该〈A卯ly〉为逻辑连接词and转换成的 〈A卯ly〉的下一层;将原子约束表达式a4、 a5转换成〈A卯ly〉中的元素,该〈A卯ly〉为or 转换成的〈A卯ly〉,也就是说该〈A卯ly〉中Functionld中的or表明了 a4、a5的逻辑关系; 将原子约束表达式a6转换成〈A卯ly〉中的元素,〈Apply〉为顶层的逻辑连接词or转换成 的〈A卯ly〉。其中对al、a2、a3、a4、a5和a6的转换与原子约束表达式转换成〈Condition〉 中的〈A卯ly〉的方法相同,可以参见图9和图10,此处不再详细描述。图12中的转换后的 "操作符"、各个"第一操作数"和各个"第二操作数"具体应为其对应的XACML元素,在此仅 作为一种示例以说明复合约束表达式的转换过程。 由上述转换过程可以得出,多叉树的层次数对应〈Condition〉中〈A卯ly〉的层次 数。如果多叉树的某层的节点为逻辑连接词,则节点转换后对应该层的〈Apply〉中只含有 Functionld这一个元素,并且该元素的值为逻辑连接词代表的逻辑关系。如果某层节点 为al、 a2等原子约束表达式,则原子约束表达式中的二个操作数转换为〈Appl y>中的元 素,如果多叉树的某一层包含多个节点,那么这些节点每个转换为一个〈A卯ly〉,转换成的
11〈A卯ly〉是并列关系,并且这些〈A卯ly〉的逻辑关系为其上层〈A卯ly〉的Functionld中所 指示的逻辑关系。 步骤2053、对所有〈Target〉中的〈Entity〉中的〈Resource〉进行取并集处理,生 成〈Policy〉中的〈Target〉。 〈Policy〉中的〈Target〉起到对策略进行索引的作用,但由于ABAC策略视图模板 的策略中并不直接包含各实体约束,因此需要利用策略中的每条规则转换成的〈Rule〉中 的〈Target〉来构造〈Policy〉的〈Target〉。 特别地,当ABAC策略表达式为空策略时,其转换成的基于XACML的ABAC策略为空
隹A 朱n o 本实施例的技术方案中根据输入的ABAC策略信息生成ABAC策略表达式,再通过 设置的映射规则将ABAC策略表达式自动转换成基于XACML的ABAC策略,在此过程中用户 只需通过ABAC策略视图模板输入一些简单的ABAC策略信息,无需以人工方式写出复杂的 基于XACML的ABAC策略,减轻了用户的负担,便于用户理解和操作,从而解决了用户难于定 义基于XACML的ABAC策略的问题;同时由于该方法中基于XACML的ABAC策略是自动生成 的,避免了用户以人工方式写出复杂的基于XACML的ABAC策略过程中容易出现错误的问 题,从而保证了基于XACML的ABAC策略的准确性。 图13为本发明访问控制装置实施例一的结构示意图,如图13所示,该装置包括相 互连接的生成模块1和转换模块2。生成模块1根据用户通过预先建立的ABAC策略视图 模板输入的ABAC策略信息,生成ABAC策略表达式;转换模块2根据预先设置的ABAC策略 视图模板与XACML模板之间的映射规则,将生成模块1生成的ABAC策略表达式转换成符合 XACML模板的基于XACML的ABAC策略。 图14为本发明访问控制装置实施例二的结构示意图,如图14所示,本实施例在实 施例一的基础上增设了第一建立模块3、第二建立模块4以及设置模块5。第一建立模块3 分别与生成模块1以及设置模块5连接,第二建立模块4与设置模块5连接,设置模块5与 转换模块2连接。第一建立模块3建立ABAC策略视图模板;第二建立模块4建立XACML模 板;设置模块5设置第一建立模块3建立的ABAC策略视图模板与第二建立模块4建立的 XACML模板之间的映射规则;用户通过第一建立模块3建立的ABAC策略视图模板输入ABAC 策略信息,并由第一建立模块3将ABAC策略信息发送给生成模块1。 本实施例中的访问控制装置根据用户输入的ABAC策略信息生成ABAC策略表达 式,再通过设置的映射规则将ABAC策略表达式自动转换成基于XACML的ABAC策略,在此过 程中用户只需通过ABAC策略视图模板输入一些简单的ABAC策略信息,无需以人工方式写 出复杂的基于XACML的ABAC策略,减轻了用户的负担,便于用户理解和操作,从而解决了 用户难于定义基于XACML的ABAC策略的问题;同时由于访问控制装置可以自动生成基于 XACML的ABAC策略,避免了用户以人工方式写出复杂的基于XACML的ABAC策略过程中容易 出现错误的问题,从而保证了基于XACML的ABAC策略的准确性。 最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进行限制, 尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依 然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修 改后的技术方案脱离本发明技术方案的精神和范围。
权利要求
一种访问控制策略生成方法,其特征在于,包括根据用户通过预先建立的基于属性的访问控制ABAC策略视图模板输入的ABAC策略信息,生成ABAC策略表达式;根据预先设置的ABAC策略视图模板与可扩展访问控制标记语言XACML模板之间的映射规则,将所述ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。
2. 根据权利要求1所述的方法,其特征在于,所述ABAC策略表达式包括原子属性表达式。
3. 根据权利要求2所述的方法,其特征在于,所述ABAC策略表达式还包括原子约束表 达式和/或复合约束表达式。
4. 根据权利要求l所述的方法,其特征在于,所述根据用户通过预先建立的ABAC策略 视图模板输入的ABAC策略信息,生成ABAC策略表达式之前还包括建立所述ABAC策略视图模板。
5. 根据权利要求1所述的方法,其特征在于,所述根据预先设置的ABAC策略视图模 板与XACML模板之间的映射规则,将所述ABAC策略表达式转换成符合XACML模板的基于 XACML的ABAC策略之前还包括建立所述XACML模板。
6. 根据权利要求1所述的方法,其特征在于,所述根据预先设置的ABAC策略视图模 板与XACML模板之间的映射规则,将所述ABAC策略表达式转换成符合XACML模板的基于 XACML的ABAC策略之前还包括设置所述ABAC策略视图模板与所述XACML模板之间的映射规则。
7. 根据权利要求1至6任一所述的方法,其特征在于,所述根据预先设置的ABAC策略 视图模板与XACML模板之间的映射规则,将所述ABAC策略表达式转换成符合XACML模板的 基于XACML的ABAC策略包括将所述ABAC策略表达式中的原子属性表达式转换成XACML模板的规则〈Rule〉中的目 标〈Target〉或者条件〈Condition〉中的属性标识Attribute ID ;将所述ABAC策略表达式中的原子约束表达式和/或复合约束表达式转换成XACML模 板的〈Rule〉中的〈Target〉中的实体〈Entity〉或者〈Condition〉中的请求〈Apply〉;对所有〈Rule〉中的〈Target〉中的〈Entity〉中的资源〈Resource〉进行取并集处理, 生成策略〈Policy〉的〈Target〉。
8. 根据权利要求7所述的方法,其特征在于,将所述ABAC策略表达式中的原子约束表 达式和/或复合约束表达式转换成XACML模板的〈Rule〉中的〈Target〉中的〈Entity〉或 者〈Condition〉中的〈A卯ly〉包括将所述ABAC策略表达式中的原子约束表达式和/或复合约束表达式按照分类规则进 行分类处理,得出分类结果;按照分配规则将所述分类结果中适合转换成XACML模板〈Rule〉中的〈Target〉中的 〈Entity〉的原子约束表达式和/或复合约束表达式转换成〈Rule〉中的〈Target〉中的 〈Entity> ;将分类结果中未转换成〈Target〉中的〈Entity〉的原子约束表达式和/或复合约束表 达式转换成XACML模板〈Rule〉中的元素〈Condition〉。
9. 一种访问控制策略生成装置,其特征在于,包括生成模块,用于根据用户通过预先建立的ABAC策略视图模板输入的ABAC策略信息,生 成ABAC策略表达式;转换模块,用于根据预先设置的ABAC策略视图模板与XACML模板之间的映射规则,将 所述ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。
10. 根据权利要求9所述的装置,其特征在于,还包括 第一建立模块,用于建立所述ABAC策略视图模板; 第二建立模块,用于建立所述XACML模板;设置模块,用于设置所述ABAC策略视图模板与所述XACML模板之间的映射规则。
全文摘要
本发明公开了一种访问控制策略生成方法及装置。方法包括根据用户通过预先建立的基于属性的访问控制ABAC策略视图模板输入的ABAC策略信息,生成ABAC策略表达式;根据预先设置的ABAC策略视图模板与可扩展访问控制标记语言XACML模板之间的映射规则,将所述ABAC策略表达式转换成符合XACML模板的基于XACML的ABAC策略。本发明中用户只需通过ABAC策略视图模板输入一些简单的ABAC策略信息,无需以人工方式写出复杂的基于XACML的ABAC策略,从而解决了用户难于定义基于XACML的ABAC策略的问题,并且避免了用户以人工方式写出复杂的基于XACML的ABAC策略过程中容易出现错误的问题,从而保证了基于XACML的ABAC策略的准确性。
文档编号H04L29/06GK101771683SQ20091007611
公开日2010年7月7日 申请日期2009年1月7日 优先权日2009年1月7日
发明者倪文婷, 江川, 葛琨, 郎波, 雷凯 申请人:北京航空航天大学