基于属性的操作系统动态强制访问控制机制*

2023-10-24 02:52李志鹏宋连涛冯了了
计算机工程与科学 2023年10期
关键词:访问控制决策动态

丁 滟,王 鹏,王 闯,李志鹏,宋连涛,冯了了

(国防科技大学计算机学院,湖南 长沙 410073)

1 引言

访问控制[1]是数据保护的基础性技术之一。传统访问控制模型主要有自主访问控制模型DAC(Discretionary Access Control)、强制访问控制模型MAC(Mandatory Access Control)和基于角色的访问控制模型RBAC(Role-Based Access Control)3种。基于内核的强制访问控制因运行在高特权级,能够为系统带来较强的安全性保障。

随着信息系统应用场景向多元化的趋势演变,信息敏感等级可能随应用场景而动态变化,对访问控制的灵活性要求越来越高。

在云原生应用的部署运行中,应用以容器镜像的形式发布,对应用资源访问的安全策略也随之一同发布,规定容器应用对容器内部以及主机操作系统资源的访问权限。然而,由于容器发布时并不能完全确定未来运行该容器平台的安全级别,当容器镜像运行在不同安全级别的平台上时,需根据其运行环境动态调整安全策略。密码服务等高安全等级要求的计算平台一般会根据生命周期被分为出厂、安装、就绪和工作等不同状态,平台处于不同状态时,系统中运行的主体以及受保护的客体资源都不相同,对系统的资源管理、设备管理和业务处理等均提出了不同的安全管控需求。在 BYOD(Bring Your Own Device)环境下,为满足员工随时随地使用各种智能终端安全访问公司数据和应用程序资源的需求,需要根据其使用的设备类型、位置、时间和访问对象等因素对其访问权限进行动态调控,以平衡办公效率与安全。

为实现细粒度动态访问控制,研究人员提出了基于时间、空间、行为和属性等一系列访问控制模型并进行了应用性探索。Bertino等人[2]提出了一种TRBAC(Temporal Role-Based Access Control)模型,将时间引入RBAC模型,以实现在不同时间激活不同角色并解决角色激活的相互依赖问题。Joshi等人[3]提出了一个基于广义时态角色的访问控制GTRBAC(Generalized Temporal Role-Based Access Control)模型,以表示角色、用户-角色和角色-权限分配的周期性或持续时间约束。张宏等人[4]提出了一个支持空间上下文的访问控制模型,提出了空间角色概念,可根据用户的空间位置激活相匹配的角色。Cui等人[5]提出了一个扩展的基于角色的访问控制ExRBAC(Extended Role-Based Access Control)模型,以表达身份和时空约束。李凤华等人[6]提出了基于行为的访问控制模型,通过行为来综合角色、时态和环境的安全信息,增强了访问控制策略的表达能力。为解决多方访问控制下信任等级的细粒度区分问题,李唯冠等人[7]提出一种带属性策略的RBAC 权限访问控制模型,往角色中引入属性,提供了更细粒度的控制,增强了访问控制的灵活性和精确性。Hu等人[8]提出了基于属性的访问控制方案,通过设置可扩展的用户、客体和环境属性,解决了基于身份限定符的访问控制策略表达能力不足的问题。刘晓威等人[9]设计实现了一个基于环境属性的访问控制模型和原型系统,将内存占用率、CPU负载等环境属性引入访问控制的判定过程。微软从 Windows 8开始引入动态访问控制并不断改进,将访问控制主体从单纯的用户扩展到角色及访问设备,客体引入资源敏感度,并采用集中式的域控制器通过布尔函数进行统一判断授权,实现了访问权限的动态调控[10]。

上述模型考虑了多种动态因素,但大都没有落地到操作系统。文献[9]中的模型未与现有操作系统的访问控制机制相结合,在表达能力和灵活性上还存在不足。本文将属性与经典操作系统的访问控制机制相结合,提出了基于属性的操作系统动态强制访问控制模型,并在Linux平台上实现了原型系统。实验结果表明该系统能够实现灵活的权限调控,且性能开销小。

2 系统模型

2.1 理论模型

本文模型不再单纯地从操作系统访问控制主客体的安全标记信息来构建安全规则,而是引入属性对访问请求时的具体信息进行描述,并根据属性描述的对象将其分类为主体属性类别ATTSUB、客体属性类别ATTOBJ和环境属性类别ATTENV。

