润乾报表数据直接脱敏查询实例

【摘要】
实现一个可以动态配置是否脱敏数据的报表查询实例。
去乾学院看个究竟吧! 数据脱敏的处理方法及查询

润乾报表数据直接脱敏查询实例

下面我们就结合《数据脱敏的处理方法及查询》文章介绍的数据脱敏方法,具体实现一个可以动态配置是否脱敏数据的报表查询实例,大致流程如下:

1.1    集算器数据脱敏 SPL 脚本准备

   利用上面已有的"数据脱敏验证表.txt" 文本数据,实现脱敏数据报表查询,具体脚本如下:


A

B

C

D

1

=file("姓氏.txt").import@it()

=file("名字.txt").import@it()

/引入外部姓名字典表,用于随机组合生成姓名信息

2

func

/调用配置文件中的数据脱敏规则进行数据脱敏


3


=file("数据脱敏规则配置.ini").property(A2(2))

4


if   type=="type2"

=eval(B3,"A1","A1","B1","B1")

/特殊规则的动态解析替换 "?" 值

5



=eval(B3,A2(1))

/通用规则的动态解析替换 "?" 值

6


return ${B3}



7

=file("数据脱敏验证表.txt").cursor@t()



8

if type!=0

=



9


=A7.run(contractno=func(A2,[contractno,"type1"]),name=func(A2,[name,"type2"]),address=func(A2,[address,"type3"]),

mobile=func(A2,[mobile,"type4"]),idnumber=func(A2,[idnumber,"type5"]),operatetime=func(A2,[operatetime,"type6"]))

/按照脱敏规则进行数据表脱敏

10

return if(type!=0,B9,A7)

/说明:参数 type 控制是否对数据进行脱敏 (0: 不脱敏)

A1-B1:引入外部字典表“姓氏”和“名字”的文本数据,用于随机组合生成姓名信息。

A2:定义一个子程序。使用func函数定义一个通用的数据脱敏规则处理子程序,该子程序主要是调用配置文件中的数据脱敏规则进行数据脱敏。不同数据字段可以根据自身特点和业务要求进行规则复用。关于子程序的内容可以参考:集算器 -> 教程 -> 高级代码 ->子程序文档说明。

B3:读取数据脱敏规则配置文件信息。使用property()函数从“数据脱敏规则配置.ini”属性文件中读取 type 属性值。

B4-B5:使用动态解析并计算规则配置文件中的规则,实现对应字段的数据脱敏处理。其中,子程序中使用eval()函数动态解析并计算表达式,实现动态解析并替换脱敏规则配置文件(*.ini)中的 "?" 值,增加一个 type 值判断,将一般 type 中的 "?" 替换为调用 func 子程序主格的位置值,对引入外部数据字典表的 tpye2 规则,单独判断替换 "?" 值为外部字典所在单元格值,最终计算替换的表达式并执行对应字段的数据脱敏。

B6:使用宏动态计算表达式并返回运算结果,使用return函数将从属性配置文件中读取的 type 属性值通过“${}”宏替换并返回运算结果给被 B9 单元格调用的程序中。

A7:游标获取未脱敏的源端生产数据。

A8:通过传递的网格参数 type(type=0:不脱敏)值判断是否对数据脱敏,如果脱敏,则执行 B9 单元格的源端生产数据的脱敏处理。

B9:按照脱敏规则进行数据表脱敏,直接调用 A2 主格子程序 func 进行数据脱敏。

A10:根据 type 值返回对应的脱敏或未脱敏数据。

接下来,需要在集算器设计器的功能菜单“程序 -> 网格参数”中设置一个参数“type”,用于接收报表参数传递进行是否脱敏的数据权限控制。

至此,集算器的 SPL 脚本编写和设置完成,下一步进行“数据脱敏规则配置.ini”文件的新建设置。

1.2    数据脱敏规则配置文件

文件“数据脱敏规则配置.ini”为集算器 SPL 脚本提供了对数据字段的脱敏规则配置,从而实现脱敏规则与脚本分离的设计,可以在不修改脚本的情况下自定义脱敏规则。当然,这个配置文件也可以数存储在数据库中,提供全局的脱敏规则配置管理。该配置文件的内容如下:

配置文件说明:#自定义配置脱敏规则,使用 eval() 函数实现动态解析替换解析 "?",通常 type 中的 "?" 是指固定调用 func 子程序的主格,这里 tpye2 规则特殊,需要单独判断替换 "?"。

【注意】这里仅是提供一种脱敏规则的配置思路,目的是可以最大限度的复用和灵活调用,相似的数据字段就不需要重复定义和编写脱敏规则了。实际应用中,程序员们可以根据需求自定义配置。

1.3    报表模板准备

使用最新版本的润乾报表 V2018 版本开发一张报表模板,并设置报表是否脱敏参数“type”(与集算器 SPL 脚本中的网格参数对应使用)。

设置集算器 SPL 脚本为报表的数据集“ds1”,选中对应的 dfx 脚本,并配置 type 参数表达式,具体如下:

开发的报表模板“报表数据脱敏.rpx”如下:

【注意】这里面调用的集算器数据集返回的是游标,需要在报表属性 -> 常规 设置集算器数据集为大数据集,并且该功能需要报表产品包含集算器授权。

1.4    脱敏数据报表发布

直接在报表设计器中启动 web 服务,使用浏览器浏览报表,当设置参数 type 值为“0”不脱敏时,报表展示数据如下:

当参数 type 设置非“0”值时,报表展示数据如下:

1.5    脱敏数据报表查询总结

这个脱敏数据报表查询实例有以下四个特点:

l  直接对源数据脱敏后在报表 WEB 端进行数据查询和展示。

没有按常规数据脱敏的方式,先将脱敏数据进行分发入库或入文件,而是直接将数据使用集算器 SPL 脚本进行脱敏,配合报表的大数据集异步数据加载实现了大数据的即时脱敏数据查询展示。免去源数据脱敏 -> 目标入库 -> 数据展示的目标入库步骤。

l  免去新建数据脱敏库步骤,减少脱敏工作量。

为了应对一些老项目或特殊情况,比如脱敏的数据表都是明文显示,但是不能分发或新建脱敏后的数据库表,通过对明文数据直接抽取加密,免去新建脱密库步骤,减少整体脱敏工作量。

l  自定义配置数据脱敏规则。

可以灵活配置规则文件,满足不同的规则配置需求。

l  动态控制数据是否开启脱敏权限。

可以根据平台用户查看数据的权限,动态的传递参数值控制是否对数据进行脱敏显示,一方面防止数据的泄密,从底层保证数据安全,另一方面也为高权限客户提供查看敏感数据的途径。