数据保护方法及装置与流程

文档序号:19129722发布日期:2019-11-13 02:30阅读:226来源:国知局
本申请涉及通信领域,具体而言,涉及一种数据保护方法及装置。
背景技术
::在相关技术中,数据脱敏是通过对某些敏感信息使用脱敏规则进行数据的变形,从而实现敏感隐私数据可靠保护的技术。相关技术中实现数据库脱敏的技术、方案和产品,往往通过外置脱敏服务器或者脱敏代理网关gateway,以中间件转换的方式进行脱敏。图1是根据相关技术中通过脱敏服务器进行数据保护的流程图,如图1所示,包括以下步骤:步骤1:发送查询请求,具体地,应用程序将请求发送给数据脱敏服务器;步骤2:改写查询请求,具体地,由数据脱敏服务器接收并解析数据访问请求,确定本次访问涉及敏感数据;步骤3:执行查询请求,具体地,数据脱敏服务器修改数据访问请求得到脱敏数据访问请求,并将修改后的脱敏数据访问请求发送至数据库;步骤4:数据库返回查询请求,具体地,数据库根据脱敏数据访问请求查询得到数据查询结果,并利用预设信息替换查询结果数据中的敏感数据,得到脱敏数据;步骤5:脱敏服务器返回查询请求,具体地,脱敏服务器接收数据库返回的脱敏数据,向应用程序输出脱敏数据。上述相关技术的方案存在以下主要缺陷和不足:①需要专门的脱敏中间件,即外置数据脱敏服务器,增加了软硬件成本及复杂度,运维成本高;②查询请求和结果返回都需要经过脱敏中间件,消耗大量网络带宽及计算、存储资源,性能较差,并发程度不高。大数据一般是大型数据集,数据体量大,很多实际应用中已经形成了pb级的数据量;在数据量非常庞大的情况下,通过中间件方式无法满足大数据场景下海量数据高性能动态实时脱敏的响应时间要求;③数据库返回的结果数据需要缓存在脱敏服务器中,带来了数据泄露的安全隐患;④相关技术改变了应用系统的使用模式,无法实现对应用完全透明,需要更换数据库访问地址及端口,改变了应用者的使用习惯,对已有系统的迁移引入很大的工作量。针对相关技术中在大数据环境下实行数据保护运营难度大的问题,目前还没有有效的解决方案。技术实现要素:本申请实施例提供了一种数据保护方法及装置,以至少解决相关技术中在大数据环境下实行数据保护运营难度大的问题。根据本申请的一个实施例,提供了一种数据保护方法,包括:数据库执行引擎接收客户端发送的数据请求信息;获取与所述数据请求信息中携带的客户端的身份标识对应的预设策略,所述数据库执行引擎依据所述预设策略对所请求的数据执行数据保护操作,得到目标数据。根据本申请的另一个实施例,提供了一种数据保护装置,包括:接收模块,用于接收客户端发送的数据请求信息;数据保护模块,用于获取与所述数据请求信息中携带的客户端的身份标识对应的预设策略,所述数据库执行引擎依据所述预设策略对所请求的数据执行数据保护操作,得到目标数据。根据本申请的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。根据本申请的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。通过本申请,数据库执行引擎接收客户端发送的数据请求信息;获取与该数据请求信息中携带的客户端的身份标识对应的预设策略,该数据库执行引擎依据该预设策略对所请求的数据执行数据保护操作,得到目标数据;该数据库执行引擎将该目标数据发送给该客户端。解决了相关技术中在大数据环境下实行数据保护运营难度大的问题,本申请摒弃了外置脱敏服务器方案,在大数据数据库执行引擎中内置数据保护装置,在不改变用户请求逻辑及数据原始值的前提下,利用大数据数据库引擎自身的分布式处理能力,实现高性能数据保护功能。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据相关技术中通过脱敏服务器进行数据保护的流程图;图2是根据本申请一个实施例的一种大数据敏感数据保护装置模块图;图3是根据本申请另一实施例同时支持多种大数据数据库引擎数据保护功能示意图;图4是根据本申请另一实施例的数据保护策略模型图;图5是根据本申请另一实施例的数据保护策略配置示意图;图6是根据本申请另一实施例的脱敏算法管理模型图;图7是根据本申请另一实施例sql类大数据数据库引擎数据保护流程图;图8是根据本申请另一实施例非sql类大数据数据库引擎数据保护流程图;图9是根据本申请另一实施例通过策略管理界面设置数据保护策略实施流程图;图10是根据本申请另一实施例通过api接口设置数据保护策略实施流程图;图11是根据本申请另一实施例在数据导入导出过程中进行数据保护流程图。具体实施方式下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请实施例中提供了一种用户设备从数据库执行引擎中获取数据的方案,该数据库执行引擎与相关技术不同,内置数据保护装置,接收到客户端的数据请求信息后,在内部进行数据保护,该数据保护可以包括数据脱敏,数据过滤等。本申请实施例可以运行于图2所示的网络架构上,图2是根据本申请一个实施例的一种大数据敏感数据保护装置模块图,如图2所示,该网络架构至少包括:大数据数据库客户端,大数据数据库执行引擎,统一策略服务三部分。具体的每部分的装置模块的描述见后续的本申请实施例。在本实施例中提供了一种运行于上述网络架构的数据保护方法,该流程包括如下步骤:步骤一,数据库执行引擎接收客户端发送的数据请求信息;可以相当于图2中的大数据数据库执行引擎;步骤二,获取与该数据请求信息中携带的客户端的身份标识对应的预设策略,该数据库执行引擎依据该预设策略对所请求的数据执行数据保护操作,得到目标数据;可选地还有步骤三,该数据库执行引擎将该目标数据发送给该客户端。采用上述步骤,数据库执行引擎接收客户端发送的数据请求信息;获取与该数据请求信息中携带的客户端的身份标识对应的预设策略,该数据库执行引擎依据该预设策略对所请求的数据执行数据保护操作,得到目标数据;该数据库执行引擎将该目标数据发送给该客户端。解决了相关技术中在大数据环境下实行数据保护运营难度大的问题,本申请摒弃了外置脱敏服务器方案,在大数据数据库执行引擎中内置数据保护装置,在不改变用户请求逻辑及数据原始值的前提下,利用大数据数据库引擎自身的分布式处理能力,实现高性能数据保护功能。可选地,该数据库执行引擎依据该预设策略对所请求的数据执行数据保护操作包括:该数据库执行引擎依据预设策略对所请求的数据执行数据过滤操作和/或数据脱敏操作,其中,该预设策略包括过滤规则和/或脱敏规则。可选地,该数据库执行引擎对该所请求的数据执行数据过滤操作和/或数据脱敏操作包括以下之一:对所请求的数据执行数据过滤操作后,执行数据脱敏操作;在执行数据脱敏操作的过程中嵌入数据过滤操作流程;对所请求的数据执行数据过滤操作;对所请求的数据执行数据脱敏操作。可选地,在数据库接收到结构化查询语言sql语句的情况下,该数据库执行引擎依据预设策略对该所请求的数据执行该数据脱敏操作包括:依据该sql语句生成抽象语法树ast;深度遍历该ast,获取该sql语句最外层多个输出字段逐层依赖的表名及字段名;将该sql语句的最外层输出字段中,与该字段名对应的输出字段进行数据脱敏。sql语句最外层或者称为顶层。本申请文件中的表名还可以是表的别名,字段名还可以是字段的别名。可选地,获取最外层多个输出字段逐层依赖的表名及字段名之后,该方法还包括以下至少之一:禁止对该sql语句中关于中间计算的从句中的输出字段进行脱敏;禁止对该sql语句中where和/或limit条件语句中的输出字段进行脱敏。上述sql语句中关于中间计算的从句包括:groupby,orderby,sortby,distrbuteby,join,union,like,between,函数等从句。可选地,通过以下方式之一对该sql语句中关联派生表的select从句中的该派生表进行数据脱敏:获取该关联派生表的select从句查询的输出字段名所依赖的表及字段名对应的预设脱敏规则,将该预设脱敏规则作为该输出字段的脱敏规则,依据该脱敏规则对该派生表进行数据脱敏;数据库执行该关联派生表的select从句之后,该派生表为依据该预设脱敏规则进行数据脱敏后的派生表。该select从句包括createtableasselect或insertintoselect等从句。可选地,在该数据库接收到结构化查询语言sql语句之后,确定当前sql语句未被改写过,深度遍历该ast树,获取以下信息至少之一:获得该sql语句的内部结构,生成sql语句查询的输出字段的依赖关系表,其中,该依赖关系表以树的形式记录了每个该输出字段逐层依赖的表及字段;获取该sql语句中select语句查询的最外层每个输出字段名,生成最外层select查询输出字段列表;获取该sql语句中所有新建表表名和插入表表名,sql语句中所有新建表或插入表,可以是createtableasselect或insertintoselect从句中的表。可选地,在该select语句查询的最外层输出字段列表中的每个输出字段均执行以下步骤:从该最外层输出字段列表中按预设顺序选取第一输出字段;深度遍历该依赖关系表,获取该第一输出字段名对应的最深层依赖的表名及字段名;获取为该最深层依赖的表名及字段名预设的脱敏规则;确定该sql语句为select语句之后,依据该脱敏规则处理该第一输出字段对应的部分sql语句形成第一sql语句,使用该第一sql语句改写该第一输出字段对应的ast节点原有值。可选地,获取该最深层依赖的表及字段的脱敏规则,确定该sql语句为createtableasselect或insertintoselect语句之后,向该数据库的所有新建表和插入表中当前输出字段插入对应的该脱敏规则。本申请文件中的最深层依赖可以包括,某个最外层输出字段和表格的多层对应关系中,抛去中间层的对应关系,该最外层输出字段最深度对应的表及字段。可选地,对该最外层输出字段列表中的每个输出字段对应的ast节点值进行改写之后,遍历改写后的ast重新合成第二sql语句,确定该第二sql语句为最终执行的sql语句。可选地,遍历改写后的ast重新合成第二sql语句,确定该第二sql语句为最终执行的sql语句之后,该数据库依据该最终执行的sql语句,确定待执行的物理计划;执行该物理计划,并将处理结果反馈至该客户端。可选地,在数据库接收到结构化查询语言sql语句的情况下,该数据库执行引擎对该所请求的数据执行该数据过滤操作包括:依据该sql语句生成抽象语法树ast;遍历该ast执行以下步骤:在该ast中的一个叶子节点为物理表的情况下,获取该物理表的表过滤规则;在该ast中,新增一个子查询节点,其中,该叶子节点的原父节点为该子查询节点的父节点,该叶子节点为该子查询节点的子节点;将该表过滤规则应用至该子查询节点;遍历该ast执行完上述步骤之后获取重构ast,依据该重构ast获取重构sql语句,执行该重构sql语句。可选地,在数据库接收到非sql类访问请求的情况下,按照预设策略对所请求的数据进行数据保护,包括:该数据库获取该非sql类访问请求所请求的数据;获取与该数据对应的预设策略,依据该预设策略对应该数据对应的数据集中的每一条数据依次执行以下至少之一:依据该预设策略包括的过滤规则对该条数据进行数据过滤;解析该条数据,逐个调用与各列对应的脱敏规则对各列进行数据脱敏,并将数据脱敏处理后的各列重新按照原始数据格式组装获取脱敏后的该条数据。可选地,数据库连接有策略装置,其中,允许该策略装置为一个或多个数据库提供策略模型,该策略装置依据以下内容至少之一建立策略模型:身份标识,资源实体,保护规则,其中,该保护规则包括脱敏规则和/或过滤规则。可选地,该策略装置外接有api接口,用于接收用于配置策略模型的输入信号。可选地,该策略装置还用于存储脱敏规则模型,其中,该策略装置依据以下内容至少之一确定敏感数据域的脱敏规则模型:数据脱敏算子,数据脱敏规则;其中,该数据脱敏算子包括实现数据脱敏的基础函数,该数据脱敏规则包括基于该数据脱敏算子进行数据脱敏的规则。本申请另一实施例提出了一种大数据敏感数据保护的方法和装置,以解决相关技术中存在的部署成本较高、安全机制不健全、对用户无法完全透明、性能低下、无法满足大数据动态实时保护要求问题。本申请实施例采用以下技术方案:本申请通过在大数据数据库执行引擎中内置数据保护装置,在不改变用户请求逻辑及数据原始值的前提下,利用大数据数据库引擎自身的分布式处理能力,实现高性能数据脱敏功能及数据过滤功能。本申请摒弃了外置脱敏服务器方案,可以高效、实时地保护大数据隐私数据;同时对应用程序及用户使用完全透明,用户可以完全不感知数据保护过程,实现无缝透明地保护敏感数据。本申请实施例所述一种大数据敏感数据保护的装置由如下几部分组成,可以对应于图2中的网络架构:一、大数据数据库客户端:客户端可以是访问大数据服务的应用、程序、命令或者脚本等,通过网络直接向大数据数据库执行引擎发起访问请求并接收处理结果。特别地,大数据数据库客户端在请求中会默认携带当前提交访问请求的用户名作为访问者的身份标识。客户端采用相关现有技术可实现。二、大数据数据库执行引擎:大数据数据库执行引擎负责完成对客户端请求的业务逻辑处理;大数据数据库执行引擎中包括了请求解析模块、执行模块、结果处理模块和数据保护装置;本申请在大数据数据库执行引擎中增加了数据保护装置,该装置包括数据保护模块、策略代理模块用以实现大数据数据库引擎的数据保护功能。数据保护模块内置到大数据数据库引擎中负责完成实时数据过滤和/或数据脱敏功能。策略代理模块负责为数据保护模块提供保护策略查询接口,策略代理模块作为一个可插拔的插件与大数据数据库引擎部署在一起,由大数据数据库引擎负责加载启动。三、统一策略服务:同时为多个大数据数据库引擎提供统一数据保护策略服务,它包括策略数据库、策略管理模块、算法管理模块,这三个模块构成了本申请的策略装置。策略数据库负责保存数据保护策略及算法相关的配置数据。策略管理模块内置了一套统一的大数据保护策略模型,该模型对访问用户、受保护资源实体、敏感数据保护规则进行抽象,该策略模型包括三部分:①身份标识:包括用户名、用户组名、角色名等,同一个用户可以属于不同的用户组,也可以属于不同的角色,身份标识代表了要进行管控的对象;②资源实体:代表了需要大数据资源,采用服务名-数据库-表-列这种层次模型描述,可以同时对多个不同的大数据组件的资源进行管理;③保护规则:包括列脱敏规则及行过滤规则,具体执行脱敏及数据过滤的转换算法。身份标识与资源实体之间是多对多关系,资源实体与保护规则之间也是多对多关系,脱敏规则与过滤规则单独使用也可以相互组合使用。进一步,基于该模型策略管理模块对外提供了一套策略配置相关的api接口,供二次开发使用,同时也提供了管理界面,系统管理员或者合规管理员可以通过界面对大数据各引擎件的数据保护策略进行配置及管理。算法管理模块包括一套统一的大数据脱敏算子、脱敏规则的开发、部署、管理的框架,可以对内置及第三方开发的脱敏算子进行统一管理,并且提供了算法管理的api接口及管理界面。为了统一管理各个大数据数据库引擎的脱敏算法,本申请实施例提出了一套大数据数据脱敏算法管理模型,包括三部分:①数据脱敏算子:脱敏算子是实际的数据脱敏转换执行的函数,实现脱敏各种算法、函数,包括不限于替换、随机、加密等;数据脱敏算子以算法库的形式驻留在大数据数据库执行引擎中;②数据脱敏规则:基于数据脱敏算子的能力,根据行业的合规要求生成的满足合规要求的数据脱敏规则,用于变形特定数据类型的数据;③敏感数据域:基于列数据或列名称来描述列的功能含义,对敏感数据进行分类。例如“身份证号”作为一类敏感数据,在该类管理所有数据库中的身份证号数据字段,并可实施统一的脱敏规则,每一个敏感数据域都有一个默认的脱敏规则。同一个脱敏算子可以创建多个不同的脱敏规则,同一个脱敏规则,可以分布在不同的敏感数据域中,一个敏感数据域包括多个脱敏规则。本申请的实施例摒弃了数据脱敏服务器,由大数据数据库客户端直接向大数据数据库执行引擎发起数据访问请求,在请求中会携带用户名作为用户的身份标识;当大数据数据库执行引擎收到客户端的访问请求后,由请求解析模块进行解析,数据保护模块根据本次请求会话中内置的用户标识信息并分析请求访问的内容并结合从策略代理获取的策略数据,判断该次请求是否需要执行数据过滤及数据脱敏,如果需要执行数据过滤,则根据策略中的数据过滤条件进行数据筛选,如果需要执行数据脱敏,则根据脱敏策略中对应的脱敏规则对数据进行转换,数据过滤及脱敏转换过程由执行模块利用集群的分布式计算能力并行完成,过滤及脱敏后的结果由结果处理模块直接返回给客户端。针对sql类大数据数据库引擎(包括不限于sparksql/impala/hive/kylin等),本申请实施例的数据脱敏方法不会破坏原始sql访问请求的业务逻辑,本申请通过对sql语句解析后生成的抽象语法树深度遍历并解析找到sql语句所涉及到的表及字段间的依赖关系,最终仅对select查询最外层输出字段中的敏感字段进行脱敏转换;本申请实施例对出现在sql语句中如groupby/orderby/sortby/distrbuteby/join/union/like/betwen/函数等从句中的敏感字段不进行脱敏,对where和或limit条件中出现的敏感字段不会进行脱敏。特别地,createtableasselect及insertintoselect中的select子句中有敏感字段且该字段设置了脱敏规则的情况,本申请实施例提供了两种处理模式对此类sql进行自动脱敏转换,保护派生表的敏感数据。派生表脱敏有两种处理模式:模式1:派生模式,将createtableasselect及insertintoselect的select从句查询输出字段名所依赖的表字段对应的脱敏规则为该输出字段的脱敏规则,将该脱敏规则插入到保护策略库中,当对派生表进行查询时,按插入的脱敏规则进行脱敏转换。这种模式不修改派生表原始数据,为本申请实施例的默认处理模式;模式2:改写模式,对createtableasselect及insertintoselect的select从句进行改写,在执行createtableasselect及insertintoselect之后派生表的数据为脱敏后的数据;本申请实施例所述的数据过滤是通过在对抽象语法树from从句生成的ast节点深度遍历及分析过程中,如果当前ast的节点是一个叶子节点并且是一个物理表,调用策略代理接口获取表过滤规则,如果存在该表的过滤规则,则重构ast树,新增一个子查询节点,该叶子节点的原父节点成为子查询节点的父节点,该叶子节点的为子查询节点的子节点,将获取的过滤规则应用到该子查询节点,完成对ast树的重构。本申请实施例的数据保护流程可以先执行数据过滤流程生成重构后的ast,再以此ast为再基础执行数据脱敏流程;也可以在数据脱敏流程中嵌入数据过滤流程,不管是哪种方式数据保护流程最终执行结果都是一样的。针对sql类大数据数据库引擎,本申请实施例所述的敏感数据实时保护流程如下:步骤1:客户端通过网络直接向大数据数据库执行引擎发起sql访问请求,在请求中会携带用户名作为用户的身份标识;步骤2:大数据数据库引擎的sql解析器针对sql语句进行词法分析,得到词法分析通用符号流,对符号流再进行语法分析,构造出语法树;步骤3:大数据数据库引擎的sql分析器将语法树中未能解析完的关系进行深度分析,获取抽象语法树ast;步骤4:大数据数据库引擎的ast解析模块将ast语法树进行反向解析,解析得到一个可分解的对象树结构;步骤5:大数据数据库引擎的ast重构模块对ast进行重构,将sql进一部抽象和结构化,生成重构后的ast树;步骤6:大数据数据库引擎判断本引擎的数据保护功能开关已经打开且当前sql语句没有被改写过,如果同时满足上面两个条件步骤7进入数据保护流程,否则执行步骤9;步骤7:进入数据保护流程,通过对ast树深度遍历及解析,对sql语句中涉及到敏感字段的部分进行sql改写并重构ast树,步骤7包括以下11小步骤,如下:步骤7.1:通过深度遍历ast树,获得sql内部结构,生成查询输出字段的依赖关系表,该依赖关系表以树的形式记录了每个查询输出字段逐层依赖的表及字段。在遍历解析from从句生成的ast节点过程中,如果当前ast的节点是一个叶子节点并且是一个物理表,调用策略代理接口获取表过滤规则,如果存在该表的过滤规则,则重构ast树,新增一个子查询节点,该叶子节点的原父节点成为子查询节点的父节点,该叶子节点的为子查询节点的子节点,将获取的过滤规则应用到该子查询节点,完成对ast树的重构。步骤7.2:通过深度遍历ast树,获取select查询最外层每个输出字段名,生成最外层select查询输出字段列表;特别地,对应最外层查询输出字段为*的情况则表示输出字段为依赖关系表的下一层所有的输出字段,将下一层字段作为最外层查询的最终输出字段,依次类推;步骤7.3:通过深度遍历ast树获取createtable或insert从句中所有新建表或者插入表名(或别名);特别地:步骤7.1-步骤7.3的目的是深度分析ast节点获取sql内部结构,步骤7.1、步骤7.2、步骤7.3的执行顺序可以调整,不管是先执行其中哪一步生成的sql内部结构结果是一样的。步骤7.4:从select查询最外层输出字段列表中按顺序获取一个输出字段名(或别名);步骤7.5:深度遍历依赖关系表,找到当前输出字段名所对应最终依赖的表(或表别名)及字段名(或字段别名);步骤7.6:调用策略代理模块接口(携带用户名),获取当前输出字段最终依赖的表及字段的脱敏规则;步骤7.7:判断如果没有获取脱敏规则,则跳转执行步骤7.10;如果当前sql语句为select语句跳转执行步骤7.8对sql进行改写;如果当前为createtable/insert语句,获取大数据数据库引擎配置的派生表脱敏模式;如果是改写模式执行步骤7.8对sql进行改写,如果是派生模式执行步骤7.9新插入一条脱敏策略;步骤7.8:对当前输出字段对应ast节点的值(一段sql语句)进行改写,使用脱敏规则拼写的新sql语句替换该ast节点原有值;步骤7.9:调用策略代理接口向数据保护策略数据库中插入当前输出字段对应的脱敏策略,脱敏策略对应的资源表名为步骤7.3获取的表名(或别名),脱敏规则为步骤7.6获取的脱敏规则,如果有多张表,则每张表都插入对应的脱敏策略;步骤7.10:判断所有的select最外层查询输出字段是否处理完毕,如果没有完毕,则对剩余的输出字段按照步骤7.4-7.9逐个处理;步骤7.11:如果sql被改写,则遍历改写后的抽象语法树,将抽象语法树重新合成为新的sql语句,生成最终执行的sql语句,同时置sql改写标记;特别地,sql改写标记为本申请实施例所述的一种控制变量参数。步骤8:大数据数据库执行引擎判断数据保护开关打开且sql被改写过,如果上面两个条件同时满足,则执行步骤2将重新的改写sql语句提交给sql解析接口重新进行sql语句的分析;否则执行步骤9继续后续流程;步骤9:大数据数据库引擎的sql优化器对大部分逻辑层优化,通过变换操纵树,合并操作符,减少作业数目,提升性能;步骤10:大数据数据库引擎的可执行物理计划模块生成可执行的物理计划,生成可执行的大数据作业;步骤11:大数据数据库引擎的执行模块将可执行的大数据作业提交给大数据数据库引擎的分布式执行环境中分布式执行;步骤12:执行完毕后将由大数据数据库引擎结果处理模块将结果集数据直接返回客户端。特别地,步骤1-步骤5、步骤9-步骤12为大数据数据库引擎已有功能及流程,步骤6-步骤8为本申请实施例新增数据保护流程,步骤11所执行的改写后的sql语句在各个分布式处理节点上并发执行。特别地,本申请实施例所述的数据过滤流程可以融入数据脱敏过程中,在步骤7.1中分析from从句时,嵌入数据过滤流程;同时也可以进一步调整,在步骤7.1中不执行数据过滤流程,在步骤7.11之前增加数据过滤流程处理,生成重构后的ast,后续流程不变。或者数据过滤流程与数据脱敏过程作为数据保护的两个独立子过程先后调用:先执行数据过滤的流程,在原步骤7.1之前插入数据过滤过程,生成重构后的ast,然后顺序执行原步骤7.1-7.11(其中原步骤7.1中数据过滤流程不再调用)。不管是哪种执行顺序,最终的执行结果是一样的。针对非sql类的大数据数据库引擎(包括不限于kudu等)本申请实施例所述的数据保护流程如下:步骤1:客户端应用直接通过命令、脚本、应用程序、接口调用等方式通过网络直接向大数据数据库引擎服务端发起数据请求,客户端在请求消息中会携带访问者自身用户名信息;步骤2:服务端接受客户端的访问请求,并进行解析;步骤3:按照大数据数据库引擎的分布式调度框架,将请求调度分发给各个处理节点执行具体的逻辑;步骤4:处理节点收到数据处理请求,根据请求业务逻辑,查询满足要求的数据,获取查询结果集;特别地,本申请是在各个分布式处理节点获取结果集后,在各个处理节点上对结果集执行数据过滤及脱敏功能;步骤5:处理节点判断大数据数据库引擎数据保护功能是否打开,如果打开,则进入步骤6,否则进入步骤9;步骤6:对步骤4获取的查询结果数据集进行过滤及脱敏处理;步骤6.1:调用策略代理接口获取当前访问用户的数据保护策略;步骤6.2:根据获取的数据脱敏策略结合用户访问请求的资源实体信息,判断当前请求访问数据集是否需要进行脱敏;步骤6.3:从结果集中按顺序获取一条结果数据;步骤6.4:根据数据过滤规则,判断该记录是否满足过滤条件,如果不满足过滤条件,则执行步骤6.5,否则执行步骤6.7;步骤6.5:根据步骤6.2的判断结果,判断当前记录是否需要执行数据脱敏,如果执行脱敏,则执行步骤6.6,否则执行步骤6.7;步骤6.6:对当前的结果数据进行解析,找到需要执行脱敏的列(可能多个),逐个调用对应的数据脱敏规则进行脱敏转换,并结果转换后的结果重新按照原始数据格式进行组装拼成脱敏后的结果数据;步骤6.7:判断当前所有数据集都处理完毕,如果没有处理完,则执行步骤6.3,直到获取的结果集数据全部过滤及脱敏处理完毕;步骤7:处理节点对结果数据进行封装,并将结果直接返回客户端;步骤8:客户端直接获得从各个分布式处理节点的返回结果并进行汇总。特别地,步骤1-步骤4、步骤7-步骤8为相关技术中大数据数据库引擎已有功能及流程,步骤6是数据保护模块的功能流程,步骤4-步骤7在各个处理节点上并行执行。下面结合本申请具体实施例进一步说明。如图2所示,本申请实施例所述一种大数据敏感数据保护的装置由如下几部分组成:一、大数据数据库客户端:客户端是访问大数据服务的应用、程序、命令或者脚本等,通过网络向大数据数据库执行引擎发起访问请求并接收处理结果,在大数据数据库客户端的请求中默认会携带用户名作为用户的身份标识。客户端采用已有技术,不需要做任何改变。二、大数据数据库执行引擎:大数据数据库执行引擎负责完成对客户端请求的业务逻辑处理;大数据数据库执行引擎中包括了请求解析模块、执行模块、结果处理模块和数据保护装置;本申请在大数据数据库执行引擎中增加了数据保护装置,该装置包括数据保护模块、策略代理模块用以实现大数据数据库引擎的数据保护功能。数据保护模块内置到大数据数据库引擎中负责完成实时数据过滤和/或数据脱敏功能。策略代理模块负责为数据保护模块提供保护策略查询接口,策略代理模块作为一个可插拔的插件与大数据数据库引擎部署在一起,由大数据数据库引擎负责加载启动,插件方式实现策略管理与执行逻辑剥离,并方便功能扩展;策略代理模块从本申请的策略管理模块获取本执行引擎所配置数据保护策略并缓存到本地内存,通过该方式获取策略并对外提供策略接口;通过这种方式,本申请的策略管理模块可以同时管理多个大数据数据库引擎的数据保护策略,这种是策略代理模块插件默认实现方式;当大数据数据库执行引擎收到客户端的访问请求后,由请求解析模块进行解析,数据保护模块根据本次请求会话中内置的用户标识信息并分析请求访问的内容并结合从策略代理获取的策略数据,判断该次请求是否需要执行数据过滤及数据脱敏,如果需要执行数据过滤,则根据策略中的数据过滤条件进行数据筛选,如果需要执行数据脱敏,则根据脱敏策略中对应的脱敏规则对数据进行转换,数据过滤及脱敏转换过程由执行模块利用集群的分布式计算能力并行完成,过滤及脱敏后的结果由结果处理模块直接返回给客户端。三、统一策略服务:为各个大数据数据库引擎提供统一数据保护策略服务,它包括策略数据库、策略管理模块、算法管理模块,这三个模块构成了本申请的策略装置。策略数据库负责统一保存策略管理及算法管理模块相关的配置数据。策略管理模块内置了一套统一的大数据保护策略模型,该模型对服务、资源及访问实体进行抽象,创建可以满足大数据各个组件的资源模型,并可灵活扩展支持新的大数据数据库引擎过滤及脱敏策略管理;进一步,基于该模型对外提供了一套策略配置相关的api接口,供二次开发使用,同时也提供了管理界面,系统管理员或者合规管理员可以通过界面对大数据各组件的数据保护策略进行配置及管理。算法管理模块包括一套统一的大数据脱敏算子、脱敏规则的开发、部署、管理的框架,可以对内置及第三方开发的脱敏算子进行统一管理,并且提供了算法管理的api接口及管理界面。图3是根据本申请另一实施例同时支持多种大数据数据库引擎数据保护功能示意图,如图3所示,通过本申请的方法可以支持各种大数据数据库引擎实现数据保护功能,由策略装置提供统一的保护策略,在每个大数据数据库引擎(包括不限于hive、sparksql、kylin等)内置一套数据保护装置,均可以按照本申请实施例所述的方法来实现数据保护。策略装置可以包括策略管理,算法管理,策略数据库。针对不同的大数据数据库引擎资源模型存在不一致的情况,本申请在策略管理模块内置了一套资源策略模型,图4是根据本申请另一实施例的数据保护策略模型图,如图4所示,该模型对访问用户、受保护资源实体、敏感数据保护规则进行抽象,该策略模型包括三部分:①身份标识:包括用户名、用户组名、角色名等,同一个用户可以属于不同的用户组,也可以属于不同的角色,身份标识代表了要进行管控的对象;②资源实体:代表了需要大数据资源,采用服务名-数据库-表-列这种层次模型描述,可以同时对多个不同的大数据组件的资源进行管理;③保护规则:包括列脱敏规则及行过滤规则,具体执行脱敏及数据过滤的转换算法;身份标识与资源实体之间是多对多关系,资源实体与保护规则之间也是多对多关系,脱敏规则与过滤规则单独使用也可以相互组合使用。将该策略模型实例化后,如表1所示,表1是根据本申请具体实施例2的示意表格。表1身份标识与资源实体之间是多对多关系,资源实体与处理规则之间也是多对多关系。举例来说:用户张三属于低权限用户,对sparksql服务的db1数据库中的t1表的f1字段,采用全脱敏规则mask_last_64;用户李四属于高权限用户,对sparksql服务的db1数据库中的t1表的f1字段,采用屏蔽后8位的脱敏规则mask_last_8;角色为部长的用户属于高权限用户,对sparksql服务的db1数据库中的t1表的f1字段,采用脱敏后2位的脱敏规则mask_last_2;通过本申请的模型,可以支持各种细粒度的脱敏策略管理,可以针对不同用户/用户组/角色等访问实体类型配置不同的脱敏规则。另外,可以针对不同的用户、用户组、角色实现灵活的数据过滤规则:用户张三属于项目组1,只能获取sparksql服务的db1数据库中的t1表的属于项目组1的记录;用户李四属于项目组1,只能获取sparksql服务的db1数据库中的t1表的属于项目组1的记录;列脱敏规则与行过滤规则可以灵活组合使用,可以为不同的身份标识,单独设置列脱敏规则或者单独设置行过滤规则,或者同时设置列脱敏及行过滤规则。如,用户张三属于低权限用户,对sparksql服务的db1数据库中的t1表的f1字段,采用全脱敏规则同时用户张三属于低权限用户,对sparksql服务的db1数据库中的t1表的f1字段,采用全脱敏规则,当张三查询sparksql服务的db1数据库中的t1表的f1字段会仅对项目组1的记录集输出,并且对f1字段进行全脱敏处理。如上,通过本申请的策略模型可以灵活实现多个大数据数据库引擎提供细粒度控制的数据保护策略配置功能。针对大数据服务配置单条保护策略的界面示意图,图5是根据本申请另一实施例的数据保护策略配置示意图,如图5所示,具体的配置策略步骤包括:步骤1:合规管理员登录系统进入到大数据数据库引擎对应的数据保护策略配置界面;1.大数据服务名:代表了本次要配置保护策略的大数据数据库引擎对应服务名,如sparksql、hive等;2.身份标识:包括用户名、用户组名、角色名等,同一个用户可以属于不同的用户组,也可以属于不同的角色,身份标识代表了要进行管控的对象;3.资源实体:代表了需要大数据资源,采用服务名-数据库-表-列这种层次模型描述,对hbase而言数据库是hbase的namespace,列以列族:限定符的方式表示,其他的数据库如hive,sparksql等可以对应数据库-表-列层次模型。资源实体支持模糊查询、通配等方式配置。4.保护规则:包括列脱敏规则及行过滤规则,具体执行脱敏及数据过滤的转换算法。身份标识与资源实体之间是多对多关系,资源实体与处理规则之间也是多对多关系,脱敏规则与过滤规则可以同时设置。步骤2:首先选择资源实体作为保护对象,选择或者填写数据库、表、列名称,并将列归属到对应的敏感数据域。可以联动选择,比如输入数据库名后该数据库的表可以自动联想,也可以填写通配符,满足通配条件的表按统一规则保护;步骤3:选择对受限访问该保护对象的用户/用户组/角色等;步骤4:选择敏感字段列选择对应的脱敏规则,如随机、替换、偏移等,如果不设置脱敏规则,则采用敏感数据域的默认脱敏规则;步骤5:设置对应的表数据过滤策略;步骤6:保存数据保护策略后,策略被保存到策略数据库,单条策略配置完成。为了统一管理各个大数据数据库引擎的脱敏算法,本申请提出了一套脱敏算法管理模型,包括三部分,图6是根据本申请另一实施例的脱敏算法管理模型图,如图6所示,敏感数据域,脱敏规则,脱敏算子的说明如下:①数据脱敏算子:脱敏算子是实际的数据脱敏转换执行的函数,实现脱敏各种算法、函数,包括不限于替换、随机、加密等;数据脱敏算子以算法库的形式驻留在大数据数据库执行引擎中;②数据脱敏规则:基于数据脱敏算子的能力,根据行业的合规要求生成的满足合规要求的数据脱敏规则,用于变形特定数据类型的数据;③敏感数据域:基于列数据或列名称来描述列的功能含义,对敏感数据进行分类。例如“身份证号”作为一类敏感数据,在该类管理所有数据库中的身份证号数据字段,并可实施统一的脱敏规则,每一个敏感数据域都有一个默认的脱敏规则。同一个脱敏算子可以创建多个不同的脱敏规则,同一个脱敏规则,可以分布在不同的敏感数据域中,一个敏感数据域包括多个脱敏规则。表2是具体实施例4的脱敏规则名脱敏算子脱敏算子实参参数列表,如表2所示:表2脱敏规则名脱敏算子脱敏算子实参参数列表mask_last_64mask_last_ncol,64,‘*’mask_last_8mask_last_ncol,8,‘*’mask_last_2mask_last_ncol,2,‘*’如表2所示,同一个脱敏算子mask_last_n产生了3条不同的脱敏规则,不同的脱敏规则的对算子的实参不同:mask_last_64、mask_last_8、mask_last_2。其中,mask_last_64的参数是col,64,‘*’把当前列col的后64个字符以‘*’屏蔽;mask_last_8的参数是col,8,‘*’把当前列col的后8个字符以‘*’屏蔽;mask_last_2的参数是col,2,‘*’把当前列col的后2个字符以‘*’屏蔽。这样基于同一个算子可以产生不同的脱敏规则,这些规则可以灵活应用到不同的用户实体,产生不同的脱敏数据。每一个敏感数据域都默认一个脱敏规则,表3是具体实施例4的敏感数据域与脱敏规则的对应表,如表3所示:表3敏感数据域名默认脱敏规则名身份证域idhidingudf_full银行卡域cardmaskhidingudf_first_2姓名域chinanamemaskhidingudf_first_1此类敏感数据默认采用敏感数据域的脱敏规则,减少配置工作量。如果默认规则不满足字段实际脱敏需求,则可以从脱敏规则列表中选择合适的规则。针对sql类大数据数据库引擎(包括不限于sparksql/impala/hive/kylin等),本申请的数据脱敏方法不会破坏原始sql访问请求的业务逻辑,本申请通过对sql语句解析后生成的抽象语法树深度遍历并解析找到sql语句所涉及到的表及字段间的依赖关系,最终仅对select查询最外层输出字段中的敏感字段进行脱敏转换;本申请对出现在sql语句中如groupby/orderby/sortby/distrbuteby/join/union/like/betwen/函数等从句中的敏感字段不进行脱敏,对where和或limit条件中出现的敏感字段不会进行脱敏。如:selectzip,sum(salary)assalaryfromstuffgroupbyziphavingsum(salary)>15000;假如zip为敏感字段,对其设置脱敏转换算法,通过本申请的方法底层的语句fromstuffgroupbyziphavingsum(salary)>15000中的zip不会进行脱敏处理,仅对最外层select输出字段zip脱敏处理。通过本申请的方法,可以支持各类复杂sql语句的脱敏能力,同时支持对视图view及cte语句的脱敏能力。特别地:createtableasselect及insertintoselect中的select子句中有敏感字段且该字段设置了脱敏规则的情况,本申请提供了两种处理模式对此类sql进行自动脱敏转换,保护派生表的敏感数据。派生表脱敏有两种处理模式:模式1:派生模式,将createtableasselect及insertintoselect的select从句查询输出字段名(别名)所依赖的表字段名(别名)对应的脱敏规作为该输出字段的脱敏规则,将该脱敏规则插入到保护策略库中,当对派生表进行查询时,按插入的脱敏规则进行脱敏转换。这种模式不修改派生表原始数据,为本申请的默认处理模式;模式2:改写模式,对createtableasselect及insertintoselect的select从句进行改写,在执行createtableasselect及insertintoselect之后派生表的数据为脱敏后的数据;如:语句1:createtablestuff_1asselect*fromstuff;语句2:insertintotablestuff_2select*fromstuff;stuff表中有些字段含敏感字段,设置了脱敏规则;分别执行语句1及语句2后:模式1中,新建表stuff_1中数据为stuff原始数据;插入表stuff_2中数据为stuff原始数据;当对stuff_1、stuff_2查询时按派生的脱敏规则实施脱敏转换;模式2中,新建表stuff_1及插入表stuff_2中数据均为stuff表脱敏后的数据;本申请实施例所述的数据过滤是通过在对抽象语法树from从句生成的ast节点深度遍历及分析过程中,如果当前ast的节点是一个叶子节点并且是一个物理表,调用策略代理接口获取表过滤规则,如果存在该表的过滤规则,则重构ast树,新增一个子查询节点,该叶子节点的原父节点成为子查询节点的父节点,该叶子节点的为子查询节点的子节点,将获取的过滤规则应用到该子查询节点,完成对ast树的重构。本申请的数据保护流程可以先执行数据过滤流程生成重构后的ast,再以此ast为再基础执行数据脱敏流程;也可以在数据脱敏流程中嵌入数据过滤流程,不管是哪种方式数据保护流程最终执行结果都是一样的。图7是根据本申请另一实施例sql类大数据数据库引擎数据保护流程图,如图7所示,针对sql类大数据数据库引擎,本申请实施例所述的敏感数据实时保护流程如下:本流程以在数据脱敏中嵌入数据过滤流程为例。步骤1:客户端sql请求,具体地,客户端通过网络直接向大数据数据库执行引擎发起sql访问请求,在请求中会携带用户名作为用户的身份标识;步骤2:用于sql解析器,具体地,大数据数据库引擎的sql解析器针对sql语句进行词法分析,得到词法分析通用符号流,对符号流再进行语法分析,构造出语法树;步骤3:用于sql分析器,具体地,大数据数据库引擎的sql分析器一个将语法树中未能解析完的关系进行深度分析,获取抽象语法树ast;步骤4:解析抽象语法树,具体地,大数据数据库引擎的ast解析模块将ast语法树进行反向解析,解析得到一个可分解的对象树结构;步骤5:重构抽象语法树,具体地,大数据数据库引擎的ast重构模块对ast进行重构,将sql进一部抽象和结构化,生成重构后的ast树;步骤6:保护开关打开&&sql未被改写,具体地,大数据数据库引擎判断本引擎的数据保护功能开关已经打开且当前sql语句没有被改写过,如果同时满足上面两个条件执行步骤7进入数据保护流程,如图7右侧的数据保护流程,否则执行步骤9;步骤7:进入数据保护流程,通过对ast树深度遍历解析,对sql语句中涉及到敏感字段的部分进行sql改写并重构ast树:本具体实施例中以hive生成的抽象语法树解析过程为例:步骤7.1:深度遍历并及解析ast,获得from从句的内部结构,生成查询输出字段的依赖关系表fromtables,该依赖关系表以树的形式记录了每个查询输出字段逐层依赖的表及字段。在遍历解析from从句的ast的过程中,如果当前ast的节点是一个叶子节点并且是一个物理表,调用策略代理接口获取表过滤规则,如果存在该表的过滤规则,则重构ast树,新增一个子查询节点,该叶子节点的原父节点成为子查询节点的父节点,该叶子节点的为子查询节点的子节点,将获取的过滤规则应用到该子查询节点,完成对ast树的重构。这样后续根据ast生成改写后的sql语句时,会把过滤规则拼装sql语句作为该表的子查询,将原物理表作为该子查询的别名。步骤7.2:通过深度遍历ast,获取select查询最外层每个输出字段名,生成最外层select查询输出字段列表;特别地:对应最外层查询输出字段为‘*’的情况则表示输出字段为依赖关系表的下一层所有的输出字段,将下一层字段作为最外层查询的最终输出字段,依次类推;步骤7.3:通过深度遍历ast树获取createtable或insert从句中所有新建表或者插入表名(或表别名);特别地:步骤7.1-步骤7.3的目的是深度分析ast节点获取sql内部结构,步骤7.1、步骤7.2、步骤7.3的执行顺序可以调整,不管是先执行其中哪一步生成的sql内部结构结果是一样的。步骤7.4:从select查询最外层输出字段列表中按顺序获取一个输出字段名;步骤7.5:深度遍历依赖关系表,找到当前输出字段名所对应最终依赖的表名(或表别名)及字段名(或字段别名);步骤7.6:调用策略代理模块接口(携带用户名),获取当前输出字段最终依赖表及字段的脱敏规则;步骤7.7:判断如果没有获取脱敏规则,则跳转执行步骤7.10;如果当前sql语句为select语句跳转执行步骤7.8对sql进行改写;如果当前为createtable/insert语句,获取大数据数据库引擎配置的派生表脱敏模式,如果是改写模式执行步骤7.8对sql进行改写,如果是派生模式执行步骤7.9新插入一条脱敏策略;步骤7.8:对当前输出字段对应ast节点的值(一段sql语句)进行改写,使用脱敏规则拼写的新sql语句替换该ast节点原有值,如果该输出字段不含脱敏规则,则不做改变。步骤7.9:调用策略代理接口向数据保护策略数据库中插入当前输出字段对应的脱敏策略,脱敏策略对应的资源表名为步骤7.3获取的表名(或表别名),脱敏规则为步骤7.6获取的脱敏规则,如果有多张表,则每张表都插入对应的脱敏策略;步骤7.10:判断所有的select最外层查询输出字段是否处理完毕,如果没有完毕,则对剩余的输出字段按照步骤7.4-7.9逐个处理;步骤7.11:如果sql被改写,则遍历改写后的抽象语法树,将抽象语法树重新合成为新的sql语句,生成最终执行的sql语句,置sql改写标记为已改写,防止下次被二次修改;特别地,sql改写标记为本申请实施例所述的一种控制变量参数。步骤8:执行步骤7.11之后,大数据数据库执行引擎判断数据保护开关打开且sql被改写过,如果上面两个条件同时满足,则执行步骤2将重新的改写sql语句提交给sql解析接口重新进行sql语句的分析;否则执行步骤9继续后续流程;步骤9:用于sql优化器,具体地,大数据数据库引擎的sql优化器对大部分逻辑层优化,通过变换操纵树,合并操作符,减少作业数目,提升性能;步骤10:生成可执行物理计划,具体地,大数据数据库引擎的可执行物理计划模块生成可执行的物理计划,生成可执行的大数据作业;步骤11:大数据集群分布式执行,具体地,大数据数据库引擎的执行模块将可执行的大数据作业提交给大数据数据库引擎的分布式执行环境中分布式执行;步骤12:向客户端返回执行结果,具体地,执行完毕后将由大数据数据库引擎结果处理模块将结果集数据直接返回客户端。特别地,步骤1-步骤5、步骤9-步骤12为大数据数据库引擎已有功能及流程,步骤6-步骤8为本申请新增数据保护流程,步骤11所执行的改写后的sql语句在各个分布式处理节点上并发执行。特别地:本申请实施例所述的数据过滤流程可以融入数据脱敏过程中,在步骤7.1中分析from从句时,嵌入数据过滤流程;同时也可以进一步调整,在步骤7.1中不执行数据过滤流程,在步骤7.11之前增加数据过滤流程处理,生成重构后的ast,后续流程不变;或者数据过滤流程与数据脱敏过程作为数据保护的两个独立子过程先后调用:先执行数据过滤的流程,在原步骤7.1之前插入数据过滤过程,生成重构后的ast,然后顺序执行原步骤7.1-7.11(其中原步骤7.1中数据过滤流程不再调用)。不管是哪种执行顺序,最终的执行结果是一样的。针对非sql类的大数据数据库引擎(包括不限于kudu等)数据保护流程,图8是根据本申请另一实施例非sql类大数据数据库引擎数据保护流程图,如图8所示:步骤1:客户端请求,具体地,客户端应用直接通过命令、脚本、应用程序、接口调用等方式通过网络直接向大数据数据库引擎服务端发起数据请求,客户端在请求消息中会携带访问者自身用户名信息;步骤2:请求解析,具体地,服务端接受客户端的访问请求,并进行解析;步骤3:调度执行,具体地,按照大数据数据库引擎的分布式调度框架,将请求调度分发给各个处理节点执行具体的逻辑;步骤4:各个处理节点获取结果数据集,具体地,处理节点收到数据处理请求,根据请求业务逻辑,查询满足要求的数据,获取查询结果集;特别地,本申请是在各个分布式处理节点获取结果集后,在各个处理节点上对结果集执行数据过滤及脱敏功能;步骤5:数据保护开关打开,具体地,处理节点判断大数据数据库引擎数据保护功能是否打开,如果打开,则进入步骤6,否则进入步骤9;步骤6:数据保护流程,具体地,对步骤4获取的查询结果数据集进行过滤及脱敏处理;步骤6.1:获取保护策略,具体地,调用策略代理接口获取当前访问用户的数据保护策略;步骤6.2:判断当前结果集是否满足脱敏策略,具体地,根据获取的数据脱敏策略结合用户访问请求的资源实体信息,判断当前请求访问数据集是否需要进行脱敏;步骤6.3:从结果集中按顺序获取一条结果数据,具体地,从结果集中按顺序获取一条结果数据,又称之为一条记录;步骤6.4:判断当前记录满足过滤策略?具体地,根据数据过滤规则,判断该记录是否满足过滤条件,如果不满足过滤条件,则执行步骤6.5,否则执行步骤6.7;步骤6.5:根据步骤6.2的判断结果,判断当前记录是否需要执行数据脱敏,如果执行脱敏,则执行步骤6.6,否则执行步骤6.7;步骤6.6:解析数据,逐个调用脱敏规则,进行数据脱敏转换,组装生成脱敏后一条记录,具体地,对当前的结果数据进行解析,找到需要执行脱敏的列(可能多个),逐个调用对应的数据脱敏规则进行脱敏转换,并结果转换后的结果重新按照原始数据格式进行组装拼成脱敏后的结果数据;步骤6.7:判断所有结果数处理完毕?具体地,判断当前所有数据集都处理完毕,如果没有处理完,则执行步骤6.3,直到获取的结果集数据全部过滤及脱敏处理完毕;步骤7:组转过滤及脱敏后的结果集,具体地,处理节点对结果数据进行封装;步骤8:结果集返回客户端,具体地,客户端直接获得从各个分布式处理节点的返回结果并进行汇总。本流程所述的数据脱敏及数据过滤过程可以组合使用或者单独使用。特别地,步骤1-步骤4、步骤7-步骤8为大数据数据库引擎已有功能及流程,步骤6是数据保护模块的功能流程,步骤4-步骤7在各个处理节点上并行执行。本申请实施例所述策略代理模块作为插件包的方式与大数据数据库引擎部署在一起,由大数据数据库引擎负责加载启动,策略代理模块从本申请的策略管理模块获取本执行引擎所配置数据保护策略并缓存,通过该方式获取策略并对外提供策略接口,这种是策略代理模块插件默认实现方式。默认插件的实施步骤如下:步骤1:策略代理模块作为插件包的方式与大数据数据库引擎部署在一起,由大数据数据库引擎负责加载启动,只能选择一种策略代理插件进行加载;步骤2:从策略管理模块获取本执行引擎所配置数据保护策略;步骤3:当执行引擎收到客户端的访问请求后,对请求进行解析,数据保护模块根据本次请求会话中内置的用户标识信息及并分析请求访问的内容并结合从策略代理获取的策略数据;步骤4:策略代码模块为数据保护模块提供保护策略,对访问请求进行审计,将用户对敏感数据的访问日志记录下来,实现敏感数据的可回溯可跟踪。步骤5:数据保护模块判断该次请求是否需要执行数据过滤及脱敏,如果执行数据过滤或脱敏,则根据策略中对应的过滤规则及脱敏规则对数据进行过滤及转换,数据过滤脱敏的转换过程完全利用集群的分布式计算能力并行完成;步骤6:数据脱敏及过滤后的结果由大数据数据库引擎直接返回给客户端。合规管理员通过策略管理界面设置多个大数据数据库引擎的敏感数据保护策略,各个大数据数据库引擎获取本引擎对应的数据保护策略,在客户端访问过程中透明地对数据实时保护,图9是根据本申请另一实施例通过策略管理界面设置数据保护策略实施流程图,如图9所示。步骤1:登录,具体地,合规管理员使用自己的账户和密码登录策略管理界面;步骤2:设置保护策略,合规管理员进入到大数据组件对应的数据保护策略配置界面,通过接口设置保护对象,依次选待大数据数据库引擎服务、数据库、表、列,选择对受限访问该保护对象的用户/用户组/角色等,然后选择敏感字段列选择对应的脱敏规则,如随机、替换、偏移等,也可以设置对应的表数据过滤策略,提交配置后数据保护策略将保存到策略数据库;步骤3:策略代理模块从步骤2中的策略数据库获取策略,具体地,策略代理模块获取数据保护策略;步骤4:大数据客户端发起访问请求,具体地,直接向大数据数据库引擎发起查询请求;步骤5:数据保护,具体地,当大数据执行引擎收到客户端的访问请求后,对请求进行解析;步骤6,数据保护模块从策略代理模块获取策略,具体地,数据保护模块根据本次请求会话中内置的用户标识信息及并分析请求访问的内容并结合从策略代理获取的策略数据;步骤7,判断该次请求是否需要执行数据过滤及脱敏,如果执行数据过滤或脱敏,则根据策略中对应的过滤规则及脱敏规则对数据进行过滤及转换,数据过滤脱敏的转换过程完全利用集群的分布式计算能力并行完成;步骤8:大数据数据库执行引擎将执行结果直接返回客户端。二次开发人员或者应用程序通过api接口调用数据保护策略接口设置多个大数据数据库引擎的数据保护策略,各个大数据数据库引擎获取本引擎对应的数据保护策略,在客户端访问过程中透明地对数据实时保护,图10是根据本申请另一实施例通过api接口设置数据保护策略实施流程图。步骤1:api登录,具体地,二次开发人员或者应用程序通过api认证接口进行用户认证,接口中内置账户和密码,策略管理模块会api调用者用户身份进行认证;步骤2:api设置保护策略,具体地,身份认证通过后,二次开发人员或者应用程序调用策略管理模块提供的策略设置api接口,通过接口设置保护对象,依次选待大数据数据库引擎服务、数据库、表、列,设置对受限访问该保护对象的用户/用户组/角色等,然后设置敏感字段列选择对应的脱敏规则,如随机、替换、偏移等,也可以设置对应的表数据过滤策略、接口调用成功后数据保护策略将保存到策略数据库;步骤3:策略代理模块从策略数据库获取数据保护策略;步骤4:大数据客户端发送访问请求,具体地,直接向大数据数据库引擎发起查询请求;步骤5:当大数据执行引擎收到客户端的访问请求后,对请求进行解析;步骤6,数据保护模块从策略代理模块获取策略,具体地,数据保护模块根据本次请求会话中内置的用户标识信息及并分析请求访问的内容并结合从策略代理获取的策略数据;步骤7,数据保护模块判断该次请求是否需要执行数据过滤及脱敏,如果执行数据过滤或脱敏,则根据策略中对应的过滤规则及脱敏规则对数据进行过滤及转换,数据过滤脱敏的转换过程完全利用集群的分布式计算能力并行完成;步骤8:大数据数据库执行引擎将执行结果直接返回客户端。sqoop(包括sqoop1及sqoop2版本)是一个用来将hadoop和关系型数据库中的数据相互转移的工具,可以将hive等大数据库中的数据导出到关系型数据库(如mysql,oracle等)中。在大数据数据库引擎设置脱敏策略后,通过sqoop工具可以自动实现数据导出过程中数据脱敏的功能,将脱敏后的数据导出到关系库中,以hive为例,图11是根据本申请另一实施例在数据导入导出过程中进行数据保护流程图,如图11所示。步骤1:设置保护策略,具体地,合规管理员根据行业的合规要求,梳理敏感信息,设置hive敏感字段的脱敏策略,不同身份用户的策略不同;步骤2:客户端发出导出命令,具体地,通过sqoop客户端命令将hive的数据导出到关系库中,sqoop导出命令可以指定源及目标数据库、表及条件表达式等;步骤3:导出数据,执行数据脱敏,具体地,sqoop向hive执行引擎发送数据查询请求,hive执行引擎收到数据查询请求时,根据步骤1设置的脱敏策略,根据用户的身份信息对结果数据进行脱敏处理,将脱敏后数据写入关系数据库;步骤4:执行结果返回至客户端,具体地,sqoop将命令执行结果返回客户端。此具体实施例流程可以作为大数据静态脱敏程序的实现流程。采用本申请实施例所述方法和装置,与相关技术相比,首先不需要专有的脱敏服务器,节约了额外的软硬件成本;其次,执行效率最高,充分利用大数据数据库执行引擎的分布式计算能力,高性能地完成数据过滤及脱敏功能,可以同时满足大数据高效静态及动态数据脱敏需求;再次,对应用及用户完全透明,不改变业务逻辑,不破坏原始数据,应用无感知;同时,本申请提供的方法和装置安全系数高,中间数据不落地,降低了数据泄露的风险,特别地,本申请对存在继承关系的表也可以自动脱敏转换,全面保护数据安全;另外,具有高度扩展能力,具有一套统一的策略管理及算法管理框架,本申请的数据保护方法可以扩展到大数据领域,可以实现各种大数据数据库引擎敏感数据保护能力,包括主流的离线式、交互式、在线计算等sql类或者非sql类的大数据数据库引擎。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。在本申请实施例中还提供了一种数据保护装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。根据本申请的另一个实施例,还提供了一种数据保护装置,包括:接收模块,用于接收客户端发送的数据请求信息;数据保护模块,用于获取与该数据请求信息中携带的客户端的身份标识对应的预设策略,该数据库执行引擎依据该预设策略对所请求的数据执行数据保护操作,得到目标数据;可选地,该装置还可以包括发送模块,用于将该目标数据发送给该客户端。可选地,该数据保护模块还包括策略代理模块,用于获取该策略装置对应的数据保护策略,并为数据保护模块提供保护策略查询接口。可选地,该数据保护模块还用于依据预设策略对所请求的数据执行数据过滤操作和/或数据脱敏操作,其中,该预设策略包括过滤规则和/或脱敏规则。可选地,该数据保护模块对该所请求的数据执行数据过滤操作和/或数据脱敏操作包括以下之一:对所请求的数据执行数据过滤操作后,执行数据脱敏操作;在执行数据脱敏操作的过程中嵌入数据过滤操作流程;对所请求的数据执行数据过滤操作;对所请求的数据执行数据脱敏操作。可选地,在该数据库接收到结构化查询语言sql语句的情况下,该数据保护模块还用于依据该sql语句生成抽象语法树ast;深度遍历该ast,获取该sql语句最外层(或者,称为顶层)多个输出字段逐层依赖的表名及字段名;将该sql语句的最外层输出字段中,与该字段名对应的输出字段进行数据脱敏。本申请文件中的表名还是表的别名,字段名可以是字段的别名。可选地,获取最外层多个输出字段逐层依赖的表名及字段名之后,该装置还包括以下至少之一:禁止对该sql语句中关于中间计算的从句中的输出字段进行脱敏;禁止对该sql语句中where和/或limit条件语句中的输出字段进行脱敏。上述sql语句中关于中间计算的从句包括:groupby,orderby,sortby,distrbuteby,join,union,like,between,函数等从句。可选地,通过以下方式之一对该sql语句中关联派生表的select从句(该select从句包括createtableasselect或insertintoselect等从句)中的该派生表进行数据脱敏:获取该关联派生表的select从句查询的输出字段名所依赖的表及字段名对应的预设脱敏规则,将该预设脱敏规则作为该输出字段的脱敏规则,依据该脱敏规则对该派生表进行数据脱敏;数据库执行该关联派生表的select从句之后,该派生表为依据该预设脱敏规则进行数据脱敏后的派生表。可选地,在该数据库接收到结构化查询语言sql语句之后,确定当前sql语句未被改写过,深度遍历该ast树,获取以下信息至少之一:获得该sql语句的内部结构,生成sql语句查询的输出字段的依赖关系表,其中,该依赖关系表以树的形式记录了每个该输出字段逐层依赖的表及字段;获取该sql语句中select语句查询的最外层每个输出字段名,生成最外层select查询输出字段列表;获取该sql语句中所有新建表表名和插入表表名(可选地,可以是createtable或insert从句中的表)。可选地,在该select语句查询的最外层输出字段列表中的每个输出字段均执行以下步骤:从该最外层输出字段列表中按预设顺序选取第一输出字段;深度遍历该依赖关系表,获取该第一输出字段名对应的最深层依赖的表名及字段名;获取为该最深层依赖的表名及字段名预设的脱敏规则;确定该sql语句为select语句之后,依据该脱敏规则处理该第一输出字段对应的部分sql语句形成第一sql语句,使用该第一sql语句改写该第一输出字段对应的ast节点原有值。可选地,获取该最深层依赖的表及字段的脱敏规则,确定该sql语句为createtableasselect或insertintoselect语句之后,向该数据库的所有新建表和插入表中当前输出字段插入对应的该脱敏规则。可选地,对该最外层输出字段列表中的每个输出字段对应的ast节点值进行改写之后,遍历改写后的ast重新合成第二sql语句,确定该第二sql语句为最终执行的sql语句。可选地,遍历改写后的ast重新合成第二sql语句,确定该第二sql语句为最终执行的sql语句之后,该数据库依据该最终执行的sql语句,确定待执行的物理计划;执行该物理计划,并将处理结果反馈至该客户端。可选地,在该数据库接收到结构化查询语言sql语句的情况下,该数据库执行引擎对该所请求的数据执行该数据过滤操作包括:依据该sql语句生成抽象语法树ast;遍历该ast执行以下步骤:在该ast中的一个叶子节点为物理表的情况下,获取该物理表的表过滤规则;在该ast中,新增一个子查询节点,其中,该叶子节点的原父节点为该子查询节点的父节点,该叶子节点为该子查询节点的子节点;将该表过滤规则应用至该子查询节点;遍历该ast执行完上述步骤之后获取重构ast,依据该重构ast获取重构sql语句,执行该重构sql语句。可选地,在该数据库接收到非sql类访问请求的情况下,按照预设策略对所请求的数据进行数据保护,包括:数据库获取该非sql类访问请求所请求的数据;获取与该数据对应的预设策略,依据该预设策略对应该数据对应的数据集中的每一条数据依次执行以下至少之一:依据该预设策略包括的过滤规则对该条数据进行数据过滤;解析该条数据,逐个调用与各列对应的脱敏规则对各列进行数据脱敏,并将数据脱敏处理后的各列重新按照原始数据格式组装获取脱敏后的该条数据。可选地,该数据库连接有策略装置,其中,允许该策略装置为一个或多个数据库提供策略模型,该策略装置依据以下内容至少之一建立策略模型:身份标识,资源实体,保护规则,其中,该保护规则包括脱敏规则和/或过滤规则。可选地,该策略装置外接有api接口,用于接收用于配置策略模型的输入信号。可选地,该策略装置还用于存储脱敏规则模型,其中,该策略装置依据以下内容至少之一确定脱敏规则模型:数据脱敏算子,数据脱敏规则;其中,该数据脱敏算子包括实现数据脱敏的基础函数,该数据脱敏规则包括基于该数据脱敏算子进行数据脱敏的规则。需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。根据本申请的另一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述实施例任一项中所述的方法。本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1