时间:2016-02-25 10:55 文章来源:http://www.lunwenbuluo.com 作者:李阳,刘更,王海伟, 点击次数:
对于任意一次访问accessi:?proci[ui,?ti,si?],hi,oi?,访问是否成功,取决于用户是否拥有相应的权限,决策条件描述为pj:?hj,Oj?[?tj,sj?],使have(ui,pj)=True。其中:Oj?O,hi=hj,oi∈Oj,ti=tj,si=sj。
例6任务“齿轮系建模”进入“执行”状态后,用户u1要对某一齿轮模型文件cadfile进行修改,该文件满足cadfile.dom=“CAD”且cadfile.sec=“机密”,用户通过其创建的进程进行访问:access1:?proc1[u1,?“齿轮系建模”,“执行”?],update,cadfile?。用户拥有相应的权限p1:?update,{o|o.dom=“CAD”且o.sec=“秘密”}?,满足上述决策条件时,用户u1能够修改文件cadfile。
(8)约束:用于限制用户权限配置的规则或条件在为用户分配权限的过程中,必须遵循一定的约束(c),这些约束的集合称为约束集(C)。用函数BooleanStatsify(c)(10)表示访问控制中是否满足某约束c。式中:Boolean表示该函数返回一个布尔值,True表示满足约束,False表示不满足约束。
访问控制系统中,一种较重要的约束是职责分离约束(SeparationofDuty,SoD),其目标是将存在利益冲突的工作分配给不同的用户完成,从而避免欺诈行为。职责分离约束包括两种类型:①静态职责分离约束(SSoD),该约束要求两个冲突权限不能分配给同一用户;②动态职责分离约束(DSoD),该约束允许将两个冲突权限分配给同一用户,但是在系统运行时,该用户只能选择使用其中的一个权限。下面以静态职责分离约束为例,说明约束在ATBAC模型中的作用。动态职责分离约束的实现在下文介绍。
例7在某齿轮系的设计流程中,齿轮系的设计与齿轮系的静力学分析应由两个不同的用户完成,以保证设计的正确性,这两个工作流对应的权限分别为p1[?t=“齿轮系建模”,s=“执行”?和p3[?t=“齿轮系静力学分析”,s=“执行”?,这两个权限是互斥权限,不能同时授予同一用户。当存在have(u1,p1[?t=“齿轮系建模”,s=“执行”?])=True,即用户u1已经拥有权限p1时,在用户权限配置过程中,assign(u1,p3[?t=“齿轮系静力学分析”,s=“执行”?])=False。
3、实施机制
3.1义务
在工作流访问控制中存在大量的动态策略,这类策略需要在系统运行时更新用户的权限配置,如权限属性的改变和动态职责分离策略,因此在建立工作流访问控制系统实施机制之前,首先解释本文所建立的实施机制中包含的一个重要元素———义务。
为了支持动态策略,借鉴XACML中的义务概念,其动机是要求用户在进行特定的访问后,由系统完成一些与用户访问相关的工作,如记录日志、发送邮件等。本文将义务定义为事件、条件和响应三元组obligation:?event,conditions,response?。(11)式中:事件(event)是进程完成的某种操作;响应(response)指事件发生后系统对权限配置的更新;条件(conditions)决定响应是否执行。
义务的格式为:WHENevent(x1,x2,…,xk)IF(conditions)THENresponseEND其中:event为事件的名称;(x1,x2,…,xk)为事件的参数;conditions为一些布尔表达式,只有全部满足时,才执行响应;response为一系列管理操作,这些管理操作将改变原有的用户权限配置。需要指出的是,这种动态改变用户权限配置的处理方式,需要在制订授权策略时统筹考虑授权一致性和权限可达性。下面以动态职责分离约束的实施为例说明义务机制的作用。
例8在减速器的设计工作流中,齿轮系结构设计任务ta和齿轮系静力学分析任务tb的执行状态满足动态职责分离约束,即一个用户可同时作为两个任务步的执行用户,但是只能完成其中一个任务步,用Pa和Pb分别表示ta和tb执行状态所需的权限集,用户u1为两个任务的执行用户,则系统状态可表达为dsod{Pa,Pb};have(u1,Pa)=True;have(u1,Pb)=True。
下面以user_perms(u)表示用户u拥有的权限集;以函数Voidrevoke(u,p)表示收回用户u拥有的权限p,该函数返回空值。
为了控制用户对冲突权限的使用,设定下面的“义务”:WHENevent(access,p)IF((p∈Pa)∧(have(access.proc.u,Pb)=True))THENrevoke(access.proc.u,Pb)ELSEIF((p∈Pb)∧(have(access.proc.u,Pa)=True))THENrevoke(access.proc.u,Pa)END根据上述义务,当用户u1执行任务ta后,该用户执行tb任务的权限被全部收回,反之亦然。
需要指出的是,若任务步?ta,“执行”?或任务步?tb,“执行”?的执行用户集只包含用户u1,则会出现权限不可达的情形。应避免这种情形,故规定:IF{user|have(user,Pa)=True}∩{user|have(user,Pb)=True}≠?,THEN({user|have(user,Pa)=True}|>1,AND({user|have(user,Pb)=True}|>1。其中:?表示空集,||表示集合的长度。上述规定不考虑任务步的次序,若考虑任务步的次序,如齿轮系结构设计任务ta先于齿轮系静力学分析任务tb,则上述规定中的({user|have(user,Pa)=True}|>1可省略。
3.2实施机制
该实施机制首先将工作流管理系统与访问控制系统进行解耦。在定义阶段,安全管理员通过访问控制系统中的策略管理模块,获取工作流实例和用户信息,并完成任务步—用户—权限配置。在运行阶段,系统工作包括以下步骤:①创建任务相关的进程,进程包括当前任务步和用户的信息;②在进程中产生的访问请求首先经过请求处理模块,该模块按照访问控制系统规定的格式,将请求格式化;③访问决策模块接收访问请求;④访问决策模块与策略管理模块交互,检查访问是否合法;⑤访问决策模块将访问请求和决策结果发送到工作流管理系统的业务逻辑模块;⑥访问决策模块将访问请求、决策结果和相应的权限信息发送到义务模块;⑦义务模块根据预先定义的义务和当前的权限使用信息,对现有的权限配置进行修改。
4、应用实例
下面以协同设计仿真平台中的工作流访问控制为例,说明本文模型在工作流管理系统中的应用。
安全管理员在进行用户权限配置时,首先指定任务步所需的全部权限,并将这些权限授予满足一定属性条件的用户。用户权限配置是一个耗时的工作,为了提高用户权限的配置效率,分别设置了流程实例级、任务级和任务状态级的权限参考配置入口,安全管理员可直接引用已有的工作流权限配置方案。
在系统运行阶段,用户通过工作流管理系统提供的任务执行入口创建相应的进程,进入任务处理窗口。该窗口所属的进程包括任务步信息,合法用户可在该任务运行进程中使用已配置的权限。用户通过项目数据树(用户访问入口)发送相关的访问请求,访问控制系统根据权限配置情况判别访问是否合法。系统响应的用户访问请求包括数据浏览和模型修改。
5、与相关研究的对比
工作流访问控制中,为了保证任务流与权限流同步,传统的做法为:当任务开始运行时,在授权步中完成任务权限的授予或激活;当任务结束运行时,撤销或休眠执行者的任务权限。本文将ABAC融入工作流的访问控制中,与现有的研究成果相比,增加了进程属性和权限属性,并将包括任务及其状态信息的任务步作为进程和权限的属性,通过该属性的匹配关系决定权限的有效性,在保证任务流与权限流同步的同时,将权限的使用范围限制在完成任务所需的访问中,并避免频繁的授权操作。
联系方式
随机阅读
热门排行