基于ApacheCalcite的数据脱敏方法、系统、设备及介质技术方案

技术编号:38731669 阅读:12 留言:0更新日期:2023-09-08 23:21
本申请公开了一种基于Apache Calcite的数据脱敏方法、系统、设备及介质,主要涉及数据脱敏技术领域,用以解决现有的Apache Calcite工具无法在SQL语句执行的同时进行数据脱敏的问题。包括:生成SQL语句;获取对应的字段类型和库表信息;获取对应的Calcite解析器;转换为SqlNode类型的SQL语句;在SqlNode类型的SQL语句符合预设语法规则后,构建RelNode树结构的SQL语句;构造包含脱敏函数的脱敏处理器;获得SQL语句字段类型为脱敏类型的脱敏字段;通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段。RelNode树结构的SQL语句中的脱敏字段。RelNode树结构的SQL语句中的脱敏字段。

【技术实现步骤摘要】
基于Apache Calcite的数据脱敏方法、系统、设备及介质


[0001]本申请涉及数据脱敏
,尤其涉及一种基于Apache Calcite的数据脱敏方法、系统、设备及介质。

技术介绍

[0002]数据脱敏是数据管理和数据治理工具的核心功能,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。通过建立数据脱敏规则,对数据进行脱敏,一方面可以确保数据的安全性,另一方面可以更好的对数据进行还原。
[0003]Apache Calcite 是一种提供了标准的SQL(Structured Query Language 结构化查询语言)语言、多种查询优化和连接各种数据源基础框架,目标是one size fits all,为不同计算平台和数据源提供统一的查询引擎,并以类似传统数据库的访问方式(SQL语句和高级查询优化)来访问Hadoop上的数据,让用户轻松的接入各种数据,并实现解析SQL语句和SQL语句查询。
[0004]由于,Apache Calcite只是SQL语句解析工具,功能较为单一,只能实现常规的SQL语句解析,而且只是通过配置文件实现,没有可视化操作界面,不是很友好;实际业务场景中存在很多在SQL语句执行过程中同时进行对敏感数据的识别和脱敏(加密)的需求,单纯通过Calcite无法实现,如果依赖其他脱敏工具或者开发脱敏组件再增加程序的复杂度和增加研发成本。

技术实现思路

