饒 偉 陳少靜
(建信金融科技有限責任公司Big Data中心 北京 100033)
審計作為國家治理和公司治理的必要環節,受到了國家、政府、社會及企業組織等多層面的關注和重視.1998年國家審計署提出審計信息化建設意見,得到了時任國務院總理朱镕基的充分肯定和重視.審計署開始規劃和籌備國家層面的審計信息化工程,并于2005年11月15日通過了國家發改委組織的金審工程一期建設項目竣工驗收.2018年6月國家審計署啟動并完成了金審工程3期項目的采購[1].國家審計信息化建設已經完成了3個階段的建設工作,進入配套管理升級和應用建設階段.其中,數據安全管理和應用模式是當前和今后建設和完善的重點工作.
審計信息化是以業務需求為驅動,以數據支撐和知識服務為基礎的系統工程.近年我國的審計信息化建設多以平臺建設、輔助服務建設、數據中臺建設為主[2-5].從審計信息化的業務需求來看,審計信息化的核心是數據資產的有效管理和利用.葉席軍[6]在財政預算審計系統設計和實現中就是圍繞數據搭建的數據源、數據采集、數據存儲、數據挖掘和數據結果可視化的5層系統架構,審計信息化的數據資產的安全管理都是滿足數據交互和審計業務數據分析需求[7].王傳合、趙利軍[8]根據等保2.0的要求提出了綜合數據簽名、數據加密、身份認證、數據防恢復、數據匿名、數據備份等多技術的數據安全保護措施.勾德杰[9]在數據資產質量管理中將數據分析模型分為精確模型、統計模型和自定義模型3類,并針對性地設計了檢測模型管理模塊,有效控制用戶創建符合業務邏輯的數據分析模型.審計數據分析和數據挖掘的特殊性在于業務過程中的需求不確定,建模分析需要使用大量的貼源數據進行實驗性的分析,這顯然不符合數據安全管理的要求.金晨[10]將審計數據分析平臺直接搭建在生產數據之上,所有用戶均在生產真實數據上進行實驗性數據建模分析,顯然對于海量的審計數據集中安全管理來說是非常不適當的.因此,在實踐落地過程中,審計數據管理平臺大多設計了對應的數據加工監控、數據權限管理和審批流程.例如國家稅務總局在金稅工程中引入了數據加工監控工程來實時或間隔監控數據加工情況[11].周媛[12]對金盾工程和智慧警務中的信息安全問題進行了SWAT-AHP分析,針對分析結果在制度建設、一線人員的安全意識教育、安全技術引入、安全人才培養和軟硬件建設等多方面提出了全方面建議.張超[13]在山東省移動大數據分析系統中應用了層級式多租戶管理,利用統一權限管理對租戶數據權限和資源權限進行集中授權管理.李慶陽[14]在數據資產管理平臺中加入了用戶身份認證和權限審批、策略管理等模塊實現數據安全管理和應用.
綜上所述,一方面審計數據管理和應用模式不僅大大影響了審計數據分析技術的推廣應用,也嚴重制約了審計人員在數據實驗性使用過程中進行實驗分析.另一方面審計數據建模分析的不確定性嚴重制約審計數據分析應用的擴展性和共享性.針對上述審計業務數據分析需求與審計數據安全管理要求之間的矛盾,結合審計信息化建設的具體實踐,本文提出以審計數據標準化為基礎,通過審計數據結構隔離與審計實驗分析數據漂白相結合的數據安全管理模式,有效地降低了審計數據分析的用戶使用的安全管理約束.同時,將實驗數據分析從應用數據分析中分離,針對性地提高了數據應用分析的使用效率,降低了數據應用分析過程中用戶實驗分析導致的生產系統故障發生率.
信息化審計的最大特點就是審計的大數據化[15],大數據化審計簡單概括就是對獲取的數據進行標準化處理,再提供給業務部門進行各種數據建模分析需求[16].基于審計數據結構隔離與審計實驗分析數據漂白相結合的審計信息化的數據安全管理與應用模式的基本設計主要分為3層,如圖1所示.

