李 阳,刘 更,王海伟,韩 冰
(西北工业大学 陕西省机电传动与控制工程实验室,陕西 西安 710072)
工作流是为完成某一目标而由多个相关任务构成的业务流程,可在对人员和资源协调管理的基础上实现处理过程的自动化。在产品研发过程中引入安全有效的工作流机制能够更加便捷准确地传递数据,提高产品协同开发工作的效率。产品研发工作流往往涉及大量敏感信息,保证信息的安全性是产品研发工作流应用的基础。
访问控制是实现安全工作流的重要组成部分。所谓访问控制,即通过某种途径显式地准许或限制用户进行访问的能力和范围,从而限制对关键资源的访问,防止合法用户的非法操作[1]。访问控制的研究需要充分考虑应用系统的特性,不存在能够适应任何应用系统的访问控制模型。在工作流系统中,随着数据的流动,执行操作的用户在改变,用户的权限也在改变,访问决策与系统的上下文环境相关。为了贯彻安全机制的最小权限原则,工作流访问控制的重要目标是保持权限流与任务流同步[2]。目前,访问控制的研究中最受关注的模型是THOMAS和SANDHU 提出的基于任务的访问控制(Task-Based Access Control,TBAC)模 型[2]。邓集波和洪帆给出了TBAC 模型的形式化定义[3],该模型的核心思想是将权限的有效性与任务及其状态关联,具体做法是引入授权步的概念,通过授权步控制任务权限。工作过程可简单描述为:当任务开始运行时,在授权步中完成任务权限的授予或激活;当任务结束运行时,撤销或休眠执行者的任务权限,从而保持权限流与任务流同步。
TBAC模型作为工作流访问控制的基本模型得到了广泛的讨论和研究。廖旭等[4]针对产品生命周期管理系统对工作流的访问控制需求,提出将角色和任务结合起来进行授权的访问控制模型;尹建伟等[5]针对TBAC 权限管理和实现机制不足的问题,在任务规则的基础上提出一种增强权限约束支持的基于任务的访问控制模型,总结了与权限相关的各种约束规则,魏永合等[6]提出基于图的工作流访问控制模型,该模型能够直观和准确地描述工作流访问控制,设定与任务相关的图变换规则;翟治年等[7]针对TBAC控制粒度较粗的问题,提出任务状态敏感的访问控制模型,充分考虑了任务在不同状态时的权限差异,在其后续的研究中[8]将任务和角色的关联视为一种对象,作为授权的桥梁,可大幅度降低重复授权、提高授权的效率。
TBAC模型虽然能够根据任务状态及时地授予或者撤销执行任务所需的权限,但是并不能控制用户如何使用这些权限。在产品研发工作中,工作流中某些任务的执行时间较长,且工作人员往往同时担任多项任务。在这种环境中,对任务相关权限的使用有更高的要求,例如:①在零件的设计过程中,执行者应被授予修改零件CAD 文件的权限,并要求该权限只能被用于零件设计任务,而不能用于其他目的;②在初次执行零件的设计任务时,执行者拥有创建CAD 文件的权限,但是经过仿真分析发现设计问题时,零件设计任务需要重复执行,此时用户只能对原有CAD 文件进行修改,而不能再次创建文件,否则会造成数据凌乱。采用TBAC 模型的授权步进行权限控制,只能保证用户在特定的时间段内使用权限,无法控制用户如何使用这些权限。
将属性概念贯穿到任务权限的定义、配置和使用的整个过程中,可以对权限控制提供更加丰富的约束,有助于解决上述问题。基于属性的访问控制(Attribute Based Access Control,ABAC)将与访问控制相关的时间、空间、实体行为等信息作为主体、客体、权限和系统环境的属性来统一建模,通过定义属性之间的关系描述复杂的授权和访问控制约束,能够灵活地表达细粒度、复杂的访问授权和访问控制策略,增强访问控制系统的灵活性和可扩展性[9]。属性可以从不同的视角描述实体,从而使ABAC 具备强大的表达能力[10-11]。然而,ABAC 尚不成熟,没有形成统一的标准,甚至没有被广泛认同的属性定义。文献[12]在针对协同开发环境中的访问控制研究中,分别对用户和客体的属性进行了讨论,但是对访问控制中属性的分析还不够系统和全面。
本文针对产品研发工作流提出基于属性和任务的访问控制模型(A_TBAC)。对访问控制中的属性进行定义,总结属性应满足的性质,作为建立A_TBAC模型的基础。在访问控制模型中将进程作为执行访问的直接主体,进程代表用户完成操作,提出包含任务及其状态信息的任务步概念,使进程和权限相关任务步的匹配关系成为权限使用的先决条件,在满足权限流与数据流一致性要求的同时,将权限的使用范围限制在完成任务所需的访问中。
目前,ABAC尚未形成明确统一的概念,因此,本文首先给出属性的定义,并分析属性应满足的性质。
定义1 访控属性。访问控制用于为一定范围内的对象提供访问控制服务的、可标定对象某种性质的、具有指定定义域的变量,其定义域应是离散的、有限的。
任何对象的属性都可认为是无穷的,ABAC 中使用的属性是能够为访问控制服务提供支持的属性,将用于访问控制的属性称为访控属性。访控属性是变量,其实际取值需要在系统运行时确定,并作为判断访问是否合法的基础。属性的定义域应是离散的,访问控制策略的制定者应该能够清楚地分辨属性取值的含义。属性定义域中包含的元素数量必须是有限的,如果定义域中包含的元素过多,则将使访问控制策略的制订工作负担过重,甚至难以完成。
对于某一访控属性ca,其所服务的对象集为O,ca的定义域为Dca(v1,v2,…,vn),任一对象o与访控属性ca的所属关系用符号“.”表示,依据上述定义,访控属性需要满足下面两个性质:
(1)非空性 ∀o∈O,o.ca≠NULL。
(2)唯一性 ∀o∈O,∀vi,vj∈Dca,且vi≠vj,则(o.ca=vi∧o.ca=vj)=False。
其中:NULL表示空值,“∧”表示逻辑与,False表示逻辑假。非空性要求系统中的对象必须处于访控属性规定的某种状态;唯一性要求系统中的对象不能同时处于某一访控属性规定的两种状态。在根据某一访控属性进行访问决策时,非空性和唯一性保证访问决策总能给出明确的判断结果,即拒绝或接受。
例1 为了对权限的使用次数进行控制,需要为权限增加“可使用次数(un)”这一访控属性,其定义域为
该定义域包括三个值,对于某一权限p,p.un=0表示权限p不能再使用,p.un=1表示权限p只能使用一次,p.un=*表示权限p可以使用多次。
式中Dun并不包含全体正整数。虽然任一正整数都能明确表明权限可以使用的次数,但是过大的数值对安全管理员来说是难以处理的,例如,很难确定一个权限应该使用100 次还是101 次。定义域Dun={0,1,*}的确定依据是不同操作(即创建、读数、删除)对数据存在性的影响:①数据最初并不存在,用户只需创建一次,数据即已存在;②对于该数据的读取操作无论执行多少次,都不会改变数据的状态,而且无论用户读取1次或多次,其获得的信息量均相同;③用户对数据只需执行一次删除操作,数据即不再存在。
产品研发工作流的应用对象是工作流实例。工作流系统中有工作流模板和工作流实例两个重要的概念。工作流模板由多个任务组成,并指定了任务的执行次序;工作流实例根据工作流模板生成,作用于具体的对象。一个工作流模板对应多个工作流实例,产品研发工作流访问控制的对象是工作流实例。例如,针对减速器噪声分析定义的工作流模板,针对不同的减速器生成相应的工作流实例,然而不同减速器的噪声分析所处理的数据不同,参与人员也可能不同,因此可能采用不同的访问控制策略。
A_TBAC模型如图1所示,其中:权限集、用户集、进程集和任务步集是模型的基本元素,能够满足工作流访问控制的基本要求;用户属性集、权限属性集、约束集使模型能够适应更多的安全策略。
下面解释模型中的元素和关系。小写正体表示元素的符号,在讨论元素之间的关系时,以元素对应符号的斜体表示变量,以元素符号及其下标表示一个具体实例。
(1)任务步:任务及其执行状态的二元组
任务(t)是工作流的最小元素,任务在其生命周期中存在多种状态(s),如执行状态、挂起状态、完成状态等。在工作流系统中,任务状态及其变迁规则是预先定义的[13]。任务与任务状态的关系是多对多关系,一个任务存在多个状态,但在某一时刻,一个任务只能处于一个状态,一个状态可以对应多个任务。所有任务构成任务集(T),所有状态构成状态集(S),所有任务步(ts)构成任务步集(TS)。集合T,S和TS满 足
式中“×”表示集合的笛卡尔积。任务步的表达式定义为
式中t为任务的标识符,在工作流系统中可采用任务ID,以保证任务标识的唯一性。为了使表达更为清晰,后文以任务名称作为任务标识符。
(2)客体属性:与客体相关的访控属性
访问控制中的客体(o)是包含信息的被动实体,如文件、数据等。所有客体构成客体集(O)。利用客体属性能够将客体集划分为多个子集。例如,客体属性集中包括所属域(dom)和密级(sec),则
{o|o.dom=“CAD”且o.sec=“秘密”}表示所属域为“CAD”且密级为“秘密”的客体子集。
(3)权限:操作与客体的二元组
操作(h,本文用operation的近义词handle的首字母表示操作)指对客体产生某种效果的作用方式,如读、写等。所有操作构成操作集(H),所有权限(p)构成权限集P。集合H,O和P满足
权限集的表达以幂集的形式给出,说明权限可表现为集合。在现代信息系统中,由于数据种类繁多且数量巨大,难以针对每一个客体设置权限,权限一般表现为集合形式。
例2 权限p1:〈update,{o|o.dom=“CAD”且o.sec=“秘密”}〉的含义是,对所属域为“CAD”且密级为“机密”的客体进行修改(update)。
权限与任务步是多对多的关系,一个权限可能与多个任务步关联,一个任务步可能与多个权限关联。通过权限与任务步的关联使权限的有效性受到任务步的限制,从而保证工作流系统中权限流与任务流的一致。包含任务步信息的权限表示为
例3 包含任务步信息的权限p1[〈t=“齿轮系建模”,s=“执行”〉]的含义是,只有在任务“齿轮系建模”进入“执行”状态且在完成该任务的工作中,才能对所属域为“CAD”且密级为“机密”的客体进行修改(update)。
(4)权限属性:与权限相关的访控属性
权限属性(pa)依据具体的访问控制需求而设置,所有权限属性构成权限属性集(PA)。例1中的属性un(可使用次数)即为一种控制权限使用的属性。若存在pa1,pa2,…,pan,则包含这些属性信息的权限表示为
权限与任务步之间存在匹配关系,这种关系可以从两个方面解释:①将授权步视为权限的属性,要求权限只能在任务步相关的工作中使用;②每个授权步包含多个权限,这些权限是完成任务步相关工作时必需的权限,体现在任务—权限—用户的配置工作中。式(5)采用了第一种解释。
例4 权限p2:〈create,{o|o.dom=“CAD”且o.sec=“秘密”}〉[ts:〈“齿轮系建模”,“执行”〉,un=1],其含义为:在完成任务“齿轮系建模”时,可以只创建一个“秘密”级的“CAD”文件。
(5)用户:能够在某个任务中承担部分或全部工作的人力资源
所有用户(u)构成用户集(U)。用户与权限之间是多对多的关系,一个用户可以被授予多个权限,一个权限可以被授予多个用户。权限的授予可表示为函数
式中Boolean表示该函数返回一个布尔值,若函数返回True,则表示用户u拥有权限p;若返回False,则表示授权失败。
函数
表示用户u是否拥有权限p。该函数返回一个布尔值,当返回True时,表示用户u拥有权限p;当返回False时,表示用户u不拥有权限p。
例5 表达式have(u1,p1[〈t=“齿轮系建模”,s=“执行”〉])=True的含义是,用户u1拥有权限p1,该权限只有在任务“齿轮系建模”进入“执行”状态且用户执行的访问用于完成该任务时,才能使用该权限。
(6)用户属性:与用户相关的访控属性
所有用户属性(ua)构成用户属性集(UA)。用户与用户属性之间是多对多的关系。利用客体属性能够将用户集划分为多个子集。例如,用户属性集中包括部门(dept)、角色(role)和密级(sec),则
表示所属部门为“结构强度部”、角色为“结构工程师”,且密级为“机密”的用户子集。
(7)进程:具有独立功能的程序关于某个数据集合的一次运行,是代表用户完成访问的活动实体
进程(proc)代表用户完成访问的过程,所有的进程构成进程集(PROC)。进程与任务步之间是一对一的关系,即在任一时刻,一个进程只能与一个任务步关联。用户与进程之间是一对多的关系,一个用户能够创建多个进程,一个进程只能属于一个用户。工作流中的进程在执行数据访问时,应提供其相应的信息。进程表示为
进程的任务步信息说明该进程是为完成相应任务而创建的。
用户在完成工作时,需要对数据集进行大量访问,这些访问由进程来完成,访问的形式为
其含义是:由用户u创建的进程proc为完成任务t服务,任务t此时的状态为s,需要对客体o执行操作h。
对于任意一次访问accessi:〈proci[ui,〈ti,si〉],hi,oi〉,访问是否成功,取决于用户是否拥有相应的权限,决策条件描述为
其中: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)。用函数
表示访问控制中是否满足某约束c。式中:Boolean表示该函数返回一个布尔值,True表示满足约束,False表示不满足约束。
访问控制系统中,一种较重要的约束是职责分离约束(Separation of Duty,SoD),其目标是将存在利益冲突的工作分配给不同的用户完成,从而避免欺诈行为。职责分离约束包括两种类型:①静态职责分离约束(SSoD),该约束要求两个冲突权限不能分配给同一用户;②动态职责分离约束(DSoD),该约束允许将两个冲突权限分配给同一用户,但是在系统运行时,该用户只能选择使用其中的一个权限。下面以静态职责分离约束为例,说明约束在ATBAC模型中的作用。动态职责分离约束的实现在下文介绍。
例7 在某齿轮系的设计流程中,齿轮系的设计与齿轮系的静力学分析应由两个不同的用户完成,以保证设计的正确性,这两个工作流对应的权限分别为p1[〈t=“齿轮系建模”,s=“执行”〉和p3[〈t=“齿轮系静力学分析”,s=“执行”〉,这两个权限是互斥权限,不能同时授予同一用户。当存在
即用户u1已经拥有权限p1时,在用户权限配置过程中,
在工作流访问控制中存在大量的动态策略,这类策略需要在系统运行时更新用户的权限配置,如权限属性的改变和动态职责分离策略,因此在建立工作流访问控制系统实施机制之前,首先解释本文所建立的实施机制中包含的一个重要元素——义务。
为了支持动态策略,借鉴XACML 中的义务概念[14],其动机是要求用户在进行特定的访问后,由系统完成一些与用户访问相关的工作,如记录日志、发送邮件等。本文将义务定义为事件、条件和响应三元组
式中:事件(event)是进程完成的某种操作;响应(response)指事件发生后系统对权限配置的更新;条件(conditions)决定响应是否执行。
义务的格式为:
其中:event为事件的名称;(x1,x2,…,xk)为事件的参数;conditions为一些布尔表达式,只有全部满足时,才执行响应;response为一系列管理操作,这些管理操作将改变原有的用户权限配置。需要指出的是,这种动态改变用户权限配置的处理方式,需要在制订授权策略时统筹考虑授权一致性和权限可达性。下面以动态职责分离约束的实施为例说明义务机制的作用。
例8 在减速器的设计工作流中,齿轮系结构设计任务ta和齿轮系静力学分析任务tb的执行状态满足动态职责分离约束,即一个用户可同时作为两个任务步的执行用户,但是只能完成其中一个任务步,用Pa和Pb分别表示ta和tb执行状态所需的权限集,用户u1为两个任务的执行用户,则系统状态可表达为
下面以user_perms(u)表示用户u拥有的权限集;以函数Voidrevoke(u,p)表示收回用户u拥有的权限p,该函数返回空值。
为了控制用户对冲突权限的使用,设定下面的“义务”:
根据上述义务,当用户u1执行任务ta后,该用户执行tb任务的权限被全部收回,反之亦然。
需要指出的是,若任务步〈ta,“执行”〉或任务步〈tb,“执行”〉的执行用户集只包含用户u1,则会出现权限不可达的情形。应避免这种情形,故规定:
其中:∅表示空集,||表示集合的长度。上述规定不考虑任务步的次序,若考虑任务步的次序,如齿轮系结构设计任务ta先于齿轮系静力学分析任务tb,则上述规定中的({user|have(user,Pa)=True}|>1可省略。
工作流访问控制的实施机制如图2所示。该实施机制首先将工作流管理系统与访问控制系统进行解耦。在定义阶段,安全管理员通过访问控制系统中的策略管理模块,获取工作流实例和用户信息,并完成任务步—用户—权限配置。在运行阶段,系统工作包括以下步骤:①创建任务相关的进程,进程包括当前任务步和用户的信息;②在进程中产生的访问请求首先经过请求处理模块,该模块按照访问控制系统规定的格式,将请求格式化;③访问决策模块接收访问请求;④访问决策模块与策略管理模块交互,检查访问是否合法;⑤访问决策模块将访问请求和决策结果发送到工作流管理系统的业务逻辑模块;⑥访问决策模块将访问请求、决策结果和相应的权限信息发送到义务模块;⑦义务模块根据预先定义的义务和当前的权限使用信息,对现有的权限配置进行修改。
下面以协同设计仿真平台中的工作流访问控制为例,说明本文模型在工作流管理系统中的应用。
图3所示为工作流权限管理的用户权限配置界面。安全管理员在进行用户权限配置时,首先指定任务步所需的全部权限,并将这些权限授予满足一定属性条件的用户。用户权限配置是一个耗时的工作,为了提高用户权限的配置效率,图3中分别设置了流程实例级、任务级和任务状态级的权限参考配置入口,安全管理员可直接引用已有的工作流权限配置方案。
在系统运行阶段,用户通过工作流管理系统提供的任务执行入口创建相应的进程,进入任务处理窗口,如图4所示。该窗口所属的进程包括任务步信息,合法用户可在该任务运行进程中使用已配置的权限。用户通过项目数据树(用户访问入口)发送相关的访问请求,访问控制系统根据权限配置情况判别访问是否合法。图4中,系统响应的用户访问请求包括数据浏览和模型修改。
工作流访问控制中,为了保证任务流与权限流同步,传统的做法为:当任务开始运行时,在授权步中完成任务权限的授予或激活;当任务结束运行时,撤销或休眠执行者的任务权限。本文将ABAC 融入工作流的访问控制中,与现有的研究成果[12,14]相比,增加了进程属性和权限属性,并将包括任务及其状态信息的任务步作为进程和权限的属性,通过该属性的匹配关系决定权限的有效性,在保证任务流与权限流同步的同时,将权限的使用范围限制在完成任务所需的访问中,并避免频繁的授权操作。
在翟治年等的研究中[8-9],尽管仍然采用传统方法保证任务流和权限流的同步,但是充分考虑了任务在不同状态时的权限差异[8],细化了任务权限的控制粒度;将任务和角色的关联视为一种对象[9],作为授权的桥梁,大幅度降低了重复授权,提高了授权的效率。本文继承文献[8]的研究成果,考虑了任务不同状态的权限差异,未采用将角色和任务作为枢纽的授权方式,而是将用户属性作为用户筛选的依据,从不同方面约束用户,将角色视为用户的一种属性。而在用户授权方面,本文未继承文献[9]的研究成果,仅在应用实例中利用参考配置复制权限,从而降低了授权复杂性,但是这种做法需占用较多的存储空间。另外,已有文献仅考虑了静态职责分离约束,而本文则考虑了动态职责分离约束,并提出义务机制以实施动态职责分离约束。
为了更好地控制产品研发工作流中的权限配置与使用,本文在对访问控制系统中的属性进行定义和分析的基础上,提出一个A_TBAC模型。模型将进程作为权限使用的直接主体,将任务步视为进程和权限的属性,使进程和权限的任务步匹配关系成为权限使用的先决条件,从而保证工作流系统中任务流与权限流的一致性,并保证权限只能在相应的任务执行过程中使用。权限属性的设置可对权限的使用进行更加详细的控制。在本文所建立工作流访问控制的实施机制中增加了义务模块,用以支持动态的权限管理策略。最后通过在实际工程中的实施与应用,说明该模型能够满足产品研发工作流的访问控制需求。
[1]LI Fenghua,SU Mang,SHI Guozhen,et al.Research status and development trends of access control model[J].Acta Electronica Sinica,2012,40(4):805-813(in Chinese).[李凤华,苏铓,史国振,等.访问控制模型研究进展及发展趋势[J].电子学报,2012,40(4):805-813.]
[2]DENG Jibo,HONG Fan.Task-based access control model[J].Journal of Software,2003,14(1):76-82(in Chinese).[邓集波,洪 帆.基于任务的访问控制模型[J].软件学报,2003,14(1):76-82.]
[3]THOMAS R K,SANDHU R S.Task-based authorization controls:a family of models for active and enterprise-oriented authorization management[C]//Proceedings of the IFIP WG11.3 Workshop on Database Security.London,UK:Chapman&Holp,1997.
[4]LIAO Xu,ZHANG Li.Access control model for workflow management system for PLM[J].Computer Integrated Manufacturing Systems,2005,11(10):1367-1371(in Chinese).[廖旭,张 力.产品生命周期管理系统中工作流的访问控制模型[J].计算机集成制造系统,2005,11(10):1367-1371.]
[5]YIN Jianwei,XU Zhengqian,FENG Zhilin,et al.Task-based access control model supported by enhanced permission constraints[J].Journal of Computer Aided Design &Computer Graphics,2006,18(1):143-149(in Chinese).[尹建伟,徐争前,冯志林,等.增强权限约束支持的基于任务访问控制模型[J].计算机辅助设计与图形学学报,2006,18(1):143-149.]
[6]WEI Yonghe,WANG Cheng'en,LUO Xiaochuan.Access control model based on graph for workflow[J].Computer Integrated Manufacturing Systems,2009,15(5):925-931(in Chi-nese).[魏永合,王成恩,罗小川.基于图的工作流访问控制模型[J].计算机集成制造系统,2009,15(5):925-931.]
[7]ZHAI Zhinian,XI Jianqing,LU Yahui,et al.An access control model with task-state sensitivity and its CPN simulation[J].Journal of Xi'an Jiaotong University,2012,46(12):85-91(in Chinese).[翟治年,奚建清,卢亚辉,等.任务敏感的访问控制模型及其有色网仿真[J].西安交通大学学报,2012,46(12):85-91.]
[8]ZHAI Z N,LU Y H,ZHANG P J,et al.Association-based active access control models with balanced scalability and flexibility[J].Computers in Industry,2014,65(1):116-123.
[9]WANG Xiaoming,FU Hong,ZHANG Lichen.Research progress on attribute-based access control[J].Acta Electronica Sinica,2010,38(7):1660-1667(in Chinese).[王小明,付 红,张立臣.基于属性的访问控制研究进展[J].电子学报,2010,38(7):1660-1667.]
[10]JIN X,KRISHNAN R,SANDHU R.A unified attributebased access control model covering DAC,MAC and RBAC[C]//Proceedings of the 26th Annual IFIP WG11.3Conference on Data and Applications Security and Privacy.Berlin Germany:Springer-Verlag,2012.
[11]SMARI W W,CLEMENTE P,LALANDE J F.An extended attribute based access control model with trust and privacy:Application to a collaborative crisis management system[EB/OL].[2014-11-02].http://dx.doi.org/10.1016/j.future.2013.05.010.
[12]LI Yang,LIU Geng,WANG Haiwei.Access Control model based on role and attribute in collaborative development environment[J].Computer Integrated Manufacturing Systems,2014,20(6):1335-1341(in Chinese).[李 阳,刘 更,王海伟.协同开发环境中基于角色和属性的访问控制模型[J].计算机集成制造系统,2014,20(6):1335-1341.]
[13]Workflow Management Coalition.The workflow reference model[Z].WfMC-TC00-1003,1997.
[14]OASIS.OASIS eXtensible access control markup language(XACML)[Z].Version 3.0,2010.