[0005]针对现有技术的上述不足,本申请提供一种基于Apache Calcite的数据脱敏方法、系统、设备及介质,以解决上述Apache Calcite工具无法在SQL语句执行的同时进行数据脱敏的技术问题。
[0006]第一方面,本申请提供了一种基于Apache Calcite的数据脱敏方法,方法包括:在接收到预设数据查询工具发起数据查询请求时,基于数据查询请求生成SQL语句;通过Calcite程序接收SQL语句,获取SQL语句中字段对应的字段类型和库表信息;其中,字段类型包括脱敏类型和非脱敏类型;基于库表信息,获取SQL语句对应的Calcite解析器;通过Calcite解析器,将SQL语句转换为SqlNode类型的SQL语句,并校验SqlNode类型的SQL语句是否符合预设语法规则;在符合预设语法规则后,基于库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句;获取脱敏规则对应的若干脱敏函数,以构造脱敏处理器;检测RelNode树结构的SQL语句中字段的字段类型,以获得字段类型为脱敏类型的脱敏字段;确定脱敏字段对应的脱敏函数和预设字段类型;通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段;在执行更新后的RelNode树结构的SQL语句时,自动调用脱敏处理器中的脱敏函数,生成脱敏数据。
[0007]进一步地,基于库表信息,获取SQL语句对应的Calcite解析器,具体包括:使用
Calcite中库表信息对应的预设解析器,作为SQL语句对应的Calcite解析器;或,根据库表信息创建解析器,作为SQL语句对应的Calcite解析器;或,通过预设界面,获取上传的自定义解析器,作为SQL语句对应的Calcite解析器。
[0008]进一步地,通过Calcite解析器,将SQL语句转换为SqlNode类型的SQL语句,并校验SqlNode类型的SQL语句是否符合预设语法规则;在符合预设语法规则后,基于库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句,具体包括:通过Calcite解析器中预设的JavaCC程序,将SQL语句转换为SqlNode类型的SQL语句;通过Calcite解析器中预设的SQL检验器SqlValidator,校验SqlNode类型的SQL语句是否符合预设语法规则;通过Calcite解析器中预设的转换器SqlToRelConverter、库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句。
[0009]进一步地,通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段,具体包括:通过CAST函数格式:CAST(脱敏函数(脱敏字段名) AS 预设字段类型) AS 脱敏字段名,更新RelNode树结构的SQL语句中的脱敏字段。
[0010]第二方面,本申请提供了一种基于Apache Calcite的数据脱敏系统,系统包括:获取模块,用于在接收到预设数据查询工具发起数据查询请求时,基于数据查询请求生成SQL语句;通过Calcite程序接收SQL语句,获取SQL语句中字段对应的字段类型和库表信息;其中,字段类型包括脱敏类型和非脱敏类型;构建模块,用于基于库表信息,获取SQL语句对应的Calcite解析器;通过Calcite解析器,将SQL语句转换为SqlNode类型的SQL语句,并校验SqlNode类型的SQL语句是否符合预设语法规则;在符合预设语法规则后,基于库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句;更新模块,用于获取脱敏规则对应的若干脱敏函数,以构造脱敏处理器;检测RelNode树结构的SQL语句中字段的字段类型,以获得字段类型为脱敏类型的脱敏字段;确定脱敏字段对应的脱敏函数和预设字段类型;通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段;在执行更新后的RelNode树结构的SQL语句时,自动调用脱敏处理器中的脱敏函数,生成脱敏数据。
[0011]进一步地,构建模块包括获取单元,用于使用Calcite中库表信息对应的预设解析器,作为SQL语句对应的Calcite解析器;或,根据库表信息创建解析器,作为SQL语句对应的Calcite解析器;或,通过预设界面,获取上传的自定义解析器,作为SQL语句对应的Calcite解析器。
[0012]进一步地,构建模块包括构建单元,用于通过Calcite解析器中预设的JavaCC程序,将SQL语句转换为SqlNode类型的SQL语句;通过Calcite解析器中预设的SQL检验器SqlValidator,校验SqlNode类型的SQL语句是否符合预设语法规则;通过Calcite解析器中预设的转换器SqlToRelConverter、库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句。
[0013]进一步地,更新模块包括CAST函数单元,用于通过CAST函数格式:CAST(脱敏函数(脱敏字段名) AS 预设字段类型) AS 脱敏字段名,更新RelNode树结构的SQL语句中的脱敏字段。
[0014]第三方面,本申请提供了一种基于Apache Calcite的数据脱敏设备,设备包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被执行时,使得处理器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1. 一种基于Apache Calcite的数据脱敏方法,其特征在于,所述方法包括:在接收到预设数据查询工具发起数据查询请求时,基于数据查询请求生成SQL语句;通过Calcite程序接收SQL语句,获取SQL语句中字段对应的字段类型和库表信息;其中,字段类型包括脱敏类型和非脱敏类型;基于库表信息,获取SQL语句对应的Calcite解析器;通过Calcite解析器,将SQL语句转换为SqlNode类型的SQL语句,并校验SqlNode类型的SQL语句是否符合预设语法规则;在符合预设语法规则后,基于库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句;获取脱敏规则对应的若干脱敏函数,以构造脱敏处理器;检测RelNode树结构的SQL语句中字段的字段类型,以获得字段类型为脱敏类型的脱敏字段;确定脱敏字段对应的脱敏函数和预设字段类型;通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段;在执行更新后的RelNode树结构的SQL语句时,自动调用脱敏处理器中的脱敏函数,生成脱敏数据。2. 根据权利要求1所述的基于Apache Calcite的数据脱敏方法,其特征在于,基于库表信息,获取SQL语句对应的Calcite解析器,具体包括:使用Calcite中库表信息对应的预设解析器,作为SQL语句对应的Calcite解析器;或,根据库表信息创建解析器,作为SQL语句对应的Calcite解析器;或,通过预设界面,获取上传的自定义解析器,作为SQL语句对应的Calcite解析器。3. 根据权利要求1所述的基于Apache Calcite的数据脱敏方法,其特征在于,通过Calcite解析器,将SQL语句转换为SqlNode类型的SQL语句,并校验SqlNode类型的SQL语句是否符合预设语法规则;在符合预设语法规则后,基于库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句,具体包括:通过Calcite解析器中预设的JavaCC程序,将SQL语句转换为SqlNode类型的SQL语句;通过Calcite解析器中预设的SQL检验器SqlValidator,校验SqlNode类型的SQL语句是否符合预设语法规则;通过Calcite解析器中预设的转换器SqlToRelConverter、库表信息,将SqlNode类型的SQL语句构建为RelNode树结构的SQL语句。4. 根据权利要求1所述的基于Apache Calcite的数据脱敏方法,其特征在于,通过CAST函数、脱敏函数和预设字段类型,更新RelNode树结构的SQL语句中的脱敏字段,具体包括:通过CAST函数格式:CAST(脱敏函数(脱敏字段名) AS 预设字段类型) AS 脱敏字段名,更新RelNode树结构的SQL语句中的脱敏字段。5. 一种基于Apache Calcite的数据脱敏系统,其特征在于,所述系统包括:获取模块,用于在接收到预设...

【专利技术属性】
技术研发人员:刘保卫匡尚超席现国李永鑫
申请(专利权)人:北方健康医疗大数据科技有限公司
类型:发明
国别省市:

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

1