本发明涉及网络空间安全领域,特别是涉及一种扩展xacml访问控制的排序策略授权方法及系统。
背景技术:
在信息安全领域,访问控制管理是一种基于用户身份管理资源访问的方法,授权是一种灵活的访问管理机制,指用户可以将其特定资源的访问权限转移到其他实体。现存的大多数授权机制都是基于角色的访问控制(rbac)模型,将访问权限给予角色进行授权,也有少数模型是基于属性访问控制(abac)模型的授权。
xacmlv3.0administrationanddelegationprofileversion1.0,2014描述了一种基于xacml标准的授权机制,其通过搜索授权策略访问请求的<issuer>属性,生成基于pp、pi、dp和di四种路径的策略图,进行图搜索寻找可信策略判断授权允许或拒绝。该方法会因多策略<issuer>搜索、属性判断造成严重的性能开销,且可信策略由省略<issuer>元素定义,缺乏验证机制,容易被伪造。
malikimrandaud等人在ontology-baseddelegationofaccesscontrol:anenhancementtothexacmldelegationprofile,2015中提出基于访问主体的授权模型,定义访问策略、管理策略,在管理策略添加授权等级属性限制分配层级,为每个用户在本地维护单独的链接委托者的策略集,通过o(2n)时间复杂度搜索可信策略判断并返回授权结果,其中n为授权路径长度。然而该模型运用本地维护策略集、基于授权人的关系(如subjectid)搜索管理策略,搜索效率仍由进一步拓展空间。
技术实现要素:
为克服上述现有技术存在的不足,本发明之目的在于提供一种扩展xacml访问控制的排序策略授权方法及系统,以提高授权策略的搜索效率。
为达上述及其它目的,本发明提出一种扩展xacml访问控制的排序策略授权方法,包括如下步骤:
步骤一,定义并生成访问策略;
步骤二,定义并生成管理策略,获得策略库;
步骤三,将策略库中的策略按level值从大到小进行排序;
步骤四,向xacml访问框架的策略判断点pdp提交访问请求;
步骤五,搜索有序的策略库,返回level值最大的策略的判断结果。
进一步地,于步骤一中,所述访问策略的元素包括带priority属性的<policy>、带priority属性的<rule>、subjectid、roleid、department、resourceid、resourcepath、actionid,level表示policy等级高低的指标,由形如abcdef的六位数特征值组成,其中a为优先级priority、b为主体subject、c为角色role、d为部门department、e为资源resource、f为操作action,priority为优先级,由大于等于0的整数值表示,为level的表示值之一。
进一步地,所述访问策略生成步骤如下:
步骤s11,对访问策略的基本属性赋值,计算并赋值level属性;
步骤s12,搜索管理策略库;
步骤s13,查找是否存在符合访问策略属性匹配的管理策略p,若存在,进入步骤s14,若不存在,则进入步骤s15;
步骤s14,将访问策略的id和type组合为policyindex,添加至管理策略p的delegatepolicyset中,并返回步骤s12;
步骤s15,将访问策略保存至策略库中,访问策略生成成功。
进一步地,于步骤s11中,规则rule的level值计算如下:
(a)优先级特征值a:未定义则默认值为0
(b)主体特征值b:有subjectid属性并匹配则为1,不匹配为0
(c)角色特征值c:有定义role属性并匹配则为1,否则为0
(d)部门特征值d:由department属性长度组成
(e)资源特征值e:由resourceid属性和resourcepath属性组合的长度计算得出;
(f)操作特征值f:有定义actionid属性并匹配则为1,否则为0。
进一步地,访问策略policy的level值计算与规则rule的相同,但如果policy的target元素设定的属性abcde,小于policy内部所有rule的level最大值abcde,取rule的最大level值为policy的level值,即abcde等于abcde,否则,policy的level值取abcde。
进一步地,所述管理策略的元素包括subjectid、resourceid、actionid以及delegatepolicyset元素、delegatenumber元素、delegatescope元素。
进一步地,于步骤二中,所述管理策略生成过程如下:
步骤s21,对管理策略的基本属性赋值;
步骤s22,搜索访问、管理策略库;
步骤s23,查找是否存在符合授权规则的策略p;若存在,则进入步骤s24,否则进入步骤s25;
步骤s24,将策略p的id和type组合为policyindex,添加至delegatepolicyset中,并返回步骤s22;
步骤s25,判断管理策略的delegatepolicyset属性是否为空;
步骤s26,若不为空,则将delegatepolicyset有序集中第一个的policy的level值赋给管理策略的level属性,并保存至策略库,则管理策略生成成功,若为空,则管理策略生成失败。
进一步地,于步骤三中,将策略库划分为访问策略库、管理策略库,按策略比较算法将策略按level值从大到小进行排序。
进一步地,所述策略比较算法中访问策略ac与管理策略ad的比较算法如下:
步骤s31,判断管理策略ad的delegatepolicyset属性是否为空;
步骤s32,若为空,则访问策略ac胜于管理策略ad;若为空,则进入步骤s33;
步骤s33,选取管理策略ad的delegatepolicyset属性的第一个策略p;
步骤s34,判断策略p是否存在;
步骤s35,若否,则将策略p的policyindex从管理策略ad的delegatepolicyset中推出,并返回步骤s31;若策略p存在,则进入步骤s36;
步骤s36,判断策略p是否为访问策略,若否,则设管理策略ad2为策略p,进入下一级递归循环,并返回步骤s31,若是,则进入步骤s37;
步骤s37,按策略p的level值更新管理策略ad的level值,并比较管理策略ad和访问策略ac的level值,两者中值大者胜。
为达到上述目的,本发明还提供一种扩展xacml访问控制的排序策略授权系统,包括:
访问策略定义生成单元,用于定义并生成访问策略;
管理策略定义生成单元,用于定义并生成管理策略,获得策略库;
排序单元,用于将策略库中的策略按level值从大到小进行排序;
访问请求单元,用于向xacml访问框架的策略判断点pdp提交访问请求;
搜索处理单元,用于搜索有序的策略库,返回level值最大的策略的判断结果。
与现有技术相比,本发明一种扩展xacml访问控制的排序策略授权方法及系统基于xacml访问控制定义生成访问策略、管理策略,并将策略库中的策略按level值从大到小进行排序,提高了授权策略的搜索效率。
附图说明
图1为本发明一种扩展xacml访问控制的排序策略授权方法的步骤流程图;
图2为本发明具体实施例中扩展xacml的访问策略的实例示意图;
图3为本发明具体实施例之扩展xacml的访问策略的简略形式示意图;
图4为本发明具体实施例中访问策略生成流程图;
图5为本发明具体实施例中管理策略的简略形式示意图;
图6为本发明具体实施例中管理策略生成流程图;
图7为本发明具体实施例中策略比较算法流程图;
图8为本发明具体实施例中基于xacml的请求示例示意图;
图9为本发明一种扩展xacml访问控制的排序策略授权系统的系统架构图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种扩展xacml访问控制的排序策略授权方法的步骤流程图。如图1所示,本发明一种扩展xacml访问控制的排序策略授权方法,包括如下步骤:
步骤101,定义并生成访问策略。本发明按xacml(extensibleaccesscontrolmarkuplanguage,可扩展的访问控制高标识语言)访问控制框架规定,由pap(policyadministrationpoint,策略管理点)管理xacml策略,因此,按授权流程,需先定义被授权策略,即本发明规定的访问策略。在本发明具体实施例中,策略的元素包括带priority属性的<policy>、带priority属性的<rule>、subjectid、roleid、department、resourceid、resourcepath、actionid,具体地,扩展xacml的访问策略的实例如图2所示,其简略形式如图3所示,其属性含义如下:
level:表示policy等级高低的指标,由形如abcdef的六位数特征值组成,其中a为优先级(priority)、b为主体(subject)、c为角色(role)、d为部门(department)、e为资源(resource)、f为操作(action)。
pirority:优先级,由大于等于0的整数值表示,为level的表示值之一。
图4为本发明具体实施例中访问策略生成流程图。如图4所示,访问策略生成过程如下:
步骤s11,对访问策略的基本属性赋值,计算并赋值level属性;
在本发明具体实施例中,规定访问策略rule的基本属性priority、subject、role、department、resource、action由形如abcdef的六位数特征值组成,其中a为优先级(priority)、b为主体(subject)、c为角色(role)、d为部门(department)、e为资源(resource)、f为操作(action)。采用level值大的策略“胜于”level值小的策略,即level值大的策略生效。
具体地,level值的计算如下:
a.规则rule的level值计算如下:
(a)优先级特征值a:未定义则默认值为0
(b)主体特征值b:有subjectid属性并匹配,则为1,不匹配为0
(c)角色特征值c:有定义role属性并匹配,则为1,否则为0
(d)部门特征值d:由department属性长度组成,规定department长度计算规则为由”/”划分的字符串段数,如dep1/dep2长度为2,不匹配为0
(e)资源特征值e:由resourceid属性和resourcepath属性组合的长度计算得出。规定resourcepath为形如/path1/path2的字符串路径,与resourceid组合为/path1/path2/resourceid,计算规则为由”/”划分的字符串段数,如page1/resourceid1长度为2,不匹配为0
(f)操作特征值f:有定义actionid属性并匹配,则为1,否则为0
例如,以上规则在bce匹配的情况下计算level值abcdef为011221。
b.访问策略(policy)的level值计算:
访问策略的level值计算同规则rule。但是如果policy的target元素设定的属性abcde,小于policy内部所有rule(policy存在多个rule元素)的level最大值abcde,取rule的最大level值为policy的level值,即abcde等于abcde,否则,policy的level值取abcde。
policy按level值从大到小排序,且level值大的策略作用大于level值小的策略,即效果能覆盖level值小的策略。组合算法采取first-applicable,即level值相同时,优先出现的策略获胜。
步骤s12,搜索管理策略库;
步骤s13,查找是否存在与访问策略属性匹配的管理策略p,如访问策略request访问请求为roleid为“role1”进行resourceid为“book”、actionid为“add”的操作(按xacml规范,pip还将根据userid补全request的基本属性),与管理策略规定roleid为“role1”的用户进行resourceid为“book”、actionid为“add”操作的权限为permit(或deny),此时即为匹配,效果为允许(或拒绝);若存在,进入步骤s14,若不存在,则进入步骤s15;
步骤s14,将访问策略的id和type,即policyid(生成policy时的随机hash值)和policytype(access或admin两种类型)组合为policyindex,添加至管理策略p的delegatepolicyset中,并返回步骤s12;
步骤s15,将访问策略保存至策略库中,访问策略生成成功。
步骤102,定义并生成管理策略。按授权流程,需定义授权策略,即本发明规定的管理策略。在本发明具体实施例中,管理策略的元素包括subjectid、resourceid、actionid,具体地,为方便描述将管理策略简化为如图5所示,其属性含义如下:
policyindex:为policyid+policytype组成的策略标识,可按policyid所指向的策略level值比较大小;
delegatepolicyset:指元素为policyindex,按policyid所指向policy的level值从小到大排序的序列,包括permit和deny的policy;
delegatescope:可授权的范围取值为0或1,0表示该管理策略不能再授权,1表示该受管理策略授权的策略可再授权。若子管理策略的父管理策略(即delegatepolicyset中所指的policy)的delegatescope没有为1的策略,则子管理策略的delegatescope不能设为0。实时判断时,若因撤销授权顺序的原因发现,所有管理策略父类的delegatescope为0,则授权为deny;
delegatenumber:可授权的次数。当delegatescope为0时,delegatenumber默认为0;当delegatescope为1时,可设置delegatenumber值限制可再授权的数量,且随着授权出的权利次数依次递减至0;如果delegatenumber为n或设置具体某个负数特征值,如设定为-1时,可表示该策略不限制授权次数。
图6为本发明具体实施例中管理策略生成流程图。生成管理策略过程即授权过程,其中其基本属性(priority、subject、resource、action、delegatenumber、delegatescope)由授权时生成,而delegatepolicyset为搜索匹配的策略生成,最后level值根据上述的level值计算规则生成。管理策略的level值为delegatepolicyset中,所有policy的最大level值,即第一个policyid所指策略的level值,并随着delegatepolicyset序列的变化更新其level值。具体地,如图6所示,管理策略生成过程如下:
步骤s21,对管理策略的基本属性赋值;
步骤s22,搜索访问、管理策略库;
步骤s23,查找是否存在符合授权规则的策略p,即策略的基本属性匹配,如具roleid为role2、department为dep1的用户添加管理策略,其ruleeffect为permit、subject内元素为roleid为“role1”、resource为book,action为add,即具备role2角色的用户允许role1对资源book进行add操作,则roleid为role2,resourceid为book,actionid为add的访问策略,或department为dep1,resourceid为book,actionid为add的管理策略都与之匹配;若存在,则进入步骤s24,否则进入步骤s25;
步骤s24,将策略p的id和type组合为policyindex,添加至delegatepolicyset中,并返回步骤s22;
步骤s25,判断管理策略的delegatepolicyset属性是否为空;
步骤s26,若不为空,则将delegatepolicyset有序集中第一个(level值最大)的policy的level值赋给管理策略的level属性,并保存至策略库,则管理策略生成成功,若为空,则证明没有策略提供给该管理策略授权,管理策略生成失败。
步骤103,将策略库中的策略按level值从大到小进行排序。为提高查询效率,可选地,可将策略库可划分为访问策略库、管理策略库。按策略比较算法将策略按level值从大到小进行排序,因访问策略的level值由其属性规定,不会改变,因此仅具体说明访问策略与管理策略的比较的算法,如图7所示,管理策略之间比较仅比较两者的level值即可。具体地,访问策略ac与管理策略ad的比较算法如下:
步骤s31,判断管理策略ad的delegatepolicyset属性是为空;
步骤s32,若为空,则访问策略ac胜于管理策略ad,即访问策略生效,管理策略被覆盖,比较结束;若不为空,则进入步骤s33;
步骤s33,选取管理策略ad的delegatepolicyset属性的第一个策略p;
步骤s34,判断策略p是否存在;
步骤s35,若否,则将策略p的policyindex从管理策略ad的delegatepolicyset中推出,并返回步骤s31;若策略p存在,则进入步骤s36;
步骤s36,判断策略p是否为访问策略,若否,则设管理策略ad2(这里的管理策略ad2仅用于区别递归循环的策略p)为策略p,进入下一级递归循环,并返回步骤s31,若是,则进入步骤s37;
步骤s37,按策略p的level值更新管理策略ad的level值,并比较管理策略的ad和访问策略ac的level值,两者中值大者胜。
在此需说明的是,这里定义策略比较如下:策略p1胜于策略p2指的是,策略p1生效,策略p2被覆盖。
步骤104,向pdp(xacml访问框架的策略判断点)提交访问请求。按xacml访问控制框架,由pep(policyenforcementpoint,策略执行点)向pdp提交访问请求,请求内容按照xacml3.0规定所述,其内容示例如图8所示。
步骤105,搜索有序策略库,返回level值最大的策略的判断结果。在有序策略库中查找匹配查询条件的策略,匹配即可按照该策略(匹配策略中level值最大的策略)effect值判断deny(拒绝)或permit(允许)。
图9为本发明一种扩展xacml访问控制的排序策略授权系统的系统架构图。如图9所示,本发明一种扩展xacml访问控制的排序策略授权系统,包括:
访问策略定义生成单元901,用于定义并生成访问策略。本发明按xacml(extensibleaccesscontrolmarkuplanguage,可扩展的访问控制高标识语言)访问控制框架规定,由pap(policyadministrationpoint,策略管理点)管理xacml策略,因此,按授权流程,需先定义被授权策略,即本发明规定的访问策略。在本发明具体实施例中,访问策略的元素包括带priority属性的<policy>、带priority属性的<rule>、subjectid、roleid、department、resourceid、resourcepath、actionid,
访问策略定义生成单元901进一步包括:
访问策略赋值单元,用于对访问策略的基本属性赋值,计算并赋值level属性;
搜索单元,用于搜索管理策略库,查找是否存在符合访问策略属性匹配的管理策略p,若存在,则启动组合单元,若不存在,则启动保存单元;
组合单元,用于将访问策略的id和type组合为policyindex,添加至管理策略p的delegatepolicyset中;
保存单元,用于将访问策略保存至策略库中,访问策略生成成功。
管理策略定义生成单元902,用于定义并生成管理策略。按授权流程,需定义授权策略,即本发明规定的管理策略。在本发明中,生成管理策略过程即授权过程,其中其基本属性(priority、subject、resource、action、delegatenumber、delegatescope)由授权时生成,而delegatepolicyset为搜索匹配的策略生成,最后level值根据上述的level值计算规则生成。管理策略的level值为delegatepolicyset中,所有policy的最大level值,即第一个policyid所指策略的level值,并随着delegatepolicyset序列的变化更新其level值。具体地,管理策略定义生成单元802进一步包括:
管理策略赋值单元,用于对管理策略的基本属性赋值;
搜索单元,用于搜索访问、管理策略库,查找是否存在符合授权规则的策略p;若存在,则启动组合单元,否则启动判断单元;
组合单元,用于将策略p的id和type组合为policyindex,添加至delegatepolicyset中;
判断单元,用于判断管理策略的delegatepolicyset属性是否为空;
判断结果处理单元,于判断结果为不为空时,将delegatepolicyset有序集中第一个(level值最大)的policy的level值赋给管理策略的level属性,并保存至策略库,则管理策略生成成功,于判断结果为空时,则证明没有策略提供给该管理策略授权,管理策略生成失败。
排序单元903,用于将策略库中的策略按level值从大到小进行排序。为提高查询效率,可选地,可将策略库可划分为访问策略库、管理策略库。按策略比较算法将策略按level值从大到小进行排序,因访问策略的level值由其属性规定,不会改变,因此仅具体说明访问策略与管理策略的比较的算法,管理策略之间比较仅比较两者的level值即可。具体地,访问策略ac与管理策略ad的比较算法如下:
步骤s31,判断管理策略ad的delegatepolicyset属性是为空;
步骤s32,若为空,则访问策略ac胜于管理策略ad,即访问策略生效,管理策略被覆盖;若不为空,则进入步骤s33;
步骤s33,选取管理策略ad的delegatepolicyset属性的第一个策略p;
步骤s34,判断策略p是否存在;
步骤s35,若否,则将策略p的policyindex从管理策略ad的delegatepolicyset中推出,并返回步骤s31;若策略p存在,则进入步骤s36;
步骤s36,判断策略p是否为访问策略,若否,则设管理策略ad2为策略p,进入下一级递归循环,并返回步骤s31,若是,则进入步骤s37;
步骤s37,按策略p的level值更新管理策略ad的level值,而后比较管理策略ad和访问策略ac的level值,两者中值大者胜。
在此需说明的是,这里定义策略比较如下:策略p1胜于策略p2指的是,策略p1生效,策略p2被覆盖。
访问请求单元904,用于向pdp(xacml访问框架的策略判断点)提交访问请求。按xacml访问控制框架,由pep(policyenforcementpoint,策略执行点)向pdp提交访问请求,请求内容按照xacml3.0规定所述。
搜索处理单元905,用于搜索有序的策略库,返回level值最大的策略的判断结果。在有序的策略库中查找匹配查询条件的策略,匹配即可按照该策略(匹配策略中level值最大的策略)effect值判断deny(拒绝)或permit(允许)。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。