云平台访问控制自适应风险评估指标权重分配方法
2018-08-28杨宏宇宁宇光
杨宏宇,宁宇光
(中国民航大学计算机科学与技术学院,天津300300)
(*通信作者电子邮箱yhyxlx@hotmail.com)
0 引言
云环境下访问控制模型通常将基于属性的访问控制(Attribute Based Access Control,ABAC)与基于角色的访问控制(Role Based Access Control,RBAC)相结合[1],为进一步分析访问授权所带来的安全风险和增强访问控制模型的动态性,通过引入风险因素改进访问控制模型已经成为目前的研究热点[2-3]。
风险值的量化方法是风险访问控制模型研究的重点。Cheng等[4]提出模糊多水平安全模型,将风险值量化为未授权泄露信息的期望(风险值=信息价值×未授权泄露信息的概率)。Ni等[5]提出模糊BLP(Bell-LaPadula)模型,运用模糊理论将模糊化的风险量化为具体的风险值。上述2种模型均需预先给出主客体的安全水平,但在云平台下主客体频繁变动,无法提前评估其安全水平,故上述2种模型不适用于云平台。
Lakshmi等[6]提出一种适用于云平台的多风险指标访问控制模型,提取访问发生的时间、位置等作为风险评估指标并将风险值量化为多个风险指标的平均值,但该模型仅为每个风险指标均分固定的权重。
在云环境下存在大量历史用户行为信息未得到高效利用、未评估当前系统安全状态等问题。针对上述问题,Bouchami等[7]提出将用户历史行为信息和系统安全状态量化为风险评估指标评估当前访问请求的风险。但该研究未给出具体的风险访问控制模型。Chen等[8]提出动态风险访问控制模型(Dynamic Risk-based Access Control,DRAC),利用数据流方法量化用户历史行为信息并结合系统安全状态构建风险评估指标。匡亚岚[9]提出基于系统安全风险的访问控制模型,该模型利用模糊层次分析法为风险评估指标分配权重。但上述方法均存在风险评估指标权重固定且不能动态分配的问题。
为进一步适应云环境,目前主流风险访问控制模型是在传统的访问控制策略上添加风险评估模块[7,10](如:DRAC),但这些模型对访问请求风险值量化时仍面临风险评估指标权重分配的主观性和静态性问题[11],主要原因为:
1)采用经验或专家建议等方法构建风险评估指标权重会带有一定程度的主观臆断,从而影响风险值的准确率。
2)风险评估指标权重分配后是静态的,而对于动态的云环境,会降低风险值对访问请求的灵敏度。
对于风险评估指标权重固定的问题,目前常用的动态权重分配方法如归一法、主成分分析法和熵值法等均存在准确率较低或实时性较差的问题[12-13]。
针对上述问题,本文提出一个云平台访问控制自适应风险评估指标权重分配方法,利用系统安全状态和用户历史行为信息构建风险评估指标,设计一个带约束的多元线性回归模型,自适应分配风险评估指标权重,通过对配方回归(Programming Regression,PR)[14]算法改进求解相应权重,提高风险值对访问请求的灵敏度,进而提出一个新的动态阈值计算方法,提高风险值的准确率。本文方法中,风险评估指标权重不再主观设定而是通过历史用户行为信息和系统安全状态等进行计算分配,不仅分配权重合理,而且可实时调整权重以适应当前的访问环境。本文的研究聚焦于改进云平台风险访问控制模型中风险评估指标权重分配的自适应性,提出动态风险值量化公式,并不涉及云平台动态资源调度、弹性计算和虚拟化等特点。
1 基本定义
定义1 风险阈值t为:
其中AVG()计算集合中访问请求风险值的平均值。由用户自定义计算t的访问请求数量并将访问请求分为A、B集合,A集合存放ABAC模块评估接受(P=0)的访问请求风险值R+,B集合存放ABAC模块评估拒绝(P=1)的访问请求风险值R-。
定义2 灵敏度S为:
其中,灵敏度S定义为P=1时访问请求的风险平均值与P=0时访问请求的风险平均值之差。由于灵敏度S反映风险值的波动,而风险评估指标权重影响风险值,所以灵敏度与当前风险评估指标权重密切相关。
定义3 准确率Acc为:
其中,num()表示满足相应条件的访问请求数量。准确率定义为正常访问请求风险值R+<t和恶意访问请求风险值R->t的数量占所有访问请求数量的比例。
定义4 风险评估指标权重b*边界调整公式为:
其中:b*(ij)(j=1,2,…,q且1≤i1<i2<… <iq≤p)表示b*中为0的分量;函数g()表示b*中非边界分量的数值(小数点后保留2位)。运用配方回归理论[14],b*可能存在b*(ij)=0即b*在边界 上,但任意参与风险计算的评估指标都应分配权重,故用式(4)为边界分量分配相应值。
2 风险访问控制模型
本文提出的风险访问控制模型框架如图1所示,其中,风险评估(Risk Evaluation,RE)包括自适应风险评估指标权重分配和风险值计算两个过程。
图1 风险访问控制模型框架Fig.1 Framework of risk access control model
该模型的处理步骤设计如下:
1)通过访问请求和系统安全状态提取风险评估指标。
2)规则匹配模块利用ABAC策略与访问请求进行规则匹配,产生匹配结果P。
3)自适应风险评估指标权重分配通过提取的历史风险评估指标和历史规则匹配结果P得到当前各指标的权重b*。
4)风险值计算通过b*构建动态风险值计算公式,根据当前访问请求的风险评估指标计算风险值R。
5)动态阈值计算采用历史访问请求的P和R实时计算风险阈值t。
6)最终控制决定根据系统需求综合阈值t、规则匹配结果P和风险值R作出最终访问控制决定。
3 自适应风险评估指标权重分配
3.1 问题分析
风险访问控制模型中风险值量化方法可归纳为:
其中:ε1+ε2+… +εn=1;ωji(j=1,2,…,n)表示对第i条访问请求reqi中第j个风险评估指标量化评估的值;εj(j=1,2,…,n)表示第j个风险评估指标的权重。当进行风险评估时,ωji取值由实际情况决定,所以εj为影响风险值的主要因素之一。大部分风险访问控制模型采用的风险评估指标权重分配方法[6-8]为均分相等的权重,即 ε1= ε2= … = εn=1/n。但该方法存在以下3个不足:
1)风险评估指标权重固定;
2)风险值对访问请求的灵敏度较低;
3)风险值的准确率较低。
针对上述3个不足,在风险值量化过程中,通过收集历史访问请求的风险评估指标和ABAC模块的评估结果P,构造带有自适应权重分配的风险值计算公式,并对新访问请求的风险值进行预测。
3.2 自适应风险评估指标权重分配模型
根据历史风险评估指标和P构建自适应权重分配模型,主要包括如下3个目标:
1)构造超平面将风险评估指标分为2类;
2)选择合适的目标值;
3)风险评估指标权重满足一定的约束条件。
针对上述3个目标,本文通过带约束的多元线性回归构造风险评估指标权重分配模型,并运用PR算法求解该模型。
本文使用风险评估指标(I,T,V)。其中:I表示当前访问请求的访问活动(读、写等)在历史请求中被ABAC模块允许(P=0)的频率[7];T根据访问请求的主体属性分配具体数值,角色属性越高T越小,如:管理者的T值小于普通成员;V使用通用漏洞与披露(Common Vulnerabilities and Exposures,CVE)标准中关于Hadoop相关漏洞评分,即将本文模型部署在以Hadoop为基础的云平台下。
运用式(5) 和(I,T,V),风险值为:
其中,ε1+ ε2+ ε3=1。若ε1、ε2、ε3由经验设定且不能动态改变,则频繁出现正常访问请求的风险值R+大于恶意访问请求的风险值R-,从而无法得到合理阈值,降低风险值的准确率。若 R+→0且R-→1,则R--R+→1,由式(2)可知灵敏度S增加,阈值设定的区间范围增大,风险值的准确率提高。而ABAC中正常访问请求P=0,恶意访问请求P=1,若R+/-→P,则可利用风险评估指标(用户历史行为信息和系统安全状态)动态分配相应权重,所以本文设计的自适应风险评估指标权重分配模型为:
目标函数:
约束条件:
其中,ε为随机误差项。
3.3 PR 算法设计
本文利用广度优先搜索和剪枝设计并优化PR算法以求解上述模型。由于PR算法利用矩阵的消去变换求解自适应风险评估指标权重分配模型,所以比使用二次规划或线性规划求解该问题更加简单且计算量小[14]。优化后的PR算法在最小二乘法的基础上首先分层存储消去变换后的矩阵,然后逐层检查并删除不满足条件的矩阵。PR算法设计如下。
算法1 PR算法。
输入 用户历史风险数据X,规则评估结果Y;
输出 风险评估指标权重b*,误差极小值Qmin。
/*b():从消去变换后的矩阵中得到b*(矩阵最后
一列,第2行到倒数第2行的元素),Q():从消去变换后的矩
阵中得到Qmin(矩阵最后一行,最后一列的元素)*/
End if
原料:肥鸡1只、无核李子脯125克、苹果3-4个、洋葱和胡萝卜各1个、生姜1小块、面粉2大勺、精盐和胡椒各适量
End for
4 实验结果与分析
4.1 实验环境与数据
为验证本文提出的自适应权重分配方法,在PC上搭建实验环境。1)硬件配置:Inter Core i3-2350M CPU@2.30 GHz,4.0 GB RAM。2)软件环境:64 位 Windows 7 操作系统,Matlab R2016a。
数据集由不同的访问请求组成,每条访问请求信息包含主体、客体、访问活动和访问发生时间4个主属性,每个主属性下分层存储子属性,子属性由相应的成员组成,例如:主体={管理者,员工,非员工,…},管理者={管理者1,管理者 2,…}等。
每条访问请求是在4个主属性的相应子属性下随机选择成员组成,模拟生成5组访问请求S1、S2、S3、S4和S5。S1至S4分别存在150个成员,每个成员在S1至S4中分别有10、100、1000和10000条访问请求,S1至S4中访问请求发生的顺序随机。S5为随机生成的50条访问请求,由正常访问请求(P=0)和恶意访问请求(P=1)间隔组成。
用ABAC策略评估5组访问请求得到评估结果P;通过对用户历史行为信息和当前系统安全状态量化得到5组访问请求的风险评估指标(I,T,V)。设定历史窗口w=1000,即量化当前访问请求的(I,T,V)时,使用的用户历史行为信息为该请求发生前w条历史访问请求信息。
训练集Settrain为S1到S4的风险评估指标数据(I,T,V)和ABAC模块评估结果Ptrain,即:
其中,(I,T,V)150×10i表示训练集中第i组访问请求存在150 ×10i条风险评估指标数据。
4.2 自适应权重分配评估实验
实验步骤设计如下:
步骤1 模拟生成5组访问请求数据,构建训练集Settrain和测试集Settest。
步骤2 通过S1至S4组访问请求构建的训练集分别训练自适应风险评估指标权重分配模型,运用PR算法得到对应的 b*和 Qmin。
步骤3 将4组b*分别代入式(6),构造自适应风险值计算公式。
步骤4 间隔1秒依次将测试集中的(I,T,V)代入自适应风险值计算公式,计算各访问请求的风险值(如图2中虚线所示)。
步骤5 为式(6)分配固定风险评估指标权重,构造固定风险值计算公式。固定指标权重采用文献[6-8]中权重分配方法,即为各风险评估指标均分相等的权重(1/3,1/3,1/3)。
步骤6 间隔1秒依次将测试集中的(I,T,V)代入固定风险值计算公式,得到各访问请求的风险值(如图2中实线所示)。
步骤7 根据步骤4、步骤6中计算得到的风险值,使用式(1)、(2)和(3)得到相应的阈值t、灵敏度S和准确率Acc。
图2中P=0或P=1的2条曲线分别采用2种指标权重分配方法计算测试集中正常或恶意访问请求的风险值。从图2可知,自适应风险评估指标权重分配使得风险值波动较大,即对于风险感知更灵敏;大部分P=0的访问请求风险值被降低,大幅度减少R+≥t或R-≤t出现的频率;P=1和P=0的访问请求风险值分布间隔增加,使得阈值可设定的区间范围增大,从而提高风险值的准确率。
从图2(a)至图2(d)可知,随着访问请求数量的增加,固定指标权重所得正常访问请求的风险值和恶意访问请求的风险值分布间隔减小,造成风险值对访问请求的灵敏度下降;但自适应分配指标权重计算的风险值分布间隔逐渐增大,当训练集的数量增加至十万和百万级时,正常访问请求(P=0)的风险值中异常值(波峰)减少,所以本文提出的方法在大并发用户数情况下适应性更强,更适合具有大量用户且动态性强的云环境。
图2 不同数量访问请求的风险值分布Fig.2 Risk value distribution for different number of access requests
当选取不同数量访问请求计算b*时,生成的风险评估指标权重不同,故在云平台环境中,可通过用户历史行为信息和系统安全状态实时动态地调整风险评估指标权重。
4.3 权重分配指标参数对比分析
为对比2种权重分配方法所得风险值的阈值、灵敏度和准确率,根据4.2节实验步骤7,汇总并统计3种指标数据,如表1所示。
从表1可见,针对阈值t,本文方法所得风险值的阈值低于固定指标权重,由于R+被降低,R-被升高,使得R+与R-的差距增加,从而减小阈值,但阈值设定的区间范围增大,使得阈值的设定更加灵活、合理。自适应分配指标权重所得风险值的阈值,基本稳定在0.5左右,而固定指标权重的阈值波动较大,运用式(1)可知,P=0或P=1访问请求风险值整体出现升高或下降时,会导致阈值出现波动,所以本文方法在大规模用户访问时,能够维持P=0和P=1访问请求风险值整体的稳定性。
针对灵敏度S,本文方法所得风险值的灵敏度高于固定指标权重。运用式(2)可知,P=0和P=1的访问请求风险值的分布间隔越大,灵敏度越高。自适应分配指标权重所得风险值的灵敏度基本维持在0.4以上,随着访问请求数量的增加,灵敏度不断升高。而固定指标权重所得风险值的灵敏度随着访问请求数量的增加,逐渐降低。所以本文方法所得风险值不仅灵敏度较高,而且分布具有稳定性。
针对准确率Acc,本文方法所得风险值的准确率高于固定指标权重。随着访问请求数量的增加,自适应分配指标权重所得风险值的准确率整体呈现上升的稳定趋势,而固定指标权重风险值的准确率较低,且不稳定,有一定程度的波动。所以本文方法更适用高并发、高动态的云环境。
表1 2种权重分配方法相关参数Tab.1 Related parameters of two weight allocation methods
4.4 准确率和灵敏度实验
通过灵敏度和准确率2种指标,对比分析本文方法构建的风险访问控制模型与其他风险访问控制模型的性能。本节实验通过Matlab仿真实现本文模型、文献[8]提出的DRAC模型和文献[9]提出的基于系统安全风险的访问控制模型。由于3种风险访问控制模型均是通过规则评估和风险评估等模块构建,所以分别实现这些模块,并根据数据的流向连接不同的模块。设计实验步骤如下:
步骤1 通过Matlab仿真实现本文模型、DRAC模型和基于系统安全风险的访问控制模型。
步骤2 将4组访问请求S1、S2、S3和S4分别代入步骤1中3种模型进行训练。
步骤3 将S5代入经过S1至S4训练完成的3种模型,记录S5中访问请求的风险值。
步骤4 通过式(2)计算风险值对访问请求的灵敏度S,汇总并统计得到S的分布情况(如图3(a)所示)。通过式(3)计算风险值的准确率Acc,汇总并统计得到Acc的分布情况(如图3(b)所示)。
从图3(a)可见,本文模型所得风险值的灵敏度整体维持在0.4以上。基于系统安全风险的访问控制模型在数据量较小时(S2),风险值的灵敏度达到0.43,但随着数据量增加,灵敏度下降至0.32。DRAC模型所得风险值的灵敏度随着数据量的增加,也在逐渐增加,最高达到0.39。所以本文模型所得风险值的灵敏度整体优于另外2种模型。
从图3(b)可见,在访问请求数量为S1时,本文模型所得风险值的准确率为94%,略高于另外2种模型。但在S2时,基于系统安全风险的访问控制模型风险值的准确率达到最高95%,而本文模型出现波动,准确率下降至90%。随着数据量的不断增加,本文模型风险值准确率最高达到98%,明显优于另外2种模型。
DRAC模型根据数据流方法量化风险评估指标,但数据流方法对历史窗口w依赖较大,若w的选择不合理,则风险评估指标效果减弱,所以随着数据量的增加,该模型风险值的准确率和灵敏度都要低于本文提出的模型。基于系统安全风险的访问控制模型根据模糊层次分析法分配风险评估指标权重,但分配后的权重若更改需进行复杂的代数运算,所以在数据量较小时,该模型的灵敏度和准确率要优于DRAC模型,但随着数据量的增加,权重无法动态自适应调整的劣势凸显,准确率和灵敏度都低于DRAC模型和本文提出的模型。
图3 准确率与灵敏度分布Fig.3 Distribution of accuracy and sensitivity
4.5 响应时间对比分析
根据文献[8,15],访问控制模型对访问请求的响应时间是模型可扩展性的重要度量标志,反映访问控制模型在用户不断增加时的处理能力。本文实验对比4.3节3种模型和文献[15]提出的基于动态属性的风险感知访问控制(Dynamic Attribute-based Risk Aware Access Control,DA-RAAC)模型,分析4种风险访问控制模型对不同数量访问请求的响应时间,具体步骤如下:
步骤1 使用Matlab仿真实现DA-RAAC模型。该模型基于属性基加密(Attribute-Based Encryption,ABE)模型和风险引擎,为方便起见,仅实现风险引擎模块。
步骤2 随机生成640、1 280、…、20 480条访问请求,分别使用4种模型对6组访问请求进行访问授权。
步骤3 记录并统计4种模型对6组访问请求的响应时间,结果如图4所示。
从图4可知,本文提出的模型比另外3种模型响应时间更短。由于数据流和模糊层次分析等数学方法,需要长时间的代数运算,DA-RAAC模型中存在大量的布尔运算,所以本文方法构建的模型在保证准确率和灵敏度都较高的情况下,响应时间也明显低于其他3种模型。综上,本文提出的带有自适应指标权重分配的风险访问控制模型更适用于有较大用户量的云环境。
图4 不同模型响应时间Fig.4 Response time of different models
5 结语
本文针对大多数风险访问控制模型风险评估指标权重固定的不足,提出云平台访问控制自适应风险评估指标权重分配方法。该方法提出风险评估指标权重分配模型,并改进配方回归算法高效求解相应权重,构建动态风险值计算公式。该方法解决风险评估指标权重主观性和静态性问题。实验表明该方法所得风险值具有较高的准确率和灵敏度,且有更短的响应时间。
在本文所提风险访问控制模型中,规则匹配模块仅使用ABAC策略,但对于高并发的云环境,ABAC策略更加复杂且动态性弱。未来的研究重点是通过改进规则匹配模块,进一步增强风险访问控制模型的动态性。