圖1 審計信息化的數據安全管理與應用模式設計圖
第1層為數據采集和標準化層,主要是將審計所需的報送數據還原成原始數據.再通過審計數據標準化模板轉換成審計標準數據后集中存儲.
第2層為安全隔離層,主要是將生產數據進行結構隔離和數據漂白,對數據和數據表結構進行分離管理,分別存儲為實驗數據庫和應用數據庫.實驗數據區提供標準化后的數據表結構給用戶進行實驗性的審計數據建模分析,包括模型新建及測試工作,模型運行結果均為非真實數據結果.應用數據區提供真實數據,但數據表結構為轉換后統一的、無業務邏輯的數據表,用戶只能在應用數據區運行轉換后的數據分析模型,并得到無業務邏輯的數據分析結果.
第3層為業務應用層,通過數據轉換和還原,將應用數據分析結果還原成具有業務邏輯的數據分析結果.
基于結構隔離和數據漂白相結合的審計數據安全管理與應用模式的主要特點可概括如下:
1)將數據治理和數據標準化工作集中在底層處理,用戶使用的均是標準化后的數據,降低了數據使用的難度,提高了數據使用效率,減少了審計過程中實驗數據分析造成的生產系統故障.
2)對審計所需的標準化后的數據進行了2種處理,即數據漂白和結構隔離.漂白后的數據有生產數據表結構,但無真實數據.因此,可提供給審計人員進行數據分析實驗,并可以將比較好的數據分析模型保存至業務數據分析模型庫中,或者與其他審計項目組及審計人員共享、復用.應用數據區存儲的是標準的生產數據,但進行了數據表格式的轉換處理,數據表名均為無業務邏輯的Table1,Table2,Table3……字段名也是無業務邏輯的Column1,Column2,Column3……無業務表名和字段名與生產真實表名和字段名的對應關系通過多套映射表進行轉換和還原.
3)審計數據分析模型在應用數據區運行時,完全無業務邏輯,數據結果只有通過同一套轉換映射表才能還原成具有業務邏輯的結果.因此,整個應用數據存儲和分析區的數據和模型即使發生了泄露,在無配套映射轉換表的情況下僅僅只是一堆沒有業務意義的數據.
審計數據建模分析是審計過程中的主要工作之一,也是除了現場審計核查工作外,非現場審計的最核心、最基礎的必備工作.根據審計信息化的數據管理框架,將審計的數據分析劃分為應用數據庫和實驗數據庫.在審計數據建模分析應用中,可利用數據管理框架,提高審計數據建模分析的通用性、共享性和針對性.
如圖2所示,基于分析原子的審計數據建模分析主要由3部分組成:

圖2 基于分析原子的審計數據建模分析
1)基于知識庫的業務需求理解處理;
2)基于實驗數據庫的分析原子匹配;
3)基于應用數據庫的分析原子組合及數據映射關系轉換和還原.
例如業務部門提出需求——“轉移虧損情況核查審計”.通過審計知識庫中現有制度分析及案例事件提取情況,將該需求理解為:“少數股東凈資產收益率遠低于母公司股東凈資產收益率,存在企業通過子公司轉移虧損的情況.”再通過規則庫匹配對應需求理解的相關規則和指標為:ROE差異≤-10%;少數股東損益<0.進一步拆分或匹配分析原子、ROE計算和少數股東損益計算.如果匹配上現有規則和指標的分析原子,直接提取相關分析原子腳本,并按業務需求規則進行分析原子組合,生成審計數據分析業務模型.如果未能匹配,則繼續拆分或者新建分析原子.
業務審計數據分析模型以ROE差異指標模型為例:
1)ROE差異=(少數股東ROE-母公司ROE)/母公司ROE×100%;
2)ROE=稅后利潤/所有者權益×100%;
3)稅后利潤=利潤總額-所得稅;
4)匹配現有分析原子庫,所有分析原子均能匹配;
5)提取所有的分析原子,組合成審計數據分析業務模型.
實驗數據庫模型腳本以及轉化應用數據庫腳本情況如表1所示:

