System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种动态数据脱敏方法技术_技高网

一种动态数据脱敏方法技术

技术编号:40592535 阅读:3 留言:0更新日期:2024-03-12 21:54
本发明专利技术公开一种动态数据脱敏方法,涉及数据脱敏技术领域。针对传统动态数据脱敏之SQL改写技术路线的适用性低,无法适应复杂语句的问题,采用技术方案:涉及管理端和执行端,其中,管理端包括脱敏管理和任务管理,脱敏管理负责数据源配置、脱敏字段扫描配置、脱敏规则配置,还负责通过脱敏字段扫描配置创建扫描任务,基于扫描任务遍历数据源,并获取扫描结果;任务管理负责任务调度和任务监控以及任务日志的查询;执行端负责依托于FlinkSQL和大数据组件执行动态数据脱敏。本发明专利技术具有高并发、大流量、低延迟、适用性强的优点。

【技术实现步骤摘要】

本专利技术涉及数据脱敏,具体的说是一种动态数据脱敏方法


技术介绍

1、伴随着互联网大数据、云服务等技术的飞速发展和普及,业务上云、数据集中存储、数据共享等数据应用方式已成为主流。由于数据使用场景越来越复杂,个人隐私数据泄露、被窃取的风险越来越高。数据脱敏在数据中台的构建中成为不可缺失的重要环节。

2、动态脱敏技术主要包括两条技术路线,一种是sql语句改写,一种是结果集改写。现阶段的动态脱敏方案均是选择其一作为技术路线。其中,sql改写方案性能较高、但适用性低,在面对复杂语句、模糊脱敏等场景时无法胜任,导致产品只能在有限的场景下使用。选择了结果集改写作为技术路线的产品,适用性高,但性能低,在高并发、大流量、低延迟需求的场景下无法胜任,同样导致产品也只能在有限的场景下使用。


技术实现思路

1、本专利技术针对传统动态数据脱敏之sql改写技术路线的适用性低,无法适应复杂语句的问题,提供一种动态数据脱敏方法,以在面对高并发、大流量、低延时需求场景时能简单快速响应。

2、本专利技术的一种动态数据脱敏方法,解决上述技术问题采用的技术方案如下:

3、一种动态数据脱敏方法,该方法涉及管理端和执行端,其中,

4、管理端包括脱敏管理和任务管理,脱敏管理负责数据源配置、脱敏字段扫描配置、脱敏规则配置,任务管理负责任务调度和任务监控以及任务日志的查询;

5、执行端负责依托于flinksql和大数据组件执行动态数据脱敏。

6、可选的,脱敏管理通过手动输入或者自动识别的方式进行脱敏字段扫描配置;

7、脱敏管理通过混淆算法、任意算法、置空算法、加密算法中的至少一种算法进行脱敏规则配置。

8、可选的,脱敏管理还负责通过脱敏字段扫描配置创建扫描任务,基于扫描任务遍历数据源,并获取扫描结果。

9、可选的,执行端依托于flinksql作为支撑平台,借助parse组件进行语法分析,借助validate组件进行语法校验,借助convert组件进行语法分析及转化,借助optimize组件进行逻辑计划优化,借助execute组件执行动态数据脱敏。

10、可选的,所涉及动态数据脱敏方法的执行流程如下:

11、针对输入的flinksql,在calciteparser.parse()进行语法解析后生成抽象语法树ast,采用自定义calcite sqlbasicvisitor的方法遍历ast中的所有sqlselect,获取到里边的每个输入表,

12、如果输入表中字段有配置脱敏条件,则针对输入表生成子查询语句,并把脱敏字段改写,再通过calciteparser.parseexpression()把子查询转换成sqlselect,用sqlselect替换原ast,生成新的ast,进而生成新的sql,执行新的sql获取脱敏数据;

13、如果输入表中字段未配置脱敏条件,则针对输入表生成子查询语句,通过calciteparser.parseexpression()把输入表中的子查询转换成sqlselect,用sqlselect替换原ast,生成新的ast,进而生成新的sql并继续执行。

14、进一步可选的,遍历抽象语法树ast中的所有sqlselect,获取到里边的每个输入表,具体操作如下:

15、(1)遍历ast中select语句

16、(2)判断是否自定义的select语句由步骤(10)生成,是则跳转到步骤(11),否则继续步骤(3);

17、(3)判断select语句中的from类型,按照不同类型对应执行下面的步骤(4)、(5)、(6)和(11);

