审计信息化数据安全管理与应用模式研究
2021-07-10陈少静
饶 伟 陈少静
(建信金融科技有限责任公司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]在数据资产管理平台中加入了用户身份认证和权限审批、策略管理等模块实现数据安全管理和应用.
综上所述,一方面审计数据管理和应用模式不仅大大影响了审计数据分析技术的推广应用,也严重制约了审计人员在数据实验性使用过程中进行实验分析.另一方面审计数据建模分析的不确定性严重制约审计数据分析应用的扩展性和共享性.针对上述审计业务数据分析需求与审计数据安全管理要求之间的矛盾,结合审计信息化建设的具体实践,本文提出以审计数据标准化为基础,通过审计数据结构隔离与审计实验分析数据漂白相结合的数据安全管理模式,有效地降低了审计数据分析的用户使用的安全管理约束.同时,将实验数据分析从应用数据分析中分离,针对性地提高了数据应用分析的使用效率,降低了数据应用分析过程中用户实验分析导致的生产系统故障发生率.
1 审计信息化建设的数据安全管理框架
信息化审计的最大特点就是审计的大数据化[15],大数据化审计简单概括就是对获取的数据进行标准化处理,再提供给业务部门进行各种数据建模分析需求[16].基于审计数据结构隔离与审计实验分析数据漂白相结合的审计信息化的数据安全管理与应用模式的基本设计主要分为3层,如图1所示.
图1 审计信息化的数据安全管理与应用模式设计图
第1层为数据采集和标准化层,主要是将审计所需的报送数据还原成原始数据.再通过审计数据标准化模板转换成审计标准数据后集中存储.
第2层为安全隔离层,主要是将生产数据进行结构隔离和数据漂白,对数据和数据表结构进行分离管理,分别存储为实验数据库和应用数据库.实验数据区提供标准化后的数据表结构给用户进行实验性的审计数据建模分析,包括模型新建及测试工作,模型运行结果均为非真实数据结果.应用数据区提供真实数据,但数据表结构为转换后统一的、无业务逻辑的数据表,用户只能在应用数据区运行转换后的数据分析模型,并得到无业务逻辑的数据分析结果.
第3层为业务应用层,通过数据转换和还原,将应用数据分析结果还原成具有业务逻辑的数据分析结果.
基于结构隔离和数据漂白相结合的审计数据安全管理与应用模式的主要特点可概括如下:
1)将数据治理和数据标准化工作集中在底层处理,用户使用的均是标准化后的数据,降低了数据使用的难度,提高了数据使用效率,减少了审计过程中实验数据分析造成的生产系统故障.
2)对审计所需的标准化后的数据进行了2种处理,即数据漂白和结构隔离.漂白后的数据有生产数据表结构,但无真实数据.因此,可提供给审计人员进行数据分析实验,并可以将比较好的数据分析模型保存至业务数据分析模型库中,或者与其他审计项目组及审计人员共享、复用.应用数据区存储的是标准的生产数据,但进行了数据表格式的转换处理,数据表名均为无业务逻辑的Table1,Table2,Table3……字段名也是无业务逻辑的Column1,Column2,Column3……无业务表名和字段名与生产真实表名和字段名的对应关系通过多套映射表进行转换和还原.
3)审计数据分析模型在应用数据区运行时,完全无业务逻辑,数据结果只有通过同一套转换映射表才能还原成具有业务逻辑的结果.因此,整个应用数据存储和分析区的数据和模型即使发生了泄露,在无配套映射转换表的情况下仅仅只是一堆没有业务意义的数据.
2 基于分析原子的审计数据建模分析
审计数据建模分析是审计过程中的主要工作之一,也是除了现场审计核查工作外,非现场审计的最核心、最基础的必备工作.根据审计信息化的数据管理框架,将审计的数据分析划分为应用数据库和实验数据库.在审计数据建模分析应用中,可利用数据管理框架,提高审计数据建模分析的通用性、共享性和针对性.
如图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 转换与还原映射关系表
3 结 论
从上述分析介绍和实践案例中可以看出,审计信息化的数据安全管理架构和应用模式针对性地解决了审计数据安全管理和业务需求的矛盾点——审计数据和审计分析业务逻辑保密与审计数据分析模型共享之间的矛盾.在审计数据标准化后,将标准数据的数据结构和真实数据进行分离.真实数据保存在应用数据库中,但应用数据库中无业务表结构.真实的表结构保存在实验数据库中,但实验数据库中无真实数据.因此,实验数据库可直接开放给所有用户用于新建数据分析原子.用户通过数据分析原子的组合形成业务分析模型,通过数据结构映射关系表将数据分析模型结果还原成业务需求的结果.
这种数据安全管理模式的特点如下:
1)将数据的表结构和真实数据进行隔离,最大限度地保障了审计数据安全、审计数据分析模型逻辑安全,且对数据隐私作了一定保护.
2)由于实验数据库中无真实业务数据,因此可开放给所有用户使用,可激励所有业务人员进行数据分析原子的开发和验证.
3)应用数据库中无真实的数据表名称和表结构,因此在业务数据库中运行模型的模型逻辑和模型结果均无业务意义.因此,对真实数据增加了一层保密机制.
4)应用数据库中运行的数据分析模型均是由实验数据库建立完成的数据分析原子组合而成,因此应用数据库的运行模型从根本上规避了由于用户实验性数据分析导致的生产系统故障问题.
5)数据表名、表结构的隔离是通过几套映射表进行转换,只有隔离和还原过程使用同一套映射表才能得到运行模型的业务结果.
6)由于数据隔离与还原映射表、标准化后的数据表结构和标准化后的表数据3部分内容同时满足权限要求,才能得到真实的审计数据分析模型和模型的业务结果.因此,建议针对这3部分建立对应的管理机制,提升审计信息化数据安全管理能力和应用水平.
4 相关数据分析模型脚本
脚本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’ //设定年份