ATTSUB是对主体的访问控制特征的描述,包括角色和安全级别等属性。ATTOBJ是对访问对象的访问控制特征的描述,包括类别和敏感级别等属性;ATTENV是对访问请求发起时环境的访问控制特征的描述,包括时间和系统状态等属性。

各属性都有一组表示属性状态的属性值,属性值可表示为原子形式或区间形式。原子式属性如角色属性,其取值由岗位名集合组成。区间式属性如时间属性,其取值可由一组时间段组成的集合组成。

2.1.1 基本概念

(1)属性。表示为A=(c,V),其中,c∈{ATTSUB,ATTOBJ,ATTENV},表示属性A所属类别;V表示属性A的取值集合,表示属性值域。

(2)属性值域。表示为原子类型Atomic或区间类型Range取值集合,形式化定义如式(1)所示:

(1)

其中,category(A)表示属性取值类型,当category(A)为原子类型取值时,属性值域VA为原子类型集合list(A);当category(A)为区间类型取值时,属性值域VA为区间类型取值集合2list(A)。

(3)属性组合。表示为2个或多个属性之间属性值域的笛卡尔积,2个属性组合的定义如式(2)所示:

A1×A2=VA1×VA2=

{(vA1,vA2)|vA1∈VA1,vA2∈vA2}

(2)

n个属性组合可通过式(3)递归定义:

A1×A2×…×An=

A1×(A2×…×An-1×An)

(3)

(4)访问权限。表示为P=(s,o,OPS),其中s表示用户或进程等实体;o表示计算机系统中需要保护的对象,也是主体访问的目标;OPS表示主体可以对客体或系统进行的操作集合。针对某一对象的访问权限集合又被称为安全规则集。值得注意的是,本文提出的是安全规则集的通用表示形式,在具体使用时,白名单策略、多级安全策略等均可以展开为上述基础形式。

(5)属性访问权限。表示为exPA={(vA,SP,vA)|vA∈VA},其中vA∈VA表示属性A的某个属性取值;SP,vA表示属性取值为vA时所对应的访问权限集合,该访问权限集合又被称为属性安全规则集。

相比前文的访问权限,属性访问权限增加了属性维度,表示当系统处于不同属性取值时分别对应不同的属性安全规则集。引入类别属性,对访问请求首先进行类别属性分类,进而对每个属性取值制定对应的属性安全规则集。在系统安全策略加载时,将对各个属性类别中的不同属性取值所对应的访问控制规则集一次性都装载入内核,当访问发生时,系统在捕获访问请求后,通过属性匹配,定位具体的属性安全规则集来实施访问权限的动态调整。

2.1.2 模型定义

基于属性的操作系统动态强制访问控制模型,将访问控制各要素落地到操作系统层面。如图1所示,该模型由准备阶段和动态访问控制阶段组成。

Figure 1 An attribute-based dynamic mandatory access control model for operating system

在准备阶段,将预先建立的安全规则集载入内核,包括属性相关的属性安全规则集和属性无关的通用安全规则集。本文将这种能快速命中的安全规则集称为活跃安全规则集。

在动态访问控制阶段,属性收集点ACP(Attribute Collection Point)负责主体、客体和环境属性的收集、存储和管理,并周期性将属性值传递给策略判定点PDP(Policy Decision Point)。

策略执行点PEP(Policy Execution Point)截获访问控制主体的每一次访问请求,向PDP发出决策请求,接收PDP返回的决策结果,以允许或拒绝该访问请求。

PDP根据接收到的属性值集合信息映射到一组生效属性安全规则集,并与通用安全规则集分别进行决策后,将最终的联合决策结果返回给PEP。本文将访问请求到达时参与决策的安全规则集称为生效安全规则集。

PDP决策过程如图2所示。

Figure 2 Flow chart of PDP decision

策略判定点PDP接收每一个访问请求作为输入,该访问请求对应一个访问权限请求Requests=(s,o,OPS)。

首先判断访问请求是否被安全模块限制,在本文模型中,即判断其是否存在通用安全规则集,若存在,则先由生效属性安全规则集集合进行属性权限检查,再由通用安全规则集进行通用权限检查。若不存在,跳过安全模块权限检查。

