杨宏宇,宁宇光
(中国民航大学 计算机科学与技术学院,天津 300300)
云环境下传统的访问控制模型存在使用静态访问控制策略无法动态匹配规则[1],大量历史用户行为信息未得到高效利用,以及未评估当前系统安全状态等问题.研究者们通过引入风险因素改进传统的访问控制模型,增强访问控制模型的自适应性[2].
目前云平台风险访问控制模型研究大致分为两类.第1类侧重评估云平台系统风险,如基于风险评估图的访问控制模型[3],该模型通过系统漏洞构建风险评估图,但未从用户层面进行风险分析.第2类侧重评估当前访问请求的风险,如:多风险指标访问控制模型[4],该模型仅评估当前用户访问请求的风险,未考虑用户历史行为信息;基于属性的且有风险意识的云动态访问控制模型[5],该模型评估风险时并未有效结合系统安全状态和用户历史行为信息.
文献[6]提出将用户历史行为信息和系统安全状态量化为风险评估指标评估当前访问请求的风险,但并未给出具体的风险访问控制模型.文献[7]提出动态风险访问控制(Dynamic Risk-based Access Control,DRAC)模型,该模型利用数据流方法量化用户历史行为信息并结合系统安全状态构建风险评估指标,但存在使用基于属性的访问控制(Attribute Based Access Control,ABAC)策略无法动态匹配规则和风险评估指标权重固定的问题.
由于大多数访问控制模型使用静态ABAC策略无法适应云环境,目前国内外研究工作主要是利用角色访问控制改进ABAC策略,但扩展性差且较为复杂[1].而对于风险评估指标权重固定的问题,目前常用的动态权重分配方法如归一法、主成分分析法和熵值法等均存在准确率较低或实时性较差的问题[8].针对ABAC改进方法复杂和风险评估指标权重固定的不足,文中提出一种云平台动态风险访问控制模型(Cloud platform Dynamic Risk Access Control model,CDRAC).首先选择表达性和灵活性均较高的事件推演(Event Calculus,EC)机制改进ABAC策略[9],增强规则匹配时的自适应性和灵活性,使其适应复杂的云环境;其次,利用系统安全状态和用户历史行为信息构建风险评估指标,提出分配风险评估指标权重的数学模型并设计配方回归(Programming Regression,PR)[10]算法求解相应权重,提高风险值对访问请求的灵敏度.
(1) 针对云平台使用静态ABAC策略无法动态匹配规则的问题,文中在ABAC中增加了EC机制.EC机制包括规则评估和信任度计算两个过程.其中,规则评估对当前规则是否被匹配、规则条件是否成立以及规则效用进行评估,若3个条件都成立,则当前规则可用; 信任度计算为访问请求的主体、客体、活动和环境赋予信任值,若访问请求的主客体属性发生改变,则计算信任度实现动态控制.在此基础上,文中设计一个基于EC机制的动态规则匹配(Dynamic Rule Matching, DRM)模块.
(2) 针对风险评估指标权重固定的问题,设计一个动态风险评估(Dynamic Risk Assessment, DRA)模块,实现通过用户历史行为信息和系统安全状态动态分配风险评估指标权重,提高风险值对访问请求的灵敏度.
文中提出的云平台动态风险访问控制模型框架如图1所示,其中DRM模块框架如图2所示.
图1 CDRAC模型框架图2 DRM模块框架
CDRAC模型包括DRM模块、DRA模块、阈值计算模块和最终决定(访问控制决定)模块等主要模块,模块的核心功能设计如下:
(1) DRM模块利用ABAC策略与访问请求进行规则匹配,再使用EC机制评估规则匹配的结果,得到DRM模块的评估结果P.
(2) DRA模块通过提取的历史风险评估指标和P计算各指标的权重,分配相应权重计算当前访问请求的风险值R.
(3) 动态阈值计算模块采用历史P和历史R实时计算风险阈值λ.
(4) 最终决定模块综合阈值λ、当前访问请求的评估结果P和风险值R做出最终访问控制决定.
ABAC属于静态访问控制策略,无法处理云环境下的一些特殊情形,如:
(1) 当访问主客体属性改变时,无法动态调整访问规则.
(2) 当访问背景(时间、位置等)发生改变时,无法动态调整相应规则.
定义3个事件Ek、5个状态Fk(k=1, 2, …, 5)和5个基本操作,其中,状态Fk表示EC机制对事件Ek处理的结果.
E1表示规则匹配(MR)或规则未匹配(MMR);E2表示访问请求信任度评估成功(TES)或访问请求信任度评估失败(TEF);E3表示同意规则(AR)、拒绝规则(DR)或规则不可用(RDA).
F1表示规则目标成立(RTHs);F2表示信任度成立(THs);F3表示规则被同意(RIP)、规则被拒绝(RID)或规则不可用(RINA);F4表示规则条件成立(Con);F5表示规则效果成立(EP).
Happens(e,t)表示事件e在时间t发生; HoldsAt(f,t)表示在时间t,状态f发生; IsValue(a,b)表示b在属性a中存在; AttTl(Subject, tl1)表示获得主体属性(Subject)信任值tl1; ReqTl(tl2)表示获得客体(Object)、活动(Action)和访问发生时间(time)属性信任值的平均值tl2.
(reqi, Events)为第i(i=1, 2, …)条访问请求以及存储发生事件和状态的结构体变量组成的二元组.
根据图2可知,DRM模块分别包含规则匹配、信任度计算和规则评估3个子模块,每个子模块由事件和状态评估组成.Events由请求发生模块生成,将其分别传入3个子模块,在子模块中依次进行事件和状态评估,并使用Events接收评估结果.状态评估结束后,将状态结果传入结果输出模块,Events由相应子模块返回请求发生模块,进行下一模块的评估工作.为保证安全性,防止恶意篡改,可将结果输出中3个状态结果与最后Events中的F1、F2、F3匹配,具体执行步骤如下:
(1) 请求发生模块生成一系列reqi(i=1, 2, …)和Events结构体变量.
(2) 将(reqi, Events)传入规则匹配模块进行规则匹配; 在事件和状态评估中,若规则成功匹配,则Events结构体添加事件MR,状态RTHs为真; 否则,添加事件MMR,状态RTHs为假; 状态F1(RTHs)传入结果输出模块,Events返回请求发生模块.
(3) 将(reqi, Events)传入信任度计算模块进行评估; 在事件和状态评估中,若主体的信任值大于等于客体、活动和背景信任值的平均值,则Events结构体添加事件TES,状态THs为真; 否则,添加事件TEF,状态THs为假; 状态F2(THs)传入结果输出模块,Events返回请求发生模块.
(4) 将(reqi, Events)传入规则评估模块进行评估;在事件和状态评估中,若reqi与某一条规则匹配,则对该规则的条件(Condition)和效用(Effect)进行评估,并在Events中添加事件AR/DR/RDA,状态F3为RIP/RID/RINA成立; 状态F3和Events传入结果输出模块.
(5) 在Events中,F1、F2和F3与状态1、状态2和状态3进行匹配,若匹配成功,则输出结果; 否则,DRM评估失败.
根据事件推演的基本理论,为方便起见,文中仅给出核心EC推理公式,并做如下设定:若信任度成立,则效果(effect)成立; 否则,effect不成立.评估条件时,参考指标使用访问请求发生时间.reqi由访问主体、客体、活动和访问发生时间组成.将事件Ek和状态Fk作为某一规则r的函数.
(1) 规则匹配模块中事件和状态的EC描述如下所示:
事件描述:
(a) Happens(MR(r),t)→IsValue(Subject, value1) & IsValue(Object, value2) & IsValue(Action, value3).
(b) Happens(MMR(r),t)→!IsValue(Subject, value1) | !IsValue(Object, value2) | !IsValue(Action, value3).
状态描述:
HoldsAt(RTHs(r),t+1);!HoldsAt(RTHs(r),t+1).
从上述EC描述可知,若t时刻,规则匹配成功(事件MR发生),则t+1时刻,状态RTHs为真; 否则,状态RTHs为假.将规则目标状态传入下一个模块继续进行评估.
(2) 信任度计算模块中事件和状态的EC描述如下所示:
事件描述:
(a) Happens(TES(r),t) & AttTl(Subject, tl1) & ReqTl(tl2)→tl1>tl2.
(b) Happens(TEF(r),t) & AttTl(Subject, tl1) & ReqTl(tl2)→tl1≤tl2.
(c) Happens(DR(r),t+1)→HoldsAt(RTHs(r),t) & !HoldsAt(THs(r),t+1).
状态描述:
(a) HoldsAt(EP(r),t)→Happens(TES(r),t);!HoldsAt(EP(r),t)→Happens(TEF(r),t).
(b) HoldsAt(THs(r),t+1);!HoldsAt(THs(r),t+1);HoldsAt(RID(r),t+1).
从上述EC描述可知,若访问请求主体属性信任值,大于其他属性信任值和的平均值,则事件TES发生,下一时刻状态THs为真; 否则,事件TEF发生,下一时刻状态THs为假.若规则匹配成功,而事件TEF发生,则事件DR发生,状态RID成立.将规则目标状态和信任度状态传入下一个模块继续进行评估.
(3) 规则评估模块中事件和状态的EC描述如下所示:
事件描述:
(a) Happens(AR(r),t)→HoldsAt(RTHs(r),t) & HoldsAt(THs(r),t) & HoldsAt(Con(r),t) & HoldsAt(EP(r),t).
(b) Happens(DR(r),t)→HoldsAt(RTHs(r),t) & HoldsAt(THs(r),t) & HoldsAt(Con(r),t) & !HoldsAt(EP(r),t).
(c) Happens(RDA(r),t)→!Holds(RTHs(r),t) | (HoldsAt(MR(r),t) & HoldsAt(THs(r),t) & !HoldsAt(Con(r),t)).
状态描述:
HoldsAt(RIP(r),t+1);HoldsAt(RID(r),t+1);HoldsAt(RINA(r),t+1).
从上述EC描述可知,规则、信任度、条件和效果状态同时为真,事件AR发生,下一时刻状态RIP成立.事件DR发生与信任度评估中的相同.为不失一般性,文中给出其完整表述,下一时刻状态RID成立.若规则目标或规则条件(访问发生时间)状态为假,则事件RDA发生,下一时刻状态RINA成立.
大部分风险评估指标权重分配方法[4, 6-7]采用均分固定的权重,但存在如下问题:
(1) 风险评估指标权重固定且不能动态调整.
(2) 风险值对访问请求的灵敏度较低.
定义1 风险阈值λ为
λ=[g(A)+g(B)]/2 .
(1)
用户自定义计算λ的访问请求数量并将访问请求分为A、B集合,A集合存放DRM模块评估接受 (P=0) 的访问请求风险值,B集合存放DRM模块评估拒绝 (P=1) 的访问请求风险值.g(·)计算集合中访问请求风险值的平均值.
定义2 灵敏度S为
S=g(B)-g(A) .
(2)
灵敏度S定义为P=1时访问请求的风险平均值与P=0时访问请求的风险平均值之差.由于灵敏度S反映风险值的波动,而风险评估指标权重影响风险值,所以灵敏度与当前风险评估指标权重密切相关.
文中使用风险评估指标(I,T,V),其中I表示当前访问请求的访问活动(读、写等)在历史记录中被DRM模块允许 (P=0) 的频率[6];T根据访问请求的主体属性分配具体数值,主体属性越高,T越小,如:管理者的T值小于普通成员;V使用通用漏洞与披露(Common Vulnerabilities and Exposures,CVE)标准中关于Hadoop相关漏洞评分,即将CDRAC部署在以Hadoop为基础的云平台下.根据(I,T,V),风险值为
R+/-=a1I+a2T+a3V,
(3)
其中,a1+a2+a3=1.若a1、a2和a3由人为设定且不能动态改变,则正常访问请求的风险值R+大于恶意访问请求的风险值R-的频率增加,从而无法得到合理阈值,降低风险值对访问请求的灵敏度.若R+→0 且R-→1,则R--R+→1,阈值制定的区间范围增大,风险值对访问请求的灵敏度S增加.而DRM模块中正常访问请求P=0,恶意访问请求P=1,若R+/-→P,则可利用风险评估指标(I,T,V)动态设定相应权重.文中设计的动态分配风险评估指标权重的数学模型为
文中利用广度优先搜索算法和剪枝策略设计并优化PR算法以求解上述模型.优化后的PR算法在最小二乘法的基础上首先分层存储消去变换后的矩阵,然后逐层检查并删除不满足条件的矩阵.PR算法设计如下:
算法PR算法.
输入: 用户历史风险数据X,规则评估结果Y
输出: 风险评估指标权重b*,误差极小值Qmin
符号说明如下:TiB表示B矩阵的消去变换;b(·)表示从消去变换后的矩阵中得到b*(矩阵最后一列,第2行到倒数第2行的元素);Q(·)表示从消去变换后的矩阵中得到Qmin(矩阵最后一行,最后一列的元素); structBj表示存放层数Layer为j+1、误差极小值Qmin和矩阵B的数据结构; sweep(M,i)表示执行消去变换TiM; checkB(·)表示获得当前层矩阵中的b*; remove(·)表示删除结构体中元素.
为验证DRM模块、DRA模块和CDRAC模型的性能,在PC机上搭建实验环境.其主要配置如下: 硬件配置为Inter Core i3-2350M CPU @ 230 GHz,4.0 GB RAM;软件环境为Windows7,64位操作系统,MATLAB R2010b.
数据集由不同的访问请求组成.每条访问请求包含主体、客体、访问活动和访问发生时间4个主属性,每个主属性由不同子属性组成,子属性由相应的成员组成,例如: 主体={管理者,员工,非员工,…},管理者={管理者1,管理者2,管理者3,…}.从4个主属性的相应子属性下随机选择成员组成一条访问请求,模拟生成 1 550 条访问请求.DRM模块评估该 1 550 条访问请求得到评估结果P; 量化 1 550 条访问请求得到风险评估指标(I,T,V).
训练集为前 1 500 条访问请求的(I,T,V)和DRM模块评估结果Ptrain; 测试集为后50条访问请求的(I,T,V)和DRM模块评估结果Ptest,由正常访问请求 (P=0) 和恶意访问请求 (P=1) 间隔组成.
(1) 针对2.1节情形1,实验生成关于用户1的正常访问请求并使用DRM模块对其评估,当前用户1主体属性较低(非员工).经过一段时间后提高用户1的主体属性(员工),再使用DRM模块评估用户1的访问请求,评估结果如表1所示.从表1可见,当用户1主体属性低时,即使规则成功匹配,信任度评估仍会失败(TEF); 当用户1主体属性提高时,信任度评估成功(TES).DRM模块实现根据主体属性的改变动态调整评估策略.
表1 主体属性改变DRM评估结果
表2 主体访问背景改变DRM评估结果
(2) 针对2.1节情形2,实验生成有较高主体属性的正常访问请求,用DRM模块对其评估; 再将访问请求中时间调整为正常时间 (9:00~ 17:00) 以外并使用DRM模块对其评估,评估结果如表2所示.从表2可见,由于主体访问背景(时间、地点等)非法,即使主体拥有较高权限,DRM模块也能动态调整访问控制策略.
实验步骤设计如下:
步骤1 从训练集中随机选取1 000、500、250、100条访问请求的风险评估指标和对应的DRM评估值P,构造4组训练集.
步骤2 通过4组训练集分别训练动态分配风险评估指标权重的数学模型,运用PR算法得到4组权重b*和误差极小值Qmin,如表3所示.
步骤3 将4组b*代入式(3),构造动态风险值计算公式.
步骤4 间隔1 s,依次将测试集的访问请求代入动态风险值计算公式,得到测试集中访问请求的风险值,如图3中虚线所示.
步骤5 固定风险评估指标权重采用文献[4, 6-7]中权重分配方法,为风险评估指标均分相等的权重 (1/3, 1/3, 1/3),将该权重代入式(3),构造固定风险值计算公式.
步骤6 间隔1 s,依次将测试集的访问请求代入固定风险值计算公式,得到测试集中访问请求的风险值,如图3中实线所示.
步骤7 通过步骤4、步骤6计算的风险值和式(1)、式(2)得到相应的阈值λ、灵敏度S,如表3所示.
表3 权重分配方法相关参数
图3中,P=0的两条曲线表示正常访问请求在2种权重分配方案下风险值随时间的变化趋势,P=1 的两条曲线表示恶意访问请求在2种权重分配方案下风险值随时间的变化趋势.从图3可见,动态分配指标权重计算的风险值波动较大,大部分P=0 的访问请求风险值被降低,大量减少R+>R-出现的频率;P=1 和P=0 访问请求的风险值分布间隔增加,使得阈值可设定的区间范围增大.从表3可见,动态分配权重所得灵敏度要高于固定指标权重,提高了风险值对访问请求的灵敏度.
图3 两种权重分配方法所得风险值分布
分析CDRAC模型、DRAC模型和ABAC模型对不同数量访问请求的响应时间,实验步骤设计如下:
步骤1 通过MATLAB仿真实现CDRAC模型、DRAC模型和ABAC模型.
步骤2 随机模拟生成9组访问请求,每组分别包含80,160,…,20 480 条访问请求.
步骤3 分别使用3种模型评估9组访问请求并统计模块响应时间,结果如图4(a)所示.
步骤4 记录并统计3种模型对150,250,…,650条访问请求响应时间,如图4(b)所示.
从图4(a)可见,随着访问请求数量增加,CDRAC、DRAC和ABAC模型的响应时间也在增加,但CDRAC对访问请求的响应时间小于DRAC和ABAC模型.由于DRAC和ABAC模型在进行规则匹配时,需要更多的时间匹配规则,而文中的DRM模块通过对规则实现继承机制缩减了规则的数量,所以文中提出的CDRAC模型在访问请求数量较多时,相比于另外两种模块在响应时间方面更有优势.从图4(b)可见,CDRAC模型与DRAC模型对访问请求的响应时间最高差距达到 100 ms,CDRAC模型与ABAC模型对访问请求响应时间最高差距为 150 ms,所以对于数据量较小的访问请求CDRAC模型与另2种模型响应时间相差不大,但仍然优于另外两种模型.
(1) 细粒度访问授权.DRM模块以ABAC策略为基础,制定访问规则时,将客体、活动和环境精确为具体的资源,满足最小权限原则[11].EC机制引入ABAC策略,增加信任度评估和规则评估模块.信任度评估模块分析访问请求中具体属性信任值,规则评估模块分析匹配规则的条件(访问时间等)、效果,同时依据EC机制较强的表达能力,实现细粒度访问控制.
(2) 约束描述.ABAC策略不具有约束描述,但EC机制改进ABAC后,可以制定时间约束推理公式,如:若规则被允许,则事件AR持续 2 min; 若规则被拒绝,则事件DR持续 1 min.具体EC推理公式如下:
(a) Happens(AR(r),t1) & (Happens(AR(r),t2) | Happens(DR(r),t2) | Happens(RDA(r),t2))→t2-t1=2.
(b) Happens(DR(r),t1) & (Happens(AR(r),t2) | Happens(DR(r),t2) | Happens(RDA(r),t2))→t2-t1≥1.
(3) 授权动态性.DRM模块中存在信任度和规则评估,使得在不修改规则的前提下,能够动态进行授权.DRA模块中,风险评估指标权重可自适应调整,使得风险值的灵敏度增强,能较好适应云环境.
(4)自主授权.在DRM模块中,可根据需求灵活制定EC核心推理公式,实现不同程度的访问控制.在访问控制决定模块中,根据可扩展访问控制标记语言(eXtensible Access Control Markup Language,XACML)中规则组合算法,如:拒绝覆盖等,结合DRM和DRA模块评估结果以及阈值,做出最终访问授权.
针对大多数风险访问控制模型无法动态匹配规则和风险指标权重固定的问题,文中提出一种云平台动态风险访问控制模型(CDRAC).为使其适应云平台的规则评估,通过事件推演机制改进ABAC策略并构建动态规则匹配模块; 为增强风险值对访问请求的灵敏度,在提出的风险评估模块中动态分配指标权重.实验表明,CDRAC具有较高的自适应性且该模型所得风险值对访问请求有较高的灵敏度.