18、(4)from是sqljoin类型,则分别遍历其左left节点和右right节点,即执行当前步骤(4)和步骤(7);由于可能是三张表及以上的join,因此进行递归处理,即针对其左left节点跳回到步骤(3);

19、(5)from是sqlidentifier类型,则表示是表,输入sql中没有定义表的别名时用表名作为别名,跳转到步骤(8);

20、(6)from是sqlbasiccall类型,则表示带别名,进一步判断是否来自子查询,是则跳转到步骤(11)继续遍历ast,后续步骤(1)会对子查询中的select语句进行处理,否则跳转到步骤(8);

21、(7)递归处理join的右right节点,即跳回到步骤(3);

22、(8)遍历表中的每个字段,如果某个字段有定义脱敏条件,则把该字段改写成格式cast(脱敏函数(字段名)as字段类型)as字段名,否则用原字段名;

23、(9)针对步骤(8)处理后的字段,构建子查询语句,形如(select字段名1,字段名2,cast(脱敏函数(字段名3)as字段类型)as字段名3、字段名4from表名)as表别名;

24、(10)对步骤(9)的子查询调用calciteparser.parseexpression()进行解析,生成自定义select语句,并替换掉原from;

25、(11)继续遍历ast,找到里面的select语句进行处理,跳回到步骤(1)。

26、本专利技术的一种动态数据脱敏方法,与现有技术相比具有的有益效果是:

27、本专利技术包括管理端及执行端,其中管理端包括脱敏管理和任务管理,脱敏管理主要负责数据源配置、脱敏字段扫描配置、脱敏规则配置,任务管理主要负责任务调度和任务监控以及任务日志的查询;执行端主要负责动态数据脱敏,依托于flinksql以及其他大数据组件;在面对高并发、大流量、低延时需求场景时能简单快速响应,解决了传统动态数据脱敏之sql改写技术路线的适用性低,无法适应复杂语句的问题。

本文档来自技高网...

【技术保护点】

1.一种动态数据脱敏方法,其特征在于,该方法涉及管理端和执行端,其中,

2.根据权利要求1所述的一种动态数据脱敏方法,其特征在于,脱敏管理通过手动输入或者自动识别的方式进行脱敏字段扫描配置;

3.根据权利要求2所述的一种动态数据脱敏方法,其特征在于,脱敏管理还负责通过脱敏字段扫描配置创建扫描任务,基于扫描任务遍历数据源,并获取扫描结果。

4.根据权利要求1所述的一种动态数据脱敏方法,其特征在于,执行端依托于FlinkSQL作为支撑平台,借助parse组件进行语法分析,借助validate组件进行语法校验,借助convert组件进行语法分析及转化,借助optimize组件进行逻辑计划优化,借助execute组件执行动态数据脱敏。

5.根据权利要求1所述的一种动态数据脱敏方法,其特征在于,所述动态数据脱敏方法的执行流程如下:

6.根据权利要求5所述的一种动态数据脱敏方法,其特征在于,遍历抽象语法树AST中的所有sqlSelect,获取到里边的每个输入表,具体操作如下:

7.根据权利要求6所述的一种动态数据脱敏方法,其特征在于,执行步骤(4)时,进行递归处理,即针对其左Left节点跳回到步骤(3)。

8.根据权利要求6所述的一种动态数据脱敏方法,其特征在于,执行步骤(9)构建的子查询语句形如(SELECT字段名1,字段名2,CAST(脱敏函数(字段名3)AS字段类型)AS字段名3、字段名4FROM表名)AS表别名。

...

【技术特征摘要】

1.一种动态数据脱敏方法,其特征在于,该方法涉及管理端和执行端,其中,

2.根据权利要求1所述的一种动态数据脱敏方法,其特征在于,脱敏管理通过手动输入或者自动识别的方式进行脱敏字段扫描配置;

3.根据权利要求2所述的一种动态数据脱敏方法,其特征在于,脱敏管理还负责通过脱敏字段扫描配置创建扫描任务,基于扫描任务遍历数据源,并获取扫描结果。

4.根据权利要求1所述的一种动态数据脱敏方法,其特征在于,执行端依托于flinksql作为支撑平台,借助parse组件进行语法分析,借助validate组件进行语法校验,借助convert组件进行语法分析及转化,借助optimize组件进行逻辑计划优化,借助execute组件执行...

【专利技术属性】
技术研发人员:段雅鑫刘太全纪磊
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1