物联网中访问控制策略的翻译与优化
2016-12-29汤伟强郭云川
汤伟强,郭云川,,李 超
(1.桂林电子科技大学 广西可信软件重点实验室,广西 桂林 541004;2.中国科学院 信息工程研究所,北京 100093)
物联网中访问控制策略的翻译与优化
汤伟强1,郭云川1,2,李 超2
(1.桂林电子科技大学 广西可信软件重点实验室,广西 桂林 541004;2.中国科学院 信息工程研究所,北京 100093)
为了解决不同访问控制策略语言所带来的交互授权问题,提出了一种将物联网第三方机构数据库中基于角色的访问控制策略翻译为物联网中基于属性的XACML访问控制策略的方法,将数据库策略翻译到哈希表中,再对哈希表进一步翻译生成XACML策略,在翻译的过程中检测角色多重继承所产生的重复授权,避免策略重复生成。并对翻译后的访问控制策略进行优化,将2条规则属性对比以检查这2条规则是否可以合并,通过策略中规则的合并减少策略的规模。实验证明了翻译与优化方法的有效性。
物联网;访问控制策略翻译;策略优化;XACML
物联网(internet of things,简称IOT)是建立在互联网、无线网、传感网等网络设施上的泛在网络,实现物与人,物与物及物与网络之间的连接,达到智能识别、定位、跟踪、控制和管理的目的[1]。然而物联网也面临着许多安全问题,加强物联网安全技术的研发工作是物联网安全技术研究的主要方向。在各种安全机制中,访问控制技术是一种基础性的重要组成部分,由于物联网中许多机构所用的访问控制策略描述语言各不相同,现有情况下实现相互之间的交互授权十分困难。例如,物联网中A机构使用的是关系数据库中基于角色的访问控制策略描述语言,B机构使用的是可扩展的访问控制标识语言(eXtensible access control markup language,简称XACML)作为基于属性的访问控制策略描述语言,当A、B两个机构需要进行交互授权时,不同访问控制策略语言描述的访问控制策略使交互授权变得十分困难。因此,对访问控制策略的翻译研究具有重要意义。目前已有一些学者对访问控制策略翻译进行了研究[2-4],如Shanmugasundaram等[2]提出一种将关系数据库数据转换成XML的方法,通过内部引擎和外部引擎查询关系数据库,实现了关系数据库数据与XML之间的转换,但该方法无法保证在并行情况下的正确性;Leighton等[3]提出一种将自主访问控制策略翻译为基于属性的XACML访问控制策略的方法,将原数据库自主访问控制策略数据转化为二进制串,再进一步转换为XACML,从而实现转换,但未给出实验验证方案。鉴于此,提出一种物联网中访问控制策略翻译方法,将数据库中基于角色的访问控制策略翻译为XACML描述的基于属性的访问控制策略,并对翻译后的访问控制策略进行优化,通过实验验证该访问控制策略翻译方法的可行性。
1 访问控制策略的翻译
为了使物联网中采用不同访问控制语言的机构间能够交互授权,采用统一的访问控制语言是一种很好的解决方案。本研究采用将关系数据库中基于角色的访问控制策略翻译为XACML所描述的基于属性的访问控制策略。
1.1 XACML策略规则及翻译
关系数据库中的基于角色的访问控制策略[5]一般由用户表、角色表、用户角色映射表、角色权限映射表等构成。用户角色表存储了所有用户与角色的映射关系;角色权限表记录了每个角色对应的资源的权限;用户表、角色表保存了所有的用户和角色信息。XACML是由OASIS组织制定的一种基于属性访问控制模型的策略描述语言及协议栈[6]。XACML访问控制策略的最小单位为规则;1条或者数条XACML规则可以构成一个XACML访问控制策略;一个或数个XACML策略可以构成一个XACML策略集。XACML实际策略规则如下XML:
〈Rule Effect="Permit" RuleId="permit"〉
〈Target〉
〈Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"〉
〈AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"〉tom〈/AttributeValue〉
〈AttributeDesignator AttributeId="subject" Category="subject-category" DataType="http://www.w3.org/2001/XMLSchema#string"/〉
〈/Match〉
〈Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"〉
〈AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"〉manager〈/AttributeValue〉
〈AttributeDesignator AttributeId="role" Category="role-category" DataType="http://www.w3.org/2001/XMLSchema#string"/〉
〈/Match〉
〈Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"〉
〈AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"〉www.iot.com/factory/〈/AttributeValue〉
〈AttributeDesignator AttributeId="resource" Category="resource-category" DataType="http://www.w3.org/2001/XMLSchema#string"/〉
〈/Match〉
〈Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"〉
〈AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"〉select〈/AttributeValue〉
〈AttributeDesignator AttributeId="action" Category="action-category" DataType="http://www.w3.org/2001/XMLSchema#string"/〉
〈/Match〉
〈/Target〉
〈/Rule〉
访问控制策略的翻译过程由翻译器实现,最终生成XML形式的XACML访问控制策略。翻译器的翻译步骤如下:
1)检索关系数据库中的访问控制策略,读取所有用户信息,并由用户角色表、角色权限表获取用户对应的角色、权限,若该角色继承于其它角色,则翻译器会进一步解析,以获得所继承角色的权限。随后这些访问控制数据(如角色,权限等)会被存储到如下的哈希表中。
tom→(〈manager,www.iot.com/factory/,select,permit,〉)
bill→(〈buyer,www.iot.com/factory/buyer/,{select,update},permit,〉,〈buyer,www.iot.com/factory/cashier/,select,deny,〉)
william→(〈cashier,www.iot.com/factory/cashier/,update,permit,〉,〈cashier,www.iot.com/factory/buyer/,select,deny,〉,…)
2)翻译器以XACML的标准,读取哈希表中的属性,生成多条XACML规则,并将其添加到XACML策略中。例如,在数据库有一组访问控制数据,用户tom角色为manager,可以访问资源www.iot.com/factory/。翻译器先在用户角色表中获得其角色为manager,在角色权限表中查询到其对资源www.iot.com/factory/的权限select为允许,然后将该组数据存储于哈希表中,翻译器根据哈希表中的数据进一步生成XACML规则和策略。
1.2 关系数据库数据转换
翻译器的目的是将数据库中基于角色的访问控制策略遍历,检索具有继承关系的角色,去除继承的多个角色重复授权的访问控制策略,并将转换后的策略数据存于哈希表中。
算法1 关系数据库策略转换算法。
输入:用户角色映射表M、角色权限映射表P。
输出:哈希表H。
2 foreach user∈getAllUsers() do
4 foreach role∈praseUserRoleTable(M) do
6 roles←getFatherRoles(role);
7 roles←roles∪role;
8 foreach ro∈roles do
9 foreach obj∈praseRolePermissionTable(P) do
10 permission←getPermission(obj);
12 if obj.hasConditions() do
13 con←resolveCondition();
14 att←createNewAtt(role,obj,permission,con);
15 attList←attList∪att;
16 end
17 end
18 end
19 H.put(user,attList);
20 end
算法1首先创建一个空哈希表H,该哈希表以基于角色的访问控制策略中的用户为主键,值为属性列表attList,包含将要生成XACML规则的每组属性。遍历所有用户(第2行代码),通过用户角色映射表M获取用户的所有角色,并检查每个角色是否继承其他角色,若继承其他角色,则进一步获取其他角色(第5~7行代码)。翻译器检索角色权限映射表以获得每个角色的权限和约束条件,先由角色权限表获得角色对应的每个资源对象,并获得相应资源对象的权限,如select、update等;检查是否有约束条件(第12~13行代码),约束条件是用户对资源访问的额外限制,如地理位置、年龄范围等。将角色、资源、权限、条件作为一组属性存于att,并将att放入用户的属性列表attList。最后,用户作为主键、attrList作为值被存入到哈希表中(第19行代码)。
在角色继承时,若一个角色继承多个角色,这些角色产生的权限重复,则在生成XACML时产生大量的重复规则。用哈希表缓存基于角色的访问控制策略转换后的各种属性(如用户、角色、资源等)。在存放转换后的属性到哈希表时,会检查哈希表是否有重复,使得生成XACML策略规则时不会产生重复规则。
1.3 XACML访问控制策略生成
算法1对数据库中的访问控制策略进行解析并进行哈希表的映射,将基于角色的访问控制策略转换到哈希表中。将哈希表中的数据进行遍历,按照XACML访问控制策略的标准,生成以XML为表示形式的XACML访问控制策略。
算法2 XACML访问控制策略生成。
输入:用户角色映射表M、角色权限映射表P。
输出:XACML访问控制策略rs。
2 H←prarseTable(M,P);/*算法1*/
3 foreach user∈traverseHashTable(H) do
4 userListt←getTableValue(user);/*获得规则属性*/
5 foreach userAtt∈userList do
6 userRole←getRole(userAtt);
7 userRes←getRes(userAtt);
8 userPermission←getPermission(userAtt);
9 userEffect←getEffect(userAtt);
10 usercon←getCondition(userAtt);
12 rule←createNewRule(user,userRole,userRes,userPermission,userEffect);
13 else
14 rule←createNewRule(user,userRoe,userRes,userPermission,userEffect,usercon);
15 end
16 rs.addPolicyRule(rule);
17 end
18 end
算法2先创建一个无规则的访问控制策略rs,通过算法1获得哈希表H,遍历哈希表获得每个用户及其对应的属性列表userList,再从userList中获得用户的每组属性userAttr,这些属性包括了角色、资源、权限、效果、条件等(第5~10行代码)。每组属性生成一条XACML规则rule,该rule被添加到XACML策略rs中。例如,在哈希表结构示例中,由tom可得到manager、www.iot.com/factory/、select、permit等4个属性和一个为空的条件属性,通过这些属性可构建一条XACML访问控制策略规则〈tom,manager,www.iot.com/factory/,select,permit,〉。为便于表述,将XACML规则形式化定义为一个6元组〈subject,role,resource,action,effect,condition〉。其中:subject为访问控制主体;role为角色;resource为访问控制对象;action为操作,如select;effect为结果permit或deny;condition为条件。同样地,bill可以构成3条XACML规则,william可以构成2条XACML规则,该哈希表最终会生成一个具有6条规则的XACML访问控制策略。
2 XACML访问控制策略优化
XACML访问控制策略是XACML访问控制程序对请求进行判定的依据,规则的数量和顺序决定了匹配运算的规模和评估效率,数以千计的XACML策略中可能存在若干条对访问控制请求不产生实际判定影响的冗余规则[7],而对访问控制策略进行优化,可以缩减策略的规模,是一种有效提高访问控制速度的方案。
算法3 策略规则优化算法。
输入:XACML访问控制策略rs。
输出:最小化的XACML访问控制策略rs。
1 foreach rule∈rs do
2 foreach cr∈rs and cr!=rule do
3 foreach attr∈〈user,role,res,act,con〉 do
4 if rule.attr!=cr.attr and Bemerged(rule.attr,cr.attr) then/*策略优化*/
5 if compareotherattr(rule,cr,attr) then
6 rule.attr←rule.attr∪cr.attr;
7 delete(cr);
8 end
9 else if rule.attr=cr.attr then
10 delete(cr);
11 end
12 end
13 end
14 end
算法3描述了XACML访问
,分别对每2条规则的用户、角色、资源等进行检查(第3行代码)。若2条规则中被检查的属性可以合并,其他属性相同,则对这2条策略进行合并(第4~8行代码),若2条规则都相同,则删除其中一条(第9~11行代码)。如规则〈tom,manager,res1,select,permit,
〉与〈tom,manager,res2,select,permit,
〉中,res1、res2可以合并,其他属性相同,则将这2条规则合并为〈tom,manager,{res1,res2},select,permit,
〉。经过合并,可减少XACML访问控制策略规则数目,提高规则的检索效率。
3 实验结果和性能分析
通过仿真实验对访问控制策略的翻译和优化程序进行性能分析。实验环境采用MySql作为数据库服务器,Balana XACML作为XACML访问控制系统的访问控制引擎,该引擎支持XACML3.0标准,在Sun XACML的基础上进行扩展[8-10]。
首先进行翻译的正确性验证测试。依据上述算法实现一个翻译器程序,对数据库中的1000条访问控制策略进行测试,每条策略为数据库中一个用户的访问控制权限。然后模拟每个用户不同角色对不同资源的访问请求,用Balana XACML访问控制引擎对翻译后的XACML策略进行测试。通过对XACML策略进行遍历测试,XACML策略对每个访问控制请求均能够做出正确的响应,验证了该翻译方法的正确性。
通过A、B、C、D四组样本对翻译性能进行测试,每组样本分别用100、250、500、750、1000条关系数据库策略进行测试。样本A中一条数据库策略可以生成一条XACML规则,在策略优化后仍为一条XACML规则,样本B数据库策略数∶生成XACML规则数∶优化后XACML规则数为1∶1.5∶1,样本C为1∶5∶5,样本D为1∶5∶1。图1为访问控制策略翻译的时间对比。从图1可看出,当数据库策略数相同时,4组样本所生成的XACML策略的关系为A
图1 访问控制策略翻译时间比较Fig.1 Comparison of translation time
图2为访问控制策略优化程序的优化时间对比。从图2可看出,样本A、B生成的XACML策略较少,优化时间也较少,而C、D优化时间则提高幅度较大;同时,在C无优化效果、D优化效果非常高时,其访问控制的策略优化时间几乎相同,因此策略优化的性能较为稳定,只随优化前XACML策略规模的增加而增长,不随XACML策略压缩后规模的大小而改变。从各组实验的时间来看,翻译和优化所需的时间在可接受范围之内。
图2 访问控制策略优化时间比较Fig.2 Comparison of optimization time
利用Balana XACML访问控制引擎,对优化前后的XACML访问控制策略进行测试。图3为样本B、D优化前后的XACML访问控制策略对访问请求的响应时间。样本A、C优化前后的XACML策略未变,其响应时间也未发生任何改变,未在图3中标示样本A、C。从图3可看出,访问控制请求的响应时间与优化效果有关,当访问控制策略优化较多时,其响应时间会大幅度减少。样本B的策略优化效果为33%,其请求响应时间平均减少了16%;样本D的策略优化效果为80%,其请求响应时间平均减少了56%。由此可见,XACML策略的规模是影响访问控制响应时间的主要因素。
图3 策略优化前后请求响应时间比较Fig.3 Response time of optimized and un-optimized policies
4 结束语
提出了一种访问控制策略的翻译和优化方法,将数据库中基于角色的访问控制策略翻译为基于属性的访问控制策略,并在生成XACML策略之后对其进行优化。通过实验分析和比较,验证了访问控制策略翻译和优化方法的有效性。
[1] 方滨兴,贾焰,李爱平,等.网络空间大搜索研究范畴与发展趋势[J].通信学报,2015,36(12):1-8.
[2] SHANMUGASUNDARAM E J,SHEKITA E,BARR R,et al.Efficiently publishing relational data as XML documents[J].The VLDB Journal,2000,10(2/3):133-154.
[3] LEIGHTON G,BARBOSA D.Access control policy translation,verification,and minimization within heterogeneous data federations[J].ACM Transactions on Information and System Security,2011,14(3):25.
[4] BARBOSA D,FREIRE J,MENDELZON A O.Designing information-preserving mapping schemes for XML[C]// International Conference on Very Large Data Bases,2005:109-120.
[5] 王于丁,杨家海,徐聪,等.云计算访问控制技术研究综述[J].软件学报,2015,26(5):1129-1150.
[6] OASIS.XACML3.0[OL].(2013-01-22)[2016-03-10].https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml.
[7] 王雅哲,冯登国,张立武,等.基于多层次优化技术的XACML策略评估引擎[J].软件学报,2011,22(2):323-338.
[8] WSO2.Balana XACML[OL].(2015-12-03)[2016-03-10].Https://github.com/wso2/balana.
[9] LIU A X,CHEN F,HWANG J H,et al.XEngine:a fast and scalable XACML policy evaluation engine[C]//Proceedings of the 2008 ACM SIGMETRICS Int’l Conference on Measurement and Modeling of Computer Systems.New York:ACM Press,2008:265-276.
[10] SUN.Sun XACML[OL].(2006-06-21)[2016-03-10].Http://sunxacml.sourceforge.net.
编辑:张所滨
Access control policy translation and optimization in the internet of things
TANG Weiqiang1, GUO Yunchuan1,2, LI Chao2
(1.Guangxi Key Laboratory of Trusted Software, Guilin University of Electronic Technology, Guilin 541004, China;2.Institute of Information and Engineering, Chinese Academy of Sciences, Beijing 100093, China)
In order to eliminate the problem of interactive authorization caused by different policy languages, a method is proposed to translate the role-based access control policy in the database of the third-party organization into the attribute-based XACML access control policy in the internet of things. The policy in database is first translated into hashtable, and then the hashtable is translated into XACML policy. In the process of translation, the repeat authorization of the role’s multiple inheritance will be checked to avoid generating repetition rule. Then the XACML policy optimization is carried out. The properties of the two rules are compared to check whether the two rules can be combined. The size of policy can be reduced by the combination. The experimental results prove that the method of translation and optimization is effective.
internet of things; access control policy translation; policy optimization; XACML
2016-03-20
广西自然科学基金(2014GXNSFAA118365)
郭云川(1977-),男,四川营山人,副研究员,博士,研究方向为物联网安全。E-mail:guoyunchuan@nelmail.iie.ac.cn
汤伟强,郭云川,李超.物联网中访问控制策略的翻译与优化[J].桂林电子科技大学学报,2016,36(6):495-499.
TP309
A
1673-808X(2016)06-0495-05