表1 業務數據分析需求拆分與模型轉換
注:“—”表示此分析原子為直接可獲取數據,無需進一步拆解.
運行該數據模型,數據模型結果為index01=-12.5%.
數據模型結果還原成業務審計數據分析模型結果為:ROE差異=-12.5%.業務審計數據分析模型結果符合業務需求篩查要求,將結果記錄標記為疑點結果.
通過數據結構隔離和數據漂白的轉換與還原映射關系表,將數據分析原子組合的業務模型轉換成應用數據庫中可以運行的數據分析模型,以及將數據分析模型結果還原成業務分析結果.其中,數據結構隔離和數據標牌的轉換與還原映射關系如表2所示:

表2 轉換與還原映射關系表
從上述分析介紹和實踐案例中可以看出,審計信息化的數據安全管理架構和應用模式針對性地解決了審計數據安全管理和業務需求的矛盾點——審計數據和審計分析業務邏輯保密與審計數據分析模型共享之間的矛盾.在審計數據標準化后,將標準數據的數據結構和真實數據進行分離.真實數據保存在應用數據庫中,但應用數據庫中無業務表結構.真實的表結構保存在實驗數據庫中,但實驗數據庫中無真實數據.因此,實驗數據庫可直接開放給所有用戶用于新建數據分析原子.用戶通過數據分析原子的組合形成業務分析模型,通過數據結構映射關系表將數據分析模型結果還原成業務需求的結果.
這種數據安全管理模式的特點如下:
1)將數據的表結構和真實數據進行隔離,最大限度地保障了審計數據安全、審計數據分析模型邏輯安全,且對數據隱私作了一定保護.
2)由于實驗數據庫中無真實業務數據,因此可開放給所有用戶使用,可激勵所有業務人員進行數據分析原子的開發和驗證.
3)應用數據庫中無真實的數據表名稱和表結構,因此在業務數據庫中運行模型的模型邏輯和模型結果均無業務意義.因此,對真實數據增加了一層保密機制.
4)應用數據庫中運行的數據分析模型均是由實驗數據庫建立完成的數據分析原子組合而成,因此應用數據庫的運行模型從根本上規避了由于用戶實驗性數據分析導致的生產系統故障問題.
5)數據表名、表結構的隔離是通過幾套映射表進行轉換,只有隔離和還原過程使用同一套映射表才能得到運行模型的業務結果.
6)由于數據隔離與還原映射表、標準化后的數據表結構和標準化后的表數據3部分內容同時滿足權限要求,才能得到真實的審計數據分析模型和模型的業務結果.因此,建議針對這3部分建立對應的管理機制,提升審計信息化數據安全管理能力和應用水平.
腳本1:
create table 模型結果_ROE差異 as
select
t02.集團名稱,
t02.單位名稱,
t02.股東性質,
(t02.指標值-t01.指標值)/t01.指標值×
100 as ROE差異率_百分比
from (
select
集團股東表.集團名稱,
集團股東表.股東性質,
集團股東表.是否母公司,
財務指標_ROE.單位名稱,
財務指標_ROE.賬套編號,
財務指標_ROE.賬套名稱,
財務指標_ROE.年度,
財務指標_ROE.指標值
from
財務指標_ROE
inner join
集團股東表
on 集團股東表.股東名稱=財務指標_
ROE.單位名稱
where
集團股東表.是否母公司=‘是’
or 集團股東表.是否母公司=‘Y’
)t01
inner join (
select
集團股東表.集團名稱,
集團股東表.股東性質,
集團股東表.是否母公司,
財務指標_ROE.單位名稱,
財務指標_ROE.賬套編號,
財務指標_ROE.賬套名稱,
財務指標_ROE.年度,
財務指標_ROE.指標值
from
財務指標_ROE
inner join
集團股東表
on 集團股東表.股東名稱=財務指標_
ROE.單位名稱
where
集團股東表.是否母公司=‘否’
or 集團股東表.是否母公司=‘N’
)t02 on t01.集團名稱=t02.集團名稱
where
(t01.集團名稱 like ‘%XXXXX%’
//設定待查集團名稱
or t01.單位名稱 like ‘%XXXXX%’)
//設定集團母公司名稱
and t01.年度=‘XXXX’ //設定年份
腳本2:
create table 財務指標_ROE as
select
財務指標_稅后利潤.單位名稱,
財務指標_稅后利潤.賬套編號,
財務指標_稅后利潤.賬套名稱,
財務指標_稅后利潤.年度,
財務指標_稅后利潤.科目名稱,
財務指標_稅后利潤.科目編碼,
財務指標_稅后利潤.金額/財務指標_所有
者權益.金額×100 as 指標值
from
財務指標_利潤總額
inner join
財務指標_所有者權益
on 財務指標_稅后利潤.單位名稱=財務指
標_所有者權益.單位名稱
and 財務指標_稅后利潤.賬套編號=財務
指標_所有者權益.賬套編號
and 財務指標_稅后利潤.賬套名稱=財務
指標_所有者權益.賬套名稱
and 財務指標_稅后利潤.年度=財務指標_
所有者權益.年度
and 財務指標_稅后利潤.科目編碼=財務
指標_所有者權益.科目編碼
腳本3:
create table 財務指標_稅后利潤 as
select
財務指標_利潤總額.單位名稱,
財務指標_利潤總額.賬套編號,
財務指標_利潤總額.賬套名稱,
財務指標_利潤總額.年度,
財務指標_利潤總額.科目名稱,
財務指標_利潤總額.科目編碼,
財務指標_利潤總額.指標值-財務指標_利潤所得稅費用.指標值 as 指標值
from
財務指標_利潤總額
inner join
財務指標_利潤所得稅費用
on 財務指標_利潤總額.單位名稱=財務指
標_利潤所得稅費用.單位名稱
and 財務指標_利潤總額.賬套編號=財務
指標_利潤所得稅費用.賬套編號
and 財務指標_利潤總額.賬套名稱=財務
指標_利潤所得稅費用.賬套名稱
and 財務指標_利潤總額.年度=財務指標_
利潤所得稅費用.年度
and 財務指標_利潤總額.科目編碼=財務指
標_利潤所得稅費用.科目編碼
腳本4:
create table 財務指標_利潤總額 as
select
科目余額.單位名稱,
科目余額.賬套編號,
科目余額.賬套名稱,
科目余額.年度,
科目余額.科目名稱,
科目余額.科目編碼,
科目余額.期末余額 as 指標值
from
科目余額
where
科目余額.科目名稱 like ‘%所有者權益
(或股東權益)合計%’
腳本5:
create table 財務指標_利潤所得稅費用 as
select
科目余額.單位名稱,
科目余額.賬套編號,
科目余額.賬套名稱,
科目余額.年度,
科目余額.科目名稱,
科目余額.科目編碼,
科目余額.期末余額 as 指標值
from
科目余額
where
科目余額.科目名稱 like ‘%減:所得稅費用%’
腳本6:
create table 財務指標_所有者權益 as
select
科目余額.單位名稱,
科目余額.賬套編號,
科目余額.賬套名稱,
科目余額.年度,
科目余額.科目名稱,
科目余額.科目編碼,
科目余額.期末余額 as 指標值
from
科目余額
where
科目余額.科目名稱 like ‘%所有者權益
(或股東權益)合計%’
腳本7:
create table 模型結果_index01 as
select
t02.column1,
t02.column1,
t02.column6,
(t02.column7-t01.column7)/t01.column7
×100 as ROE差異率_百分比
from (
select
table2.column1,
table2.column6,
table2.column5,
table1.column1,
table1.column2,
table1.column3,
table1.column4,
table1.column7
from
table1
inner join
table2
on table2.column2=table1.column1
where
table2.column5=‘是’
or table2.column5=‘Y’
)t01
inner join (
select
table2.column1,
table2.column6,
table2.column5,
table1.column1,
table1.column2,
table1.column3,
table1.column4,
table1.column7
from
table1
inner join
table2
on table2.column2=table1.column1
where
table2.column5=‘否’
or table2.column5=‘N’
)t02 on t01.column1=t02.column1
where
(t01.column1 like ‘%XXXXX%’
//設定待查column1
or t01.column1 like ‘%XXXXX%’)
//設定集團母公司名稱
and t01.column4=‘XXXX’ //設定年份