摘 要: 信息的使用者往往關(guān)注保存在介質(zhì)上的信息而忽視處理信息的程序。由于保存在介質(zhì)上的信息有多個操作入口,即使處理信息的程序真實地反映了組織的業(yè)務(wù)流程,也難保證信息使用者所獲得的信息是正確的,也就是說對于訪問數(shù)據(jù)的程序,存在外部干擾。引入數(shù)據(jù)庫中的審計表功能,協(xié)助信息系統(tǒng)審計人員識別信息系統(tǒng)中數(shù)據(jù)的形成是否遵循了既定的業(yè)務(wù)流程。由于Petri網(wǎng)是描述流程的有力工具,對于復(fù)雜的業(yè)務(wù)流程,引入Petri網(wǎng)對流程進行審計是必要的。
關(guān)鍵詞: 業(yè)務(wù)流程;審計;Petri網(wǎng)
工作流是業(yè)務(wù)流程的抽象,可以將孤立的信息串起來,并賦予信息特定的含義。不同的使用者對信息的理解可能是不同的,信息使用者的角色決定了該信息的主觀涵義。為了保證信息系統(tǒng)的正確性,必須使得信息的客觀涵義與信息的主觀涵義一致,這是在信息系統(tǒng)不能高度自動化時必須達到的要求。如稅務(wù)人員必須保證正確地獲得信息系統(tǒng)中的表。信息系統(tǒng)中的表決定了信息的主觀涵義,表中數(shù)據(jù)的形成過程決定了表中信息的客觀涵義,只要二者一致,信息系統(tǒng)出錯的可能性就被降低。
本文只關(guān)注信息被賦予的客觀涵義,信息的主觀涵義與客觀涵義的一致性可以采用以下方法來保證:將信息系統(tǒng)中的特定數(shù)據(jù)遠程連接到信息使用者并實時傳送,這個實時信息定義主觀涵義,在實時接收端嚴格防止增刪改等寫操作,只能讀取。
1 相關(guān)研究
目前,關(guān)于流程審計的研究受到了理論界與實務(wù)界的廣泛關(guān)注。其中具有代表性的研究成果有:Huang Shiming等人針對利用計算機輔助審計技術(shù)和工具所進行的審計的缺陷,建立了一種業(yè)務(wù)流程差距檢測機制,該機制能夠自動檢測信息系統(tǒng)流程與企業(yè)內(nèi)部控制流程之間的差距,幫助解決數(shù)據(jù)質(zhì)量問題,提高系統(tǒng)的安全性[1]。李國棟等人采用組件化的方法,通過Petri網(wǎng)對工作流過程模型進行了組件形式的建模,并以建立網(wǎng)絡(luò)科技信息資源加工審核系統(tǒng)模型為例,闡述了組件化建立工作流網(wǎng)的過程,并通過基于不變量的方法對工作流網(wǎng)的活性和有界性進行了分析,驗證了模型的可行性[2]。丁志軍等人利用時序Petri網(wǎng)對審計緩沖區(qū)管理的實現(xiàn)方案進行建模,進而對系統(tǒng)的安全性和活性進行了分析和驗證[3]。王保云等人根據(jù)有色Petri網(wǎng)原理提出了安全審計事件可視化模型,并基于該模型,以文件類操作的安全審計事件為主線,給出了一種安全審計事件時空邏輯關(guān)系可視化實現(xiàn)框架[4]。李博文等人針對計算機審計工作,結(jié)合工作流和Petri網(wǎng)方法,建立了一套審計工作流模型,并通過化簡,對模型進行了正確性驗證[5]。劉志磊在研究Petri net工作流的基礎(chǔ)上,將其應(yīng)用于審計管理系統(tǒng)中,并且所設(shè)計的管理系統(tǒng)已經(jīng)在某商業(yè)銀行審計管理項目中得到應(yīng)用,取得較好效果[6]。楊雯等人給出了面向?qū)ο蠊ぷ髁骶W(wǎng)的定義,分析了它的特點,并以其為工具建立了審計業(yè)務(wù)流程模型[7]。張衛(wèi)祥在Petri網(wǎng)和工作流網(wǎng)定義的基礎(chǔ)上,把流程挖掘技術(shù)引入到安全審計中,并借鑒現(xiàn)有安全審計常用分析方法,提出了對流程挖掘和針對工作流領(lǐng)域異常的分析手段和方法[8]。
2 流程的Petri網(wǎng)表示法
2.1 Petri網(wǎng)
Petri網(wǎng)是一種圖形化描述過程的強有力工具,可以非常直觀地描述一個工作流過程,由庫所和變遷組成,用圓圈表示庫所,矩形表示變遷,庫所和變遷由有向弧相連接[9]。變遷是Petri網(wǎng)中的主動元素,通常表示事件、操作、轉(zhuǎn)換或傳輸。通過實施變遷,過程從一個狀態(tài)轉(zhuǎn)變到另一個狀態(tài)。庫所是Petri網(wǎng)中的被動元素,它們不能改變網(wǎng)的狀態(tài),通常表示媒介、地理位置、階段、狀態(tài)、條件等。變遷的實施就是從每個輸入庫所中獲得標記(每個輸入庫所中都要有標記,這也是條件),然后放到每個輸出庫所中。如圖1所示,從輸入庫所Claim中獲取標記,然后放到輸出庫所Under Consideration中。實施時,變遷消耗掉來自輸入庫所的標記,并為每個輸出庫所產(chǎn)生標記。
2.2 路由
擴展的Petri網(wǎng)主要由4種路由結(jié)構(gòu)組成:順序路由、并行路由、選擇路由、循環(huán)路由。如圖2~圖5所示。
2.3 審計需要在Petri網(wǎng)中的反映
一個流程可以用Petri網(wǎng)來表示,這樣可以用Petri網(wǎng)的理論對流程進行分析。本文引入Petri網(wǎng)以便對流程的執(zhí)行情況進行審計。為了便于審計,要求循環(huán)路由只發(fā)生一次,這種情況下需要對流程的Petri網(wǎng)稍作更改。
3 流程審計
本文采用收款流程來描述對流程的審計[10]。為不失一般性,此處考慮任意的收款流程,即本例只反映收款流程的主要元素,這樣做的目的是使對流程審計的方法適用于任意流程的審計工作。如果收款流程是通過計算機實現(xiàn)的,則需要系統(tǒng)分析員和軟件工程師介入,系統(tǒng)分析員對收款流程系統(tǒng)的分析結(jié)果如圖6所示。
軟件工程師在系統(tǒng)分析員的指導(dǎo)下工作。軟件工程師為開發(fā)出可用的收款流程系統(tǒng),根據(jù)需要在數(shù)據(jù)庫中設(shè)計表格,如表1~表4所示。
為了完成審計工作,必須對數(shù)據(jù)庫系統(tǒng)中的所有表格進行審計,即驗證在每個表格上的操作是否違反了流程。如果操作違反了流程,需要將違反流程的操作找出來,合規(guī)的流程由系統(tǒng)分析員在軟件需求方的指導(dǎo)下定義。存在流程被違反的可能性是因為數(shù)據(jù)庫操作入口不是唯一的,操作可以通過對軟件的操作來進行,也可以進入數(shù)據(jù)庫進行更改。
先來看對SKDWJB的審計。審計人員要了解在SKDWJB上有哪些操作,可以看出,如果忽略SKDWJB與ZZB和YSKB的聯(lián)系,在SKDWJB上的操作有insert和update兩種。
對于SKDWJB上的insert操作O1,如果O1沒有違反規(guī)則,則要求在SKDJB上有與該操作對應(yīng)的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中為每張表格建立審計表,以反映表格內(nèi)容的變更[11]。O1操作將在審計表dbo.Audit中產(chǎn)生一條記錄,通過該記錄的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對應(yīng)的insert操作O2,用sql語句Select * from dbo.Audit where TableName=′dbo.SKDJB′ and Operation=′d′ and SQLStatement like ′% ID=1%′在dbo.Audit表中查找在SKDJB上與O1對應(yīng)的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上有與該操作對應(yīng)的insert操作O5和delete操作O6。例如,O4是update dbo.SKDWJB set RecordPerson=′li si′,TotalAmount=3 500,Amount=2 500 where ContractID=1,O4操作將在審計表dbo.Audit中產(chǎn)生一條記錄,通過該記錄的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對應(yīng)的insert操作O5,用sql語句Select * from dbo.Audit where TableName=′dbo.SKDJB′ and Operation=′d′ and SQLStatement like ′% ID=6%′在dbo.Audit表中查找在SKDJB上與O4對應(yīng)的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。
以上審計比較容易用計算機程序?qū)崿F(xiàn),但是對ZZB和YSKB的審計卻不那么簡單,因為對ZZB和YSKB的操作需要共享SKDWJB中的資源,這與SKDJB和SKDWJB的簡單一對一關(guān)系不一樣。為了降低對ZZB和YSKB的審計難度,用Petri網(wǎng)來描述幾個表之間的資源使用關(guān)系,如圖7所示,同時流程系統(tǒng)軟件按照該Petri網(wǎng)進行設(shè)計。
圖7中的兩張表SKDWJB1和SKDWJB2是為了方便審計工作而增加的。從圖7中可以看到,在SKDWJB上的insert操作有兩類,一類是輸入過程引發(fā)的,另一類是轉(zhuǎn)帳過程引發(fā)的。前文已經(jīng)描述了對輸入過程引發(fā)的在SKDWJB上的insert操作的審計,現(xiàn)在要考慮SKDWJB和ZZB的關(guān)系,將SKDWJB上的insert操作的審計修改為以下內(nèi)容:
對于SKDWJB上的insert操作O1,如果O1沒有違反規(guī)則,則要求在SKDJB上有與該操作對應(yīng)的insert操作O2和delete操作O3(設(shè)該條件表示為C1);或者要求在SKDWJB和SKDWJB1上都有相應(yīng)的delete操作(設(shè)該條件表示為C2)。下面提供按照這條規(guī)則可以找出所有違規(guī)操作的簡要證明:
令O1→C1∪C2表示:如果任意O1合乎流程,那么C1和C2必然有一個被滿足。
反證:O1→C1∩C2,假設(shè)存在某一個在SKDWJB上的insert操作O1違規(guī),那么必然在SKDJB上與O1對應(yīng)的insert操作O2和delete操作O3至少缺一個(即C1),并且要求SKDWJB上相應(yīng)的delete操作O4和在SKDWJB1上相應(yīng)的delete操作O5至少缺一個(即C2)。只要操作是按照上面的Petri網(wǎng)進行,以上假設(shè)是不可能的,即不可能存在違規(guī)操作O1。即只要違規(guī)操作O1存在,就一定可以按照上面的規(guī)則將其找出。
在圖7所示的Petri網(wǎng)中,轉(zhuǎn)帳這個變遷實施的前提條件是SKDWJB和SKDWJB1中同時有一個標記,這個條件可被輸入變遷滿足。從圖7可看出,當輸入變遷實施時,給SKDWJB和SKDWJB1各輸入一個標記,從而滿足轉(zhuǎn)帳變遷實施的條件。轉(zhuǎn)帳變遷實施后,給SKDWJB輸入一個標記,這個標記是記帳變遷實施的條件之一,記帳變遷實施的另一個條件是SKDWJB2中存在標記,這個條件被輸入變遷的實施滿足。
本文研究得出如下結(jié)論:(1)流程為服務(wù)所導(dǎo)向。服務(wù)需要在變化,服務(wù)質(zhì)量要求在提高,因此流程是不斷在變化的。有潛在審計需求的信息系統(tǒng)需要在系統(tǒng)分析中盡早考慮審計需要,考慮越早,需要做的工作越少。(2)Petri網(wǎng)的作用在于確定為滿足審計需要增加的表。在圖7中,SKDWJB1和SKDWJB2都是為了滿足審計需要增加的表,如果不是為了審計,這兩張表都是不必要的。(3)從審計過程中看到,選擇路由是難于審計的,順序或并行路由是易于審計的。在流程中,一張表格被多個過程使用,如果不采取增加表的措施,將產(chǎn)生混亂。所以,流程設(shè)計者如果考慮審計需要,就必須盡量避免選擇路由出現(xiàn)在流程中,如此,可以為信息系統(tǒng)審計人員減少不必要的工作。(4)流程審計今后或許可以向更加智能化、自動化的方向發(fā)展,如開發(fā)出比較智能的算法來完成信息系統(tǒng)審計工作。
參考文獻
[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網(wǎng)的組件化工作流模型研究[J].微計算機信息,2009,25(30):104-106.
[3] 丁志軍,劉海峰,蔣昌俊.審計緩沖區(qū)的形式化模型及其驗證[J].計算機科學(xué),2006,33(5):98-103.
[4] 王保云,楊英杰,常德顯,等.一種安全審計事件時空邏輯關(guān)系可視化方法[J].計算機工程,2009,35(2):151-153.
[5] 李博文,李孝忠.基于Petri網(wǎng)的審計工作流模型設(shè)計與驗證[J].計算機應(yīng)用,2006,26(Z):242-243.
[6] 劉志磊.Petri Nets工作流及其在審計管理中的應(yīng)用[D].北京:北京郵電大學(xué),2008.
[7] 楊雯,劉厚泉,劉曼.基于高級Petri網(wǎng)的審計業(yè)務(wù)流程建模[J].福建電腦,2007(11):104-105.
[8] 張衛(wèi)祥.面向工作流系統(tǒng)基于流程挖掘的安全審計技術(shù)研究與實現(xiàn)[D].上海:華東師范大學(xué),2007.
[9] AALST V W,HEE K V.工作流管理[M].王建民,聞立杰,譯.北京:清華大學(xué)出版社,2004.
[10] 張瑞君,蔣硯章.會計信息系統(tǒng)[M].北京:中國人民大學(xué)出版社,2009.
[11] NIELSEN R.SQL Server 2008寶典[M].馬振晗,任鴻,高宇輝,譯.北京:清華大學(xué)出版社,2011.