对于访问权限请求(s,o,OPS),PDP首先匹配生效属性安全规则集集合进行访问控制决策。当(s,o)包含在第j个属性安全规则集SP,vAj中时,如果主体对客体的操作在规则SP,vAj[s,o]中被允许执行,对应的决策decisionj为True;否则decisionj为False。当(s,o)没有包含在第j个属性安全规则集SP,vAj中时,decisionj为None。

遍历完生效属性安全规则集后,属性决策结果decisionA为decision1&decision2&…&decisionn。当各属性决策结果为True,或True与None的组合时,decisionA为True;当各属性决策结果均为None时,decisionA为None;当某个属性决策结果为False时,decisionA为False。对于访问权限请求结果,True表示允许执行,False表示不允许执行,None表示其在属性安全规则集中未定义。

当属性决策结果非False时,PDP匹配通用安全规则集进行通用权限检查。当(s,o)包含在通用安全规则集PG中时,若主体对客体的操作在规则PG[s,o]中被允许执行,那么对应的通用决策结果decisionG为True;否则为False。当(s,o)没有包含在通用安全规则集PG中时,对应的通用访问权限决策结果decisionG等于None。

访问权限请求的最终访问决策结果为decision=decisionA&decisionG,当属性与通用访问权限决策结果均为None或存在False时,decision为False,否则decision为True。

2.2 架构模型

本文架构模型向传统操作系统访问控制技术中融入属性获取、判定及系统安全策略动态切换等相关机制,以解决访问控制不够灵活的问题。架构模型主要由属性管理、安全规则集构建与动态访问控制3个单元组成,如图3所示。

Figure 3 System architecture

属性管理单元主要是进行访问控制主体、客体和环境等属性的实时收集、存储和管理,并将属性信息传递给动态访问控制单元。

安全规则集构建单元主要是构建不同属性对应的安全规则集。审计功能完成访问信息采集,安全规则生成工具完成访问权限规则生成。

动态访问控制单元对每个访问请求进行属性和通用访问权限检查。依据从属性管理单元获取的属性信息,定位一组生效属性安全规则集,再由其与通用安全规则集分别进行决策,并返回联合决策结果。

3 基于联合决策的访问控制性能优化

在分析属性爆炸对系统访问控制决策性能影响的基础上,从时间和空间2个方面进行性能优化。时间优化方面,提出了基于属性安全规则集融合的联合决策优化方法,通过减少决策次数大幅降低了访问控制联合决策的时间开销;空间优化方面,提出了基于属性特征分组的联合决策优化方法,通过对属性特征分类以及活跃安全规则集集合设置来降低当前有效安全策略的空间占用率。

3.1 基于属性安全规则集融合的联合决策优化

为实现动态强制访问控制,本系统针对每个属性Ai,i=1,…,n都配置了一组属性访问权限exPAi,每个属性访问权限由一个属性取值vAi和属性取值所对应的属性安全规则集SP,vAi组成。

发生访问权限请求Requests=(s,o,OPS)时,最多进行n次属性访问权限检查,且每次检查都需切换至生效属性安全规则集,引入了额外时间开销,因此访问决策时间开销随属性数量增加而增大。为降低决策时间开销,本节提出了基于属性安全规则集融合的联合决策优化方法。将属性访问权限转化为属性访问权限组合,进行属性访问权限检查时,由属性组合安全规则集进行一次决策,大幅降低了决策次数,有效提升访问控制决策性能。下面以2个属性为例进行分析和介绍。

基于理论模型的决策过程,当访问权限请求仅对应2个生效属性安全规则集时,可将属性安全规则集SP,vA1和SP,vA2融合为一个属性组合安全规则集SP,vA1,vA2,其形式化定义如式(4)所示:

