本申请属于计算机
技术领域:
:,具体涉及一种用于vertica的脱敏方法及脱敏系统。
背景技术:
::vertica是基于无共享的mpp(massivelyparallelprocessor,大规模并行处理)架构,列式存储和计算的关系数据库。它基于x86服务器,拥有高扩展性。vertica集群中所有节点完全对等,集群中没有共享资源,也没有主节点,无单点故障和瓶颈,通过增加节点,可线性的扩展集群的计算能力和数据处理容量。与基于hadoop(hadoop是一个由apache基金会所开发的分布式系统基础架构)平台的数据库相比,vertica自身有很强的安全性,支持明文口令,md5散列口令,ldap,kerberos等多种认证方式,支持通过ssl增强安全性,只有通过认证的用户才允许访问vertica;同时,vertica提供完备的角色和授权机制,可以灵活控制用户的数据访问权限。但是,通过认证的用户,仍可能存在数据泄露、数据滥用等不安全数据操作,给拥有大量敏感数据的企业带来安全问题。技术实现要素:为至少在一定程度上克服相关技术中存在的问题,本申请提供了一种用于vertica的脱敏方法及脱敏系统。根据本申请实施例的第一方面,本申请提供了一种用于vertica的脱敏方法,其包括以下步骤:获取sql数据包;对获取的sql数据包进行脱敏化处理,得到新的sql数据包;获取新的sql数据包对应的请求结果。上述用于vertica的脱敏方法中,所述获取sql数据包时,对客户端与vertica数据库通信的数据包协议进行解析,得到客户端发送给vertica数据库的sql数据包。进一步地,所述对获取的sql语句进行脱敏化处理,得到新的sql数据包的具体过程为:从sql数据包中提取sql语句;对sql语句中需要脱敏的字段进行改造,得到改造后的sql语句;将改造后的sql语句封装成新的sql数据包。更进一步地,所述对sql语句中需要脱敏化处理的字段进行改造时,采用可逆脱敏算法或不可逆脱敏算法对需要脱敏化处理的字段进行处理。上述用于vertica的脱敏方法还包括以下步骤:在对获取的sql语句进行脱敏化处理之前,对脱敏算法进行配置;所述对脱敏算法进行配置的具体过程为:选择需要脱敏的数据对象,其中,数据对象为库、表或字段;选择应用脱敏规则的用户或角色;根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置。进一步地,上述用于vertica的脱敏方法中还包括对获取的新的sql数据包对应的请求结果进行敏感数据识别,如果识别出敏感数据,则触发对客户端请求的响应措施根据本申请实施例的第二方面,本申请提供了一种用于vertica的脱敏系统,其包括客户端、脱敏化处理模块和vertica数据库,所述脱敏化处理模块获取所述客户端与vertica数据库通信的数据包协议,并从数据包协议中解析得到sql数据包,从sql数据包中提取sql语句,对sql语句进行脱敏化处理,得到新的sql数据包,并将新的sql数据包发送给所述vertica数据库;所述vertica数据库根据新的sql数据包得到新的sql数据包对应的请求结果,并将请求结果透传给所述客户端。上述用于vertica的脱敏系统中,所述脱敏化处理模块包括解析模块、改造模块和封装模块;所述解析模块,用于对客户端与vertica数据库通信的数据包协议进行解析,得到sql数据包,并从sql数据包中提取出sql语句;所述改造模块,用于对提取出的sql语句进行脱敏化处理,得到改造后的sql语句;所述封装模块,用于对改造后的sql语句进行封装,得到新的sql数据包。上述用于vertica的脱敏系统中,还包括脱敏算法配置模块,所述脱敏算法配置模块包括数据对象选择模块、用户或角色选择模块和脱敏算法选择模块以及参数配置模块;所述数据对象选择模块,用于选择需要脱敏的数据对象,数据对象为库、表或字段;所述用户或角色选择模块,用于选择应用脱敏规则的用户或角色;所述脱敏算法选择模块,用于根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置,所述数据脱敏算法为可逆脱敏算法和不可逆脱敏算法;所述参数配置模块,用于根据需要对选择的数据脱敏算法的参数进行配置。上述用于vertica的脱敏系统中,还包括敏感数据识别模块,所述敏感数据识别模块与所述客户端和vertica数据库连接;所述vertica数据库将新的sql数据包对应的请求结果保存为临时文件,所述敏感数据识别模块基于关键字或正则表达式对临时文件中是否包含敏感数据进行识别,如果识别出敏感数据,则敏感数据识别模块触发对客户端请求的响应措施。根据本申请的上述具体实施方式可知,至少具有以下有益效果:本申请通过对获取的sql数据包进行脱敏化处理,得到新的sql数据包;由vertica数据库执行新的sql数据包,得到新的sql数据包对应的请求结果;本申请通过改造sql语句的方式能够将原始数据中的敏感信息移除,保留原始数据的数据格式和部分属性,降低敏感数据的安全等级,并确保脱敏后的数据仍可进行分析、挖掘等应用。本申请还能够显著地降低敏感数据泄露的风险。应了解的是,上述一般描述及以下具体实施方式仅为示例性及阐释性的,其并不能限制本申请所欲主张的范围。附图说明下面的所附附图是本申请的说明书的一部分,其示出了本申请的实施例,所附附图与说明书的描述一起用来说明本申请的原理。图1为本申请具体实施方式提供的一种用于vertica的脱敏方法的流程图。图2为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之一。图3为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之二。图4为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之三。附图标记说明:1、客户端;2、脱敏化处理模块;3、vertica数据库;4、脱敏算法配置模块;5、敏感数据识别模块。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚明白,下面将以附图及详细叙述清楚说明本申请所揭示内容的精神,任何所属
技术领域:
:技术人员在了解本申请内容的实施例后,当可由本申请内容所教示的技术,加以改变及修饰,其并不脱离本申请内容的精神与范围。本申请的示意性实施例及其说明用于解释本申请,但并不作为对本申请的限定。另外,在附图及实施方式中所使用相同或类似标号的元件/构件是用来代表相同或类似部分。关于本文中所使用的“第一”、“第二”、…等,并非特别指称次序或顺位的意思,也非用以限定本申请,其仅为了区别以相同技术用语描述的元件或操作。关于本文中所使用的方向用语,例如:上、下、左、右、前或后等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本创作。关于本文中所使用的“包含”、“包括”、“具有”、“含有”等等,均为开放性的用语,即意指包含但不限于。关于本文中所使用的“及/或”,包括所述事物的任一或全部组合。关于本文中的“多个”包括“两个”及“两个以上”;关于本文中的“多组”包括“两组”及“两组以上”。某些用以描述本申请的用词将于下或在此说明书的别处讨论,以提供本领域技术人员在有关本申请的描述上额外的引导。图1为本申请具体实施方式提供的一种用于vertica的脱敏方法的流程图。如图1所示,本申请提供的用于vertica的脱敏方法包括以下步骤:s1、获取sql数据包。s2、对获取的sql数据包进行脱敏化处理,得到新的sql数据包。s3、获取新的sql数据包对应的请求结果。上述步骤s1中,可以从智能手机、电脑等客户端获取sql数据包,具体地,可以对客户端与vertica数据库通信的数据包协议进行解析,得到客户端发送给vertica数据库的sql数据包。上述步骤s2中,对获取的sql语句进行脱敏化处理,得到新的sql数据包的具体过程为:s21、从sql数据包中提取sql语句。s22、对sql语句中需要脱敏的字段进行改造,得到改造后的sql语句。对sql语句中需要脱敏化处理的字段进行改造时,采用脱敏算法对需要脱敏化处理的字段进行处理。例如,可以是用*、null等字符串替换sql语句中需要脱敏化处理的字段,还可以是对sql语句中需要脱敏化处理的字段套上函数的字符串。例如,一条sql语句为:selectagefromtable1,age是这条sql语句中需要脱敏化处理的字段,可以用age 1替换字段age,则改造后的sql语句为:selectage 1fromtable1;也可以对字段age套上函数fun(age),其中,fun(age)=age 1,则该改造后的sql语句为:selectfun(age)fromtable1。s23、将改造后的sql语句封装成新的sql数据包。本申请提供的用于vertica的脱敏方法还包括以下步骤:在对获取的sql语句进行脱敏化处理之前,对脱敏算法进行配置。其中,对脱敏算法进行配置的具体过程为:选择需要脱敏的数据对象,数据对象可以为库、表或字段等。可以通过数据库接口获取数据库中的库、表、列元数据,供用户选择其需要配置脱敏的具体字段列。选择应用脱敏规则的用户或角色。不同的用户或角色脱敏可应用不同的脱敏规则,从系统统一维护的所有用户或角色中选择需要配置其访问平台时脱敏的用户或角色。根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置。系统内置多种数据类型的多种可逆脱敏算法和不可逆脱敏算法。有些脱敏算法如数据截断,可指定截断开始、结束的位置作为参数配置项,需要额外配置。使用可逆脱敏算法进行脱敏,脱敏后的数据可以通过一定的方式恢复成原来的、包含敏感信息的数据。可逆脱敏方法可以为日期偏移取整、加密、重排、替换、fpe、轮询等。下面对可逆脱敏算法的各个具体算法进行举例说明。日期偏移取整:按照一定粒度对时间进行向上或向下偏移取整,可在保证时间数据一定分布特征的情况下隐藏原始时间,也即舍弃精度来保证原始数据的安全性。例如:1)将时间2016030101:01:09按照5秒钟粒度向下取整得到2016030101:01:05。2)将时长60:24按照1分钟粒度向下取整得到60:00。一般来说,这种方法可以保护数据的时间分布密度。加密:对脱敏数据进行加密处理,使外部用户只能看到无意义的加密后数据,同时在特定场景下,可以提供解密能力,使具有密钥的相关方可以获得原始数据,比如使用非对称加密技术,用数据请求方的公钥来加密,请求方获得数据之后用私钥来解密还原被脱敏的数据。例如:将编号12345加密为abcde或23456等。其安全程度取决于采用哪种加密算法,一般根据实际情况而定。重排:将原始数据按照特定的规则进行重新排列,对于跨行数据,采用随机互换来打破其与本行其他数据的关联关系,从而实现脱敏。例如:序号12345重排为54321,按照一定的顺序进行打乱,很像“替换”,可以在需要时方便还原信息,但易于破解。重排可以在相当大范围内保证部分业务数据信息(如有效数据范围、数据统计特征等),使脱敏后数据看起来跟原始数据更一致,与此同时也牺牲了一定的安全性。一般重排方法用于大数据集合、且需要保留待脱敏数据特定特征的场景;对于小数据集,重排形成的目标数据有可能通过其他信息被还原,在使用的时候需要特别慎重。替换:按照特定规则,使用伪装数据对原始数据进行替换。一般替换用的数据都有不可逆性,以保证安全。具体操作上有以下几种:常数替换(置常数):所有敏感数据都替换为唯一的常数值,具有不可逆性。例如:将500替换为0,将635替换为0。查表替换:从中间表中随机或按照特定算法选择数据进行替代。参数化替换:以敏感数据作为输入,通过特定函数形成新的替换数据。具体算法的选择取决于效率、业务需求等因素间的平衡。替换方法示例:1)对数值和日期类型的原始数据,通过随机函数进行可控的调整。例如:对于数值类型数据随机增减20%,对于日期数据,随机增减200天等,以便在保持原始数据相关统计特征的同时,完成对具体数值的伪装。2)统一将女性用户名替换为f,将男性用户名替换为m。fpe:一种特殊的可逆脱敏方法。该方法通过加密密钥和算法对原始数据进行加密,密文格式与原始数据在逻辑规则上一致,如都为日期、卡号、结构化值等;通过解密密钥可以恢复原始数据。轮询:将有限的数据排成一个循环队列,将原始数据的指针向前或向后移动n位得到新的数据。例如:将姓名分成姓和名两部分分别处理,姓可以使用百家姓的轮询算法。使用不可逆脱敏算法进行数据脱敏,脱敏后的数据中被脱敏的部分使用任何方式都不能被恢复出。不可逆脱敏算法可以为数据截断、规整、掩码、重写、均化、散列、限制返回、空值插入或删除、反推断或基于其他参考信息进行屏蔽。下面对不可逆脱敏算法的各个具体算法进行举例说明。数据截断:舍弃必要信息来保证数据的模糊性,仅保留部分关键信息。例如:1)将手机号码13500010001截断为135。2)把身份证号330184198501184115截断为198501184115。规整:将数据按照大小规整到预定义的多个档位。例如:1)将客户资产按照规模分为高、中、低三个级别,将客户资产数据用这三个级别代替。2)将扣费额按照金额多少分为高、中、低三个级别。3)将流量按照使用量的多少分为高、中、低三个级别。掩码:指保留部分信息,对敏感数据的部分内容用通用字符(如“x、*”等)进行统一替换,从而使得敏感数据保持部分内容公开,但对信息持有者来说易于辨别。这种方法可以在很大程度上脱敏的同时,保证信息的长度不变性,即掩码后的数据长度与原始数据一样,是一种广泛使用的脱敏方法。例如:1)将手机号码13500010001经过掩码得到135****0001。2)把身份证号330184198501184115经过掩码得到为330184000000004115。重写:参考原始数据的特征,重新生成数据。例如:1)对员工工资,可使用在一定范围内随机生成的方式重新构造数据。2)对手机号码,可在一定范围内按照规则随机生成的方式构造数据。重写与整体替换较为类似,但替换后的数据与原始数据通常存在特定规则的映射关系,而重写生成的数据与原始数据则一般不具有映射关系。均化:针对数值型的敏感数据,在保证脱敏后数据集总值或平均值与原始数据集相同的情况下,改变数值的原始值。具体可这样操作:首先计算数值型数据的均值,然后使脱敏后的值在均值附近随机分布,但保持数据的总和不变。这种方法通常用于产品成本表、工资表等场合。例如:对通信时长、用户使用的流量、用户发送的短信数量、通话次数等采用均化的脱敏方法。散列(hash):对原始数据通过散列算法取散列值,使用散列值来代替原始数据。目前应用较多的散列算法是sha-1和sha-256等。例如:使用散列算法,将客户的密码“123456”用其散列值“321654”来代替。对于原文空间有限的散列,还要加入随机因子。限制返回:仅仅返回可用数据集合中一定数量的数据,并且只有在拿到所有数据后才具有意义。例如:对于客户地址数据,可在脱敏时仅返回十六字节数据,如将“杭州市余杭区直街旁功巷1幢301室”返回为“杭州市余杭区直街”。空值插入或删除:指直接删除敏感数据或将其置为null值。在条件允许的情况下,这种方法最直接。反推断:查找可能由某些字段推断出另一敏感字段的映射,并对这些字段进行脱敏。例如:从身份证号可推断出出生日期、性别、常住户口所在地区。基于其他参考信息进行屏蔽:根据预定义规则仅改变部分回应内容。例如:屏蔽vip客户姓名,但显示其他客户等。本申请提供的用于vertica的脱敏方法还包括以下步骤:对获取的新的sql数据包对应的请求结果进行敏感数据识别,如果识别出敏感数据,则触发对客户端请求的响应措施。例如,阻断vertica数据库向客户端发送请求结果,或者发送告警等。采用本申请提供的用于vertica的脱敏方法,能够将原始数据中的敏感信息移除,保留原始数据的数据格式和部分属性,降低敏感数据的安全等级,并确保脱敏后的数据仍可进行分析、挖掘等应用。图2为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之一。如图2所示,基于本申请提供的用于vertica的脱敏方法,本申请提供的一种用于vertica的脱敏系统包括客户端1、脱敏化处理模块2和vertica数据库3,其中,脱敏化处理模块2获取客户端1与vertica数据库3通信的数据包协议,并从数据包协议中解析得到sql数据包,从sql数据包中提取sql语句,对sql语句进行脱敏化处理,得到新的sql数据包,并将新的sql数据包发送给vertica数据库3。vertica数据库3根据新的sql数据包得到新的sql数据包对应的请求结果,并将请求结果透传给客户端1。上述实施例中,脱敏化处理模块2包括解析模块、改造模块和封装模块。其中,解析模块用于对客户端1与vertica数据库3通信的数据包协议进行解析,得到sql数据包,并从sql数据包中提取出sql语句。改造模块用于对提取出的sql语句进行脱敏化处理,得到改造后的sql语句。封装模块用于对改造后的sql语句进行封装,得到新的sql数据包。图3为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之二。如图3所示,为便于对脱敏化处理模块2中设置的脱敏算法进行维护,本申请实施例提供的用于vertica的脱敏系统中还设置有脱敏算法配置模块4。其中,脱敏算法配置模块4与脱敏化处理模块2连接,用于选择需要脱敏的数据对象、选择应用脱敏规则的用户或角色并选择所需的数据脱敏算法。脱敏算法配置模块4包括数据对象选择模块、用户或角色选择模块和脱敏算法选择模块以及参数配置模块。其中,数据对象选择模块,用于选择需要脱敏的数据对象,数据对象可以为库、表或字段等。可以通过数据库接口获取数据库中的库、表、列元数据,供用户选择其需要配置脱敏的具体字段列。用户或角色选择模块,用于选择应用脱敏规则的用户或角色。不同的用户或角色脱敏可应用不同的脱敏规则,从系统统一维护的所有用户或角色中选择需要配置其访问平台时脱敏的用户或角色。脱敏算法选择模块,用于根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置。其中,数据脱敏算法可以为可逆脱敏算法和不可逆脱敏算法。参数配置模块,用于根据需要对选择的数据脱敏算法的参数进行配置。图4为本申请具体实施方式提供的一种用于vertica的脱敏系统的结构框图之三。如图4所示,本申请实施例提供的用于vertica的脱敏系统中还设置有敏感数据识别模块5。其中,敏感数据识别模块5与客户端1和vertica数据库3连接。vertica数据库3将新的sql数据包对应的请求结果保存为临时文件,敏感数据识别模块5基于关键字或正则表达式对临时文件中是否包含敏感数据进行识别,如果识别出敏感数据,则敏感数据识别模块5触发对客户端1请求的响应措施。例如,阻断vertica数据库3向客户端1发送请求结果,或者发送告警等。其中,关键字可以为预置的金融信息应收账款、财务收入、个人工作信息、工作单位、项目经历等。正则表达式可以为对身份证、电话号码、邮箱、银行卡号或地址等的正则匹配。上述的本申请实施例可在各种硬件、软件编码或两者组合中进行实施。例如,本申请的实施例也可为在处理器中执行上述方法的程序代码。本申请也可涉及计算机处理器、数字信号处理器或微处理器或执行的多种功能。可根据本申请配置上述处理器执行特定任务,其通过执行定义了本申请揭示的特定方法的机器可读软件代码或固件代码来完成。可将软件代码或固件代码发展为不同的程序语言与不同的格式或形式。也可为不同的目标平台编译软件代码。然而,根据本申请执行任务的软件代码与其他类型配置代码的不同代码样式、类型与语言不脱离本申请的精神与范围。以上所述仅为本申请示意性的具体实施方式,在不脱离本申请的构思和原则的前提下,任何本领域的技术人员所做出的等同变化与修改,均应属于本申请保护的范围。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种用于vertica的脱敏方法,其特征在于,包括以下步骤:
获取sql数据包;
对获取的sql数据包进行脱敏化处理,得到新的sql数据包;
获取新的sql数据包对应的请求结果。
2.根据权利要求1所述的用于vertica的脱敏方法,其特征在于,所述获取sql数据包时,对客户端与vertica数据库通信的数据包协议进行解析,得到客户端发送给vertica数据库的sql数据包。
3.根据权利要求2所述的用于vertica的脱敏方法,其特征在于,所述对获取的sql语句进行脱敏化处理,得到新的sql数据包的具体过程为:
从sql数据包中提取sql语句;
对sql语句中需要脱敏的字段进行改造,得到改造后的sql语句;
将改造后的sql语句封装成新的sql数据包。
4.根据权利要求3所述的用于vertica的脱敏方法,其特征在于,所述对sql语句中需要脱敏化处理的字段进行改造时,采用可逆脱敏算法或不可逆脱敏算法对需要脱敏化处理的字段进行处理。
5.根据权利要求4所述的用于vertica的脱敏方法,其特征在于,还包括以下步骤:在对获取的sql语句进行脱敏化处理之前,对脱敏算法进行配置;
所述对脱敏算法进行配置的具体过程为:
选择需要脱敏的数据对象,其中,数据对象为库、表或字段;
选择应用脱敏规则的用户或角色;
根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置。
6.根据权利要求1~5任一项所述的用于vertica的脱敏方法,其特征在于,还包括对获取的新的sql数据包对应的请求结果进行敏感数据识别,如果识别出敏感数据,则触发对客户端请求的响应措施。
7.一种用于vertica的脱敏系统,其特征在于,包括客户端、脱敏化处理模块和vertica数据库,所述脱敏化处理模块获取所述客户端与vertica数据库通信的数据包协议,并从数据包协议中解析得到sql数据包,从sql数据包中提取sql语句,对sql语句进行脱敏化处理,得到新的sql数据包,并将新的sql数据包发送给所述vertica数据库;
所述vertica数据库根据新的sql数据包得到新的sql数据包对应的请求结果,并将请求结果透传给所述客户端。
8.根据权利要求7所述的用于vertica的脱敏系统,其特征在于,所述脱敏化处理模块包括解析模块、改造模块和封装模块;
所述解析模块,用于对客户端与vertica数据库通信的数据包协议进行解析,得到sql数据包,并从sql数据包中提取出sql语句;
所述改造模块,用于对提取出的sql语句进行脱敏化处理,得到改造后的sql语句;
所述封装模块,用于对改造后的sql语句进行封装,得到新的sql数据包。
9.根据权利要求7所述的用于vertica的脱敏系统,其特征在于,还包括脱敏算法配置模块,所述脱敏算法配置模块包括数据对象选择模块、用户或角色选择模块和脱敏算法选择模块以及参数配置模块;
所述数据对象选择模块,用于选择需要脱敏的数据对象,数据对象为库、表或字段;
所述用户或角色选择模块,用于选择应用脱敏规则的用户或角色;
所述脱敏算法选择模块,用于根据业务场景的应用需求选择数据脱敏算法并对数据脱敏算法所需的参数进行配置,所述数据脱敏算法为可逆脱敏算法和不可逆脱敏算法;
所述参数配置模块,用于根据需要对选择的数据脱敏算法的参数进行配置。
10.根据权利要求7所述的用于vertica的脱敏系统,其特征在于,还包括敏感数据识别模块,所述敏感数据识别模块与所述客户端和vertica数据库连接;
所述vertica数据库将新的sql数据包对应的请求结果保存为临时文件,所述敏感数据识别模块基于关键字或正则表达式对临时文件中是否包含敏感数据进行识别,如果识别出敏感数据,则敏感数据识别模块触发对客户端请求的响应措施。
技术总结本申请提供了一种用于Vertica的脱敏方法及脱敏系统,用于Vertica的脱敏方法包括以下步骤:获取SQL数据包;对获取的SQL数据包进行脱敏化处理,得到新的SQL数据包;获取新的SQL数据包对应的请求结果。本申请通过改造SQL语句的方式得到脱敏化处理后的SQL数据包,能够将原始数据中的敏感信息移除,保留原始数据的数据格式和部分属性,降低敏感数据的安全等级,并确保脱敏后的数据仍可进行分析、挖掘等应用。本申请还能够显著地降低敏感数据泄露的风险。
技术研发人员:黄玉龙;吴芳;陈锦;王禹
受保护的技术使用者:北京启明星辰信息安全技术有限公司;中国信息安全测评中心
技术研发日:2020.01.07
技术公布日:2020.06.05