借助Petri网进行流程审计*

2012-08-08 02:31胡记兵黄作明柳巧玲
网络安全与数据管理 2012年16期
关键词:库所涵义变迁

胡记兵,黄作明,柳巧玲

(南京审计学院 信息科学学院 信息系统审计实验中心,江苏 南京210029)

工作流是业务流程的抽象,可以将孤立的信息串起来,并赋予信息特定的含义。不同的使用者对信息的理解可能是不同的,信息使用者的角色决定了该信息的主观涵义。为了保证信息系统的正确性,必须使得信息的客观涵义与信息的主观涵义一致,这是在信息系统不能高度自动化时必须达到的要求。如税务人员必须保证正确地获得信息系统中的表。信息系统中的表决定了信息的主观涵义,表中数据的形成过程决定了表中信息的客观涵义,只要二者一致,信息系统出错的可能性就被降低。

本文只关注信息被赋予的客观涵义,信息的主观涵义与客观涵义的一致性可以采用以下方法来保证:将信息系统中的特定数据远程连接到信息使用者并实时传送,这个实时信息定义主观涵义,在实时接收端严格防止增删改等写操作,只能读取。

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所示。

为了完成审计工作,必须对数据库系统中的所有表格进行审计,即验证在每个表格上的操作是否违反了流程。如果操作违反了流程,需要将违反流程的操作找出来,合规的流程由系统分析员在软件需求方的指导下定义。存在流程被违反的可能性是因为数据库操作入口不是唯一的,操作可以通过对软件的操作来进行,也可以进入数据库进行更改。

表1 收款单据表(SKDJB)

表2 收款单文件表(SKDWJB)

表3 总帐表(ZZB)

表4 预收款表(YSKB)

先来看对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和在SKD-WJB1上相应的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.

猜你喜欢
库所涵义变迁
我的仙人掌
基于FPGA的Petri 网模拟器设计与实现
40年变迁(三)
40年变迁(一)
40年变迁(二)
探究《说文》省形的真实涵义
清潩河的变迁
我对国防教育的涵义的理解
财务失败涵义、原因
基于一种扩展模糊Petri网的列车运行晚点致因建模分析