SP,vA1,vA2={(s,o,OPS)|(s,o,OPS)=

(4)

为使系统处于属性A1和A2中任一个属性取值组合时,都能仅用1次属性检查完成访问决策,提出了属性访问权限组合概念,其形式化定义如式(5)所示:

exPA1×exPA2=

{(vA1,vA2,SP,vA1,vA2)|vA1∈VA1,vA2∈VA2}

(5)

其中,属性访问权限组合的属性值域表示为VA1和VA22个属性值域的笛卡尔积,其访问权限集合SP,vA1,vA2是属性取值为vA1时对应的访问权限集合SP,vA1和属性取值为vA2时对应的访问权限集合SP,vA2融合得到的访问权限集合。

属性安全规则集融合算法1接收2个输入,分别是需要融合的2类属性访问权限exPA1和exPA2,输出结果是一组融合后的属性访问权限组合exPA1,A2={(vA1,vA2,SP,vA1,vA2)}。

算法1Merge算法

输入:exPA1,exPA2。

输出:merged_PA1,A2。

1.merged_exPA1,A2=[];

2.foriinrange(0,len(exPA1))do

3. (vA1,SP,vA1)=exPA1[i];

4.forjinrange(0,len(exPA2))do

5. (vA2,SP,vA2)=exPA2[j];

6.SP,set1,SP,set2,SP,set3=[],[],[];

7.for(s,o)∈SP,vA1do

8.if(s,o)∉SP,vA2

9.SP,set1+=[(s,o,SP,vA1[s,o])];

10.else

11.SP,set3+=[(s,o,SP,vA1[s,o]∩SP,vA2[s,o])];

12.endif

13.endfor

14.for(s,o)∈SP,vA2do

15.if(s,o)∉SP,vA1

16.SP,set2+=[(s,o,SP,vA2[s,o])];

17.endif

18.endfor

19.SP,vA1,vA2=SP,set1+SP,set2+SP,set3;

20.merged_exPA1,A2+=[(vA1,vA2,SP,vA1,vA2)];

21.endfor

22.endfor

23.returnmerged_exPA1,A2;

其融合过程主要分为4步。

第1步定义用于存放属性访问权限组合全集的空列表merged_exPA1,A2。

第2步从2类属性A1和A2中选择2个属性取值vA1和vA2,其对应的安全规则集SP,vA1和SP,vA2为待融合对象,记融合后的结果为SP,vA1,vA2。同时定义3个列表SP,set1,SP,set2,SP,set3。

第4步将列表SP,set1,SP,set2,SP,set3的并集存到融合安全规则集SP,vA1,vA2中,并将属性取值vA1和vA2及其对应的融合安全规则集SP,vA1,vA2添加到属性访问权限组合列表merged_exPA1,A2中。

3.2 基于属性特征分组的联合决策优化

随着属性及其属性值数量的增加,属性访问权限组合呈指数增长,其对应安全规则集的规则数量也将呈指数增长。同时将所有安全规则集加载入内核会导致极大的空间占用。内存有限时,可以只加载部分安全规则集,但是一旦访问权限匹配失败,需重新加载其余安全规则集,这将会导致性能开销大幅增加。

令函数f()表示属性安全规则集大小,对于2个属性A1和A2中的一个属性取值组合(vA1,vA2),其属性组合安全规则集SP,vA1,vA2与SP,vA1和SP,vA2有如式(6)所示的关系成立:

(6)

更一般地,对于n个属性的某个属性取值组合(vA1,vA2,…,vAn),其属性组合安全规则集与各属性安全规则集有如下关系成立:

(7)

最坏情况下各属性安全规则集互不相交,即f(SP,vA1∩SP,vA2∩…∩SP,vAn)=0,属性组合安全规则集达到最大,为各属性安全规则集大小之和。

假设系统中有n个属性A1,A2,…,An,各属性Ai,i=1,2,…,n有m个属性取值vAi,1,vAi,2,…,vAi,m,各属性取值vAi,j,j=1,2,…,m对应属性安全规则集SP,vAi,j的大小为k,且属性安全规则集之间两两互不相交,则有如式(8)所示的等式成立:

(8)

当属性取值数m和属性安全规则集大小k不变时,属性组合安全规则集大小随属性个数n的增长呈指数增长。

通过属性特征分析,根据属性取值是否可预测以及属性取值是否被动触发,将属性分为阶段稳定型属性和瞬时动态型属性,然后分别对阶段稳定型属性和瞬时动态型属性进行安全规则融合,之后将阶段稳定型属性融合结果中的每个安全规则集与瞬时动态型属性融合结果融合,此融合结果作为活跃安全规则集集合。

在实现上,将阶段稳定型属性的捕获、处理、判断逻辑置于应用层,瞬时动态型属性的相关逻辑置于内核层,当阶段稳定型属性的属性值变化时,利用安全规则加载机制将阶段稳定型属性新取值组合对应的一组安全规则集加载入内核,从而实现分组加载安全规则集,大幅减少了单次需加载的安全规则数量,在提升访问决策性能的同时,降低空间占用。

4 实验与结果分析

4.1 原型系统实现平台

实验平台配置如表1所示,本文以Linux的AppArmor模块为基础进行了原型系统实现。由于其安全规则匹配与主客体安全标记绑定,本文设计了将属性与主客体标记绑定的机制,并对安全规则匹配逻辑进行了扩展,根据属性动态匹配安全规则集以实现基于属性的动态强制访问控制。

Table 1 Configuration of experimental platform

4.2 原型系统测试

4.2.1 功能测试

在AppArmor原访问控制基础上增加了时间属性。实验设置如表2所示。

Table 2 Settings of functional experiment

图4为时间属性测试。系统状态不变,15时56分程序成功读文档,57分不能读文档。说明时间属性变化后生效属性安全规则集发生变化。

Figure 4 Attribute-time test

4.2.2 性能测试

以文件操作为例,实验设置如表3所示。

Table 3 Settings of access control performance experiment

令Torig、Tattr和Tswitch分别表示原系统、属性处理后直接命中安全规则集系统和属性处理后切换生效属性安全规则集系统在不同安全规则集规模下的运行时间。图5中Torig与Tattr用于计算某活跃安全规则集规模下属性处理时间开销。柱状图表示该时间开销与原系统访问控制时间开销的比值。

Figure 5 Performance overhead of attributes processing

性能开销W1的计算如式(9)所示:

W1=(Tattr-Torig)/Torig

(9)

计算后可知属性处理的性能平均损耗约为2.8%。

图6中Torig、Tattr与Tswitch用于计算某活跃安全规则集规模下切换生效属性安全规则集时间开销。柱状图表示该时间开销与原系统访问控制时间开销的比值。

Figure 6 Performance overhead of switching valid attribute security rule set

切换性能开销W2的计算如式(10)所示:

W2=(Tswitch-Tattr)/Torig

(10)

计算得平均性能开销为13.5%,与属性处理开销合计约16.3%,就访问控制系统而言影响不大。

从数据结果分析可知,切换开销并不会随安全规则集的数量增加而大幅增加,该系统能够适应大规模安全规则集的使用场景。

4.3 基于属性安全规则集融合的联合决策优化实验

安全规则集融合的联合决策系统记为Imp,未融合的联合决策系统记为Ori。本节测量2种系统实施访问控制的时间开销。实验设置如表4所示。实验结果如图7所示。

Table 4 Settings of time optimization experiment

Figure 7 Time overhead of joint decision

从图7可知,系统Ori决策时间在60 μs~300 μs上下波动,约分为5个层次。系统Imp的单次决策时间稳定在60 μs左右。属性安全规则集融合后,访问控制性能有了大幅提升。

4.4 基于属性特征分组的联合决策优化实验

属性总数一定时,研究系统Imp在阶段稳定型与瞬时动态型属性不同组合下生效属性组合安全规则集的大小,以验证其空间优化效果。实验设置如表5所示。实验结果如图8所示。

Table 5 Settings of space optimization experiment

Figure 8 Space occupancy of combined attributes security rule set

从图8可知,属性数一定时,随着瞬时动态型属性数量增加,空间占用呈指数增长。当瞬时动态型属性数量为2时,空间占用在100 KB以内;当其数量为5时,空间占用在2 MB以内;当其数量为10时,空间占用达到500 MB。

综上,将属性分为阶段稳定型和瞬时动态型属性,可有效控制生效安全策略空间占用率。阶段稳定型属性较多时空间优化效果尤其显著。

5 结束语

本文构建了一种基于属性的操作系统动态强制访问控制模型,使经典操作系统访问控制机制适应动态细粒度访问控制需要,并以Linux的AppArmor为基础进行了原型系统实现。实验结果表明,该系统访问控制效率影响可控。通过引入属性后对系统性能影响的分析,从时间和空间2个方面进行优化研究。模拟实验结果显示,本文的优化方法能够有效解决随着属性扩展引起的访问控制性能下降问题。未来,将在分析属性爆炸对系统访问控制决策性能影响的基础之上,尝试将该机制应用于分布式场景,并在容器平台及物联网设备等实际工程应用场景中进行进一步验证。

猜你喜欢
访问控制决策动态
国内动态
国内动态
国内动态
为可持续决策提供依据
动态
决策为什么失误了
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现