摘 要: 信息的使用者往往关注保存在介质上的信息而忽视处理信息的程序。由于保存在介质上的信息有多个操作入口,即使处理信息的程序真实地反映了组织的业务流程,也难保证信息使用者所获得的信息是正确的,也就是说对于访问数据的程序,存在外部干扰。引入数据库中的审计表功能,协助信息系统审计人员识别信息系统中数据的形成是否遵循了既定的业务流程。由于Petri网是描述流程的有力工具,对于复杂的业务流程,引入Petri网对流程进行审计是必要的。
关键词: 业务流程;审计;Petri网
工作流是业务流程的抽象,可以将孤立的信息串起来,并赋予信息特定的含义。不同的使用者对信息的理解可能是不同的,信息使用者的角色决定了该信息的主观涵义。为了保证信息系统的正确性,必须使得信息的客观涵义与信息的主观涵义一致,这是在信息系统不能高度自动化时必须达到的要求。如税务人员必须保证正确地获得信息系统中的表。信息系统中的表决定了信息的主观涵义,表中数据的形成过程决定了表中信息的客观涵义,只要二者一致,信息系统出错的可能性就被降低。
本文只关注信息被赋予的客观涵义,信息的主观涵义与客观涵义的一致性可以采用以下方法来保证:将信息系统中的特定数据远程连接到信息使用者并实时传送,这个实时信息定义主观涵义,在实时接收端严格防止增删改等写操作,只能读取。
1 相关研究
目前,关于流程审计的研究受到了理论界与实务界的广泛关注。其中具有代表性的研究成果有:Huang Shiming等人针对利用计算机辅助审计技术和工具所进行的审计的缺陷,建立了一种业务流程差距检测机制,该机制能够自动检测信息系统流程与企业内部控制流程之间的差距,帮助解决数据质量问题,提高系统的安全性[1]。李国栋等人采用组件化的方法,通过Petri网对工作流过程模型进行了组件形式的建模,并以建立网络科技信息资源加工审核系统模型为例,阐述了组件化建立工作流网的过程,并通过基于不变量的方法对工作流网的活性和有界性进行了分析,验证了模型的可行性[2]。丁志军等人利用时序Petri网对审计缓冲区管理的实现方案进行建模,进而对系统的安全性和活性进行了分析和验证[3]。王保云等人根据有色Petri网原理提出了安全审计事件可视化模型,并基于该模型,以文件类操作的安全审计事件为主线,给出了一种安全审计事件时空逻辑关系可视化实现框架[4]。李博文等人针对计算机审计工作,结合工作流和Petri网方法,建立了一套审计工作流模型,并通过化简,对模型进行了正确性验证[5]。刘志磊在研究Petri net工作流的基础上,将其应用于审计管理系统中,并且所设计的管理系统已经在某商业银行审计管理项目中得到应用,取得较好效果[6]。杨雯等人给出了面向对象工作流网的定义,分析了它的特点,并以其为工具建立了审计业务流程模型[7]。张卫祥在Petri网和工作流网定义的基础上,把流程挖掘技术引入到安全审计中,并借鉴现有安全审计常用分析方法,提出了对流程挖掘和针对工作流领域异常的分析手段和方法[8]。
2 流程的Petri网表示法
2.1 Petri网
Petri网是一种图形化描述过程的强有力工具,可以非常直观地描述一个工作流过程,由库所和变迁组成,用圆圈表示库所,矩形表示变迁,库所和变迁由有向弧相连接[9]。变迁是Petri网中的主动元素,通常表示事件、操作、转换或传输。通过实施变迁,过程从一个状态转变到另一个状态。库所是Petri网中的被动元素,它们不能改变网的状态,通常表示媒介、地理位置、阶段、状态、条件等。变迁的实施就是从每个输入库所中获得标记(每个输入库所中都要有标记,这也是条件),然后放到每个输出库所中。如图1所示,从输入库所Claim中获取标记,然后放到输出库所Under Consideration中。实施时,变迁消耗掉来自输入库所的标记,并为每个输出库所产生标记。
2.2 路由
扩展的Petri网主要由4种路由结构组成:顺序路由、并行路由、选择路由、循环路由。如图2~图5所示。
2.3 审计需要在Petri网中的反映
一个流程可以用Petri网来表示,这样可以用Petri网的理论对流程进行分析。本文引入Petri网以便对流程的执行情况进行审计。为了便于审计,要求循环路由只发生一次,这种情况下需要对流程的Petri网稍作更改。
3 流程审计
本文采用收款流程来描述对流程的审计[10]。为不失一般性,此处考虑任意的收款流程,即本例只反映收款流程的主要元素,这样做的目的是使对流程审计的方法适用于任意流程的审计工作。如果收款流程是通过计算机实现的,则需要系统分析员和软件工程师介入,系统分析员对收款流程系统的分析结果如图6所示。
软件工程师在系统分析员的指导下工作。软件工程师为开发出可用的收款流程系统,根据需要在数据库中设计表格,如表1~表4所示。
为了完成审计工作,必须对数据库系统中的所有表格进行审计,即验证在每个表格上的操作是否违反了流程。如果操作违反了流程,需要将违反流程的操作找出来,合规的流程由系统分析员在软件需求方的指导下定义。存在流程被违反的可能性是因为数据库操作入口不是唯一的,操作可以通过对软件的操作来进行,也可以进入数据库进行更改。
先来看对SKDWJB的审计。审计人员要了解在SKDWJB上有哪些操作,可以看出,如果忽略SKDWJB与ZZB和YSKB的联系,在SKDWJB上的操作有insert和update两种。
对于SKDWJB上的insert操作O1,如果O1没有违反规则,则要求在SKDJB上有与该操作对应的insert操作O2和delete操作O3。例如,O1是insert into dbo.SKDWJB(ContractID,RecordPerson,TotalAmount,AmountOnContract,Amount) values(1,'zhang san',1 000,5 000,1 000)。
在SQL Server 2008中为每张表格建立审计表,以反映表格内容的变更[11]。O1操作将在审计表dbo.Audit中产生一条记录,通过该记录的PrimaryKey字段找到O1操作涉及的主键,这里是1,通过SQLStatement字段找到O1涉及的金额,这里是1 000,用sql语句Select * from dbo.Audit where TableName=′dbo.SKDJB′ and Operation=′i′ and SQLStatement like ′%(1,1000%′在dbo.Audit表中查找在SKDJB上与O1对应的insert操作O2,用sql语句Select * from dbo.Audit where TableName=′dbo.SKDJB′ and Operation=′d′ and SQLStatement like ′% ID=1%′在dbo.Audit表中查找在SKDJB上与O1对应的delete操作O3。O2可能是insert into dbo.SKDJB(ContractID,Amount,AmountOnContract,ID) values(1,1 000,5 000,1),O3可能是delete from dbo.SKDJB where ID=1。
对于SKDWJB上的update操作O4,如果O4没有违反流程,则要求在SKDJB上有与该操作对应的insert操作O5和delete操作O6。例如,O4是update dbo.SKDWJB set RecordPerson=′li si′,TotalAmount=3 500,Amount=2 500 where ContractID=1,O4操作将在审计表dbo.Audit中产生一条记录,通过该记录的PrimaryKey字段找到O4操作涉及的主键,这里是1,通过SQLStatement字段找到O4涉及的金额,这里是2 500,用sql语句Select * from dbo.Audit where TableName=′dbo.SKDJB′and Operation=′i′ and SQLStatement like ′%(1,2 500%′在dbo.Audit表中查找在SKDJB上与O4对应的insert操作O5,用sql语句Select * from dbo.Audit where TableName=′dbo.SKDJB′ and Operation=′d′ and SQLStatement like ′% ID=6%′在dbo.Audit表中查找在SKDJB上与O4对应的delete操作O6。O5可能是insert into dbo.SKDJB(ContractID,Amount,AmountOnContract,ID) values(1,2 500,5 000,6),O6可能是delete from dbo.SKDJB where ID=6。
以上审计比较容易用计算机程序实现,但是对ZZB和YSKB的审计却不那么简单,因为对ZZB和YSKB的操作需要共享SKDWJB中的资源,这与SKDJB和SKDWJB的简单一对一关系不一样。为了降低对ZZB和YSKB的审计难度,用Petri网来描述几个表之间的资源使用关系,如图7所示,同时流程系统软件按照该Petri网进行设计。
图7中的两张表SKDWJB1和SKDWJB2是为了方便审计工作而增加的。从图7中可以看到,在SKDWJB上的insert操作有两类,一类是输入过程引发的,另一类是转帐过程引发的。前文已经描述了对输入过程引发的在SKDWJB上的insert操作的审计,现在要考虑SKDWJB和ZZB的关系,将SKDWJB上的insert操作的审计修改为以下内容:
对于SKDWJB上的insert操作O1,如果O1没有违反规则,则要求在SKDJB上有与该操作对应的insert操作O2和delete操作O3(设该条件表示为C1);或者要求在SKDWJB和SKDWJB1上都有相应的delete操作(设该条件表示为C2)。下面提供按照这条规则可以找出所有违规操作的简要证明:
令O1→C1∪C2表示:如果任意O1合乎流程,那么C1和C2必然有一个被满足。
反证:O1→C1∩C2,假设存在某一个在SKDWJB上的insert操作O1违规,那么必然在SKDJB上与O1对应的insert操作O2和delete操作O3至少缺一个(即C1),并且要求SKDWJB上相应的delete操作O4和在SKDWJB1上相应的delete操作O5至少缺一个(即C2)。只要操作是按照上面的Petri网进行,以上假设是不可能的,即不可能存在违规操作O1。即只要违规操作O1存在,就一定可以按照上面的规则将其找出。
在图7所示的Petri网中,转帐这个变迁实施的前提条件是SKDWJB和SKDWJB1中同时有一个标记,这个条件可被输入变迁满足。从图7可看出,当输入变迁实施时,给SKDWJB和SKDWJB1各输入一个标记,从而满足转帐变迁实施的条件。转帐变迁实施后,给SKDWJB输入一个标记,这个标记是记帐变迁实施的条件之一,记帐变迁实施的另一个条件是SKDWJB2中存在标记,这个条件被输入变迁的实施满足。
本文研究得出如下结论:(1)流程为服务所导向。服务需要在变化,服务质量要求在提高,因此流程是不断在变化的。有潜在审计需求的信息系统需要在系统分析中尽早考虑审计需要,考虑越早,需要做的工作越少。(2)Petri网的作用在于确定为满足审计需要增加的表。在图7中,SKDWJB1和SKDWJB2都是为了满足审计需要增加的表,如果不是为了审计,这两张表都是不必要的。(3)从审计过程中看到,选择路由是难于审计的,顺序或并行路由是易于审计的。在流程中,一张表格被多个过程使用,如果不采取增加表的措施,将产生混乱。所以,流程设计者如果考虑审计需要,就必须尽量避免选择路由出现在流程中,如此,可以为信息系统审计人员减少不必要的工作。(4)流程审计今后或许可以向更加智能化、自动化的方向发展,如开发出比较智能的算法来完成信息系统审计工作。
参考文献
[1] Huang Shiming,YEN D C,HUNG Y C,et al.A business process gap detecting mechanism between information system process flow an internal control flow[J].Decision Support Systems,2009,47(4):436-454.
[2] 李国栋,宋斌,柳长安.基于Petri网的组件化工作流模型研究[J].微计算机信息,2009,25(30):104-106.
[3] 丁志军,刘海峰,蒋昌俊.审计缓冲区的形式化模型及其验证[J].计算机科学,2006,33(5):98-103.
[4] 王保云,杨英杰,常德显,等.一种安全审计事件时空逻辑关系可视化方法[J].计算机工程,2009,35(2):151-153.
[5] 李博文,李孝忠.基于Petri网的审计工作流模型设计与验证[J].计算机应用,2006,26(Z):242-243.
[6] 刘志磊.Petri Nets工作流及其在审计管理中的应用[D].北京:北京邮电大学,2008.
[7] 杨雯,刘厚泉,刘曼.基于高级Petri网的审计业务流程建模[J].福建电脑,2007(11):104-105.
[8] 张卫祥.面向工作流系统基于流程挖掘的安全审计技术研究与实现[D].上海:华东师范大学,2007.
[9] AALST V W,HEE K V.工作流管理[M].王建民,闻立杰,译.北京:清华大学出版社,2004.
[10] 张瑞君,蒋砚章.会计信息系统[M].北京:中国人民大学出版社,2009.
[11] NIELSEN R.SQL Server 2008宝典[M].马振晗,任鸿,高宇辉,译.北京:清华大学出版社,2011.