CN106484378B - 一种无落地的数据处理方法及装置 - Google Patents

一种无落地的数据处理方法及装置 Download PDF

Info

Publication number
CN106484378B
CN106484378B CN201510542520.XA CN201510542520A CN106484378B CN 106484378 B CN106484378 B CN 106484378B CN 201510542520 A CN201510542520 A CN 201510542520A CN 106484378 B CN106484378 B CN 106484378B
Authority
CN
China
Prior art keywords
query statement
data
encryption function
field
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510542520.XA
Other languages
English (en)
Other versions
CN106484378A (zh
Inventor
吴龙飞
林力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Damo Institute Hangzhou Technology Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510542520.XA priority Critical patent/CN106484378B/zh
Publication of CN106484378A publication Critical patent/CN106484378A/zh
Application granted granted Critical
Publication of CN106484378B publication Critical patent/CN106484378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了无落地的数据处理方法及装置,其中,方法包括:接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;根据所述第一查询语句和所述第二查询语句生成第三查询语句;执行所述第三查询语句得到查询结果。本发明实施例通过对用户输入的第一查询语句进行实时改动,使得改动后的查询语句具备对特定字段进行加密的功能,这种实时改动查询语句的方式,能够在防止数据泄露的同时避免数据滞后,能够提高用户体验。

Description

一种无落地的数据处理方法及装置
技术领域
本申请涉及计算机应用领域,特别是涉及无落地的数据处理方法及装置。
背景技术
数据已经成为信息时代的一种重要资源,为了管理和利用这种资源,企业都会采用数据库存储数据,如关系型数据库、分布式数据库等。在对数据的管理中,最重要的一个功能是数据共享,而在数据共享过程中往往会涉及到一些敏感数据(如涉及到隐私的数据),这些敏感数据并不想随意的被别人查看,因此,需要将这些敏感数据进行加密,以防止别人随意查看。
目前常采用的加密方案是一种落地加密方案,该落地加密方案具体实现过程是,数据拥有者将线上的数据库存储的数据表中的敏感数据进行加密,将加密后的数据表存储在线下的数据库中,这样,用户访问数据表时,实际上访问的是线下数据库中存储的加密后的数据表。加密过程需要将数据从线上数据库导入到线下数据库,需要较长的数据导入时间。当线上数据库中的数据表的数据发生变化或表结构发生变化时,线下数据库没有做到及时更新,导致用户无法及时访问到最新的数据表,数据具有滞后性。
另外,不同的数据拥有者往往很难得知其他数据拥有者采用的加密方案,原始数据表之间的关联性在加密之后会被丢失,进而影响用户查询关联数据表的相关数据。
发明内容
为了解决上述技术问题,本发明实施例提供了无落地的数据处理方法及装置,通过实时对查询语句的改动方式,达到在防止数据泄露的同时避免数据滞后的目的,进而以提高用户体验。
本发明实施例公开了如下技术方案:
一种无落地的数据处理方法,所述方法包括:
接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
根据所述第一查询语句和所述第二查询语句生成第三查询语句;
执行所述第三查询语句得到查询结果。
可选的,采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,包括:
从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,包括:
向用户展示与所述第一查询语句中的数据表名对应的加密函数;
响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,根据所述第一查询语句和所述第二查询语句生成第三查询语句,包括:
解析所述第一查询语句得到对应的语法树;
根据所述语法树的结构确定数据表名的位置,在该位置之前插入与该数据表名对应的第二查询语句得到第三查询语句。
可选的,所述加密函数是预先设定的用户自定义函数。
可选的,当所述第一查询语句用于查询具有关联关系的数据表中字段对应的数据时,
则在执行所述第三查询语句得到查询结果之前,所述方法还包括:
根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性;
则执行所述第三查询语句得到查询结果,具体为:
执行改动后的第三查询语句得到查询结果。
可选的,根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性,包括:
当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数;或者,
当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
可选的,根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性,包括:
当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
一种无落地的数据处理装置,所述装置包括:
接收单元,用于接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
加密单元,用于采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
生成单元,用于根据所述第一查询语句和所述第二查询语句生成第三查询语句;
查询单元,用于执行所述第三查询语句得到查询结果。
可选的,所述加密单元,包括:
获取子单元,用于从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
第一加密子单元,用于根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,所述加密单元,包括:
展示子单元,用于向用户展示与所述第一查询语句中的数据表名对应的加密函数;
第二加密子单元,用于响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,所述生成单元,包括:
解析子单元,用于解析所述第一查询语句得到对应的语法树;
生成子单元,用于根据所述语法树的结构确定数据表名的位置,在该位置之前插入与该数据表名对应的第二查询语句得到第三查询语句。
可选的,当所述第一查询语句用于查询具有关联关系的数据表中字段对应的数据时,
所述装置还包括:
改动单元,用于根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性;
则所述查询单元,具体用于:
执行改动后的第三查询语句得到查询结果。
可选的,所述改动单元,包括:
改动子单元一,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数;或者,
改动子单元二,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
可选的,所述改动单元,包括:
改动子单元三,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
本发明提出的技术方案抛弃了现有技术的数据落地处理方式,而提出无落地的数据处理方案,首先接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;然后,采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;再根据所述第一查询语句和所述第二查询语句生成第三查询语句;最后,执行所述第三查询语句得到查询结果。本发明的技术方案无需预先下载数据、加密数据、保存数据,而是根据用户实际查询需求,实时地对查询语句进行改动,使得改动的查询语句能够对数据表中特定字段的数据进行加密,这样就在执行改动后的查询语句得到的查询结果中关于该特定字段的数据就是加密数据,则该特定字段的原始数据对用户而言不可见的,因此本发明通过这种实时对查询语句的改动方式,达到在防止数据泄露的同时避免数据滞后的目的,进而以提高用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种无落地的数据处理方法的实施例1的流程图;
图2是本发明提供的一种无落地的数据处理方法的实施例2的流程图;
图3是本发明提供的一种无落地的数据处理装置的实施例1的结构图;
图4是本发明提供的一种无落地的数据处理装置的实施例2的结构图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种无落地的数据处理方法及装置,适用于查询数据库的环境,数据库的类型有很多种,如关系型数据库、分布式数据库等,本发明实施例对应用环境中数据库的类型并没有限制,只要这些数据库支持SQL关系查询语言即可,一般的应用场景是,用户访问数据库查询数据时,通过SQL的查询语句来查询感兴趣的数据,查询语句中携带有需要查询的字段,数据表名等信息,系统会根据用户输入的查询语句为用户反馈相关的查询结果。本发明实施例就是基于这种应用环境,在用户访问数据库查询数据时,既能够做到防止敏感数据泄密,又能够避免数据滞后,另外,在用户访问多数据表的情况下,还能够保证数据关联性,从而提升用户体验。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。
方法实施例
请参阅图1,图1是本发明提供的一种无落地的数据处理方法的实施例1的流程图,如图1所示,该方法可以包括以下步骤:
步骤101:接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据。
用户可以使用SQL语句查询数据库中的数据,数据库中的数据以数据表的形式存储,数据表名与数据表之间具有一一对应关系,一个数据表只有一个数据表名。
用户一次可以对一个数据表的一个字段或多个字段进行查询,也可以对多个不关联的数据表的一个字段或多个字段进行查询,还可以对具有关联关系的数据表的一个字段或多个字段进行查询,本发明技术方案可以适用于任何一种场景。
步骤102:采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密。
在具体实现时,步骤102可以有以下几种实现方式,下面对这几种实现方式分别解释说明。
第一种实现方式,包括:
从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
第一种实现方式的本质就是按照系统默认的加密函数,根据第一查询语句中涉及到的数据表名和与该数据表名对应的加密函数生成对应的第二查询语句。
这里需要说明的是,一个数据表可能涉及多个字段,而一个加密函数只用于对数据表中一个特定字段进行加密;因此,针对一个数据表可以预先设置一个加密函数,也可以预先设置多个加密函数,不同的加密函数是针对不同的字段进行加密,为了准确定位数据表与加密函数之间的对应关系,则建立数据表名与加密函数之间的对应关系,则数据表名与加密函数之间可以是一对一的对应关系,也可以是一对多的对应关系。
下面通过具体示例来对第一种实现方式进行解释说明。
示例1,假设,用户输入的第一查询语句如下:
select
user_id,
user_name,
user_age,
from
user_table;
这里的第一查询语句用于从数据表user_table中查询用户user_id、user_name、user_age三个字段对应的数据;其中,数据表名为user_table。
假设,在预先设置的加密函数库中,与数据表名user_table对应的加密函数共有两个,分别是udf1(user_name)和udf2(user_age),则根据获取的加密函数和数据表名生成第二查询语句,第二查询语句如下:
select
udf1(user_name)as user_name,
udf2(user_age)as user_age,
from
user_table;
这里的第二查询语句用于从数据表user_table查询user_name和user_age这两个字段的数据,并采用加密函数udf1和udf2分别对这两个字段的数据进行加密。
第二种实现方式,包括:
向用户展示与所述第一查询语句中的数据表名对应的加密函数;
响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
第二种实现方式的本质是向用户提供一种选择性加密的服务,由用户决定对哪些字段进行加密,这样既能够起到加密作用,又能够满足用户仅查询部分数据的需求。另外,这样也使得用户操作更透明,能够提高用户体验。第二种实现方式主要是考虑到,用户有时仅需要查询部分信息,而并不需要完整的信息,如用户查询数据表中手机号时,可能只需要查询前三位和后四位信息,而并不需要查询中间的四位信息,此时,用户就可以选择一个加密函数对中间四位信息的特定字段进行加密处理。
第二种方式的实现过程可以是,在用户使用的客户端上向用户展示第一查询语句中的数据表名对应的加密函数;一个数据表名可以对应一个或多个加密函数,加密函数用于对数据表中特定字段进行加密处理;这些加密函数是针对涉及敏感数据的字段进行加密,以达到脱敏的目的。而哪些字段的数据属于敏感数据,则主要取决于数据拥有者对数据敏感与否的定义;在实现过程中,为了便于灵活设置加密函数,可以采用用户自定义函数(UDF,User Defined Features),其设置灵活性较高。在实际应用中,可以根据数据拥有者的实际需求来预先设置加密函数,例如,手机号、姓名、身份证号、邮编、地址、生日会涉及到个人隐私的数据,这些数据通常情况下被认定为敏感数据,若为了防止这些敏感数据泄露,可以针对这些数据对应的字段,或者这些数据中特定范围数值对应的字段,预先设置对应的UDF,那么用户在查看相关数据时,就会选择对应的UDF对这些敏感数据进行加密处理,从而达到防止泄露的目的。
如果用户输入的第一查询语句仅包含一个数据表名,则通过客户端向用户展示与该数据表名对应的加密函数;如果用户输入的第一查询语句包含多个数据表名时,对应的,就需要通过客户端向用户展示与每个数据表名各自对应的加密函数。
考虑到用户在实际应用过程中,可能对加密函数没有特别需求,则在向用户展示与数据表名对应的加密函数,还可以突出显示默认的加密函数,如果用户没有特别的需求并未作出对应的选择,可以直接按照默认加密函数进行处理。
步骤103:根据所述第一查询语句和所述第二查询语句生成第三查询语句。
结合查询语句的语法结构,步骤103可以按照如下方式实现:
在所述第一查询语句中的数据表名之前,插入与该数据表名对应的第二查询语句以生成第三查询语句。
为了快速、准确地实现插入操作以生成第三查询语句,则进一步地可以按照如下方式实现:
首先,解析所述第一查询语句得到对应的语法树;然后,根据所述语法树的结构确定数据表名的位置,在该位置之前插入与该数据表名对应的第二查询语句得到第三查询语句。当然,除了利用语法树的方式之外,也可以利用其它方式来实现插入操作。如,采用正则表达式来定位数据表名,进而实现插入操作。
下面通过具体示例对第三查询语句的生成过程进行解释说明。
仍旧以上述示例1的场景为例,结合上述示例1中的第一查询语句和第二查询语句,按照步骤103的方式生成的第三查询语句如下:
在上述第三查询语句中的黑色加粗部分就是第二查询语句,可以看出,在第一查询语句的数据表名“user_table”之前插入对应的第二查询语句,其本质就是采用第二查询语句替换第一查询语句中对应的数据表名,并将原来的数据表名作为该第二查询语句的别名,以保证查询语句语法正确性。
步骤104:执行所述第三查询语句得到查询结果。
如上述第三查询语句所示,则执行完第三查询语句得到查询结果中关于数据表“user_table”中的字段“user_name”和字段“user_age”对应的数据是加密的,这两个字段对应的原始数据对于用户而言是不可见的。
从这个实施例可以看出,本发明提供的技术方案在针对用户的查询需求时,无需预先下载数据、加密数据、保存数据,而是用户输入的查询语句进行实时改动,增加加密部分以达到对特定字段加密的目的,进而执行改动后的查询语句,就直接查询到相应的加密数据,在防止数据泄露的同时避免数据滞后,能够提高用户体验。
在上述实施例的基础上,发明人还考虑到用户的一个实际应用需求,即,用户可能需要一次查询具有关联关系的数据表,在这种场景下,就会出现一个关联字段的关联性问题,下面通过具体示例先对这种场景以及关联性问题进行解释说明。
举个例子,示例2,假设数据库中储存有两张数据表,分别是用户信息表user_table和用户交易表trade_table,两张表的具体情况如下:
用户信息表user_table
字段名称 字段含义
user_id 用户标识
user_name 用户姓名
user_age 用户年龄
user_idcard 用户身份证号
用户交易表trade_table
字段名称 字段含义
user_id 用户标识
trade_time 交易时间
trade_amount 交易金额
address 收货地址
Trade_items 交易商品
如果用户需要查询用户信息表中的用户名称以及用户交易表中的交易金额和交易时间,这种情况就是存在数据表关联的情况。则用户输入的第一查询语句就包含具有关联关系的数据表名。为了便于解释,这里仅是以两个数据表为例来进行说明,在实际应用中还可能是多个数据表相关联,其原理相同,此处不赘述。
以上述两个数据表为例,假设用户输入的第一查询语句具体如下:
select
user_table.user_id,
user_table.user_name,
trade_table.trade_amount,
trade_table.trade_time,
from
user_table,
trade_table
where
user_table.user_id=trade_table.user_id
在这个第一查询语句中,user_table.user_id表示数据表user-table中的“user-id”字段;user_table.user_name表示数据表user-table中的“user_name”字段;trade_table.trade_amount表示数据表trade_table中的“trade_amount”字段;trade_table.trade_time表示数据表trade_table中的“trade_time”字段;其中,where字符之后的“user_table.user_id=trade_table.user_id”表示关联条件,关联条件中涉及到数据表中的相同字段为关联字段,即,在这个第一查询语句中“user_id”为关联字段。
若采用上述实施例的方法,则先接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;然后采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;再根据所述第一查询语句和所述第二查询语句生成第三查询语句。
假设,采用与所述第一查询语句中的数据表名user_table对应的加密函数加密函数udf1(user_id)和udf2(user_name)生成与用户信息表user_table对应的第二查询语句;采用与所述第一查询语句中的数据表名trade_table对应的加密函数有udf3(user_id)、udf4(trade_amount)和udf5(trade_time)生成与用户交易表trade_table对应的第二查询语句。
则与用户信息表user_table对应的第二查询语句如下:
select
udf1(user_id)as user_id,
udf2(user_name)as user_name,
from
user_table;
则与用户信息表trade_table对应的第二查询语句如下:
select
udf3(user_id)as user_id,
udf4(trade_amount)as trade_amount,
udf5(trade_time)as trade_time,
from
trade_table;
由上述示例可以看出,针对第一查询语句中的每个数据表均生成一个第二查询语句。这里需要说明的是,在实际应用中,有些数据表并不涉及到敏感数据,无需脱敏处理,也就没有对应的加密函数,也就不存在对应的第二查询语句。
在得到数据表名对应的第二查询语句之后,结合第一查询语句和第二查询语句以生成第三查询语句,第三查询语句如下:
在上述第三查询语句中的黑色加粗部分就是第二查询语句,可以看出,在第一查询语句的数据表名“user_table”之前插入对应的第二查询语句,其本质就是采用第二查询语句替换第一查询语句中对应的数据表名,并将原来的数据表名作为该第二查询语句的别名,以保证查询语句语法正确性。
从上述示例可以看出:数据表user_table和数据表trade_table以字段user_id作为关联字段,而在第三查询语句中两个子查询中分别使用了加密函数udf1和加密函数udf3对字段user_id进行了加密处理,由于udf1和udf3的加密结果不一致,则关联条件就会失败,从而导致查询结果为空。因此,在多数据表关联查询的情况下,还需要进一步考虑关联性的问题。
发明人针对这一特殊情况,提出了对应的解决方案。下面通过实施例来进行解释说明。
请参阅图2,图2是本发明提供的一种无落地的数据处理方法的实施例2的流程图,如图2所示,该方法可以包括以下步骤:
步骤201:接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据。
步骤202:采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密。
步骤203:根据所述第一查询语句和所述第二查询语句生成第三查询语句。
步骤204:根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性。
步骤205:执行改动后的第三查询语句得到查询结果。
上述步骤201-203与上文方法实施例1描述的步骤101-103相同,可以参照上文描述,此处不再赘述。下面重点对步骤204进行解释说明。
下面先对多个数据表关联的场景下容易出现了几种情况进行说明。
第一种情况是,关联条件涉及的关联字段并不需要加密,即,第三查询语句中加密函数并不涉及到关联字段,其与关联字段不相关。可见,在这种情况下,关联字段是不会被加密的,因此也不会出现失去关联性的问题,按照上述方法实施例1的方案处理即可。
第二种情况是,关联字段需要加密,但该关联字段不是查询字段,即,第三查询语句中涉及的加密函数与关联字段相关,但该关联字段不是查询字段。首先解释一下查询字段,“查询字段”是指用户输入的第一查询语句中涉及到的待查询的字段;如上述示例2中的第一查询语句中select与from之间描述的几个字段。由于第三查询语句并没有改变第一查询语句的查询字段,第三查询语句中和第一查询语句中的查询字段是一致的。
在第二种情况中,由于查询字段不包含该关联字段,也就是说,关联字段对应的数据不会作为最终的查询结果,因此,不论该关联字段加密与否,对于用户而言最终都是不可见的,这种情况下,由于关联字段被加密后可能会引起关联失效的问题,因此,可以直接忽略该关联字段相关的加密函数,不对该关联字段进行加密,从而避免出现关联失效的问题;当然,也可以考虑对第三查询语句进行改动,以保证完成加密的同时避免失去关联的处理方式。
第三种情况是,关联字段需要加密且该关联字段是查询字段,即,第三查询语句中涉及的加密函数与关联字段相关,且该关联字段是查询字段,这种情况下,该关联字段对于用户而言最终是可见的,因此,就需要考虑对第三查询语句进行改动,以保证完成加密的同时避免失去关联的处理方式。
针对第二种和第三种情况,发明人进一步提出了不同的处理方式:
针对第二种情况,步骤204可以按照如下方式实现:
第一种方式是,当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数。
下面通过示例对第一种方式进行解释说明。
示例3,假设,第三查询语句如下:
从上述第三查询语句可以看出:关联字段“user_id”并不是查询字段,但第三查询语句中的加密函数与关联字段“user_id”相关;这种情况下,可以对第三查询语句进行改动,具体改动方式是,删除所述第三查询语句中与该关联字段相关的加密函数udf1(user_id)和udf3(user_id);则改动后的第三查询语句如下:
第二种方式是,当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
下面通过示例对第二种方式进行解释说明。
示例4,结合示例3中的第三查询语句,按照第二种方式对第三查询语句进行改动,改动后的第三查询语句如下:
从上述示例4可以看出,从第三查询语句中的与关联字段user_id相关的所有加密函数udf1和udf3中选择了udf1,将udf1移动到第三查询语句的最外层中(如上述修改后的第三查询语句中的黑色加粗部分),并删除了udf3;将udf1移动到第三查询语句的最外层中,由于该关联字段并不是第一查询语句中的查询字段,并不是用户实际要查询的字段,因此还需要进一步将该关联字段过滤掉,即,仅保留用户原始的查询字段。当然,上述示例4中,也可以选择udf3,将udf3移动到查询语句的最外层,同时删除了udf1。
针对第三种情况,步骤204可以按照如下方式实现:
第三种实现方式,当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
下面通过示例对第三种方式进行解释说明。
示例5,假设第三查询语句如下:
从上述示例5的第三查询语句可以看出:关联字段user_id是查询字段且加密函数与该关联字段相关,则对该第三查询语句进行改动,改动的第三查询语句具体如下:
上述示例5是从与关联字段user_id相关的所有加密函数udf1和udf3中选择了udf1,删除了udf3,再将所选择的udf1移动到第三查询语句的最外层,这样完成对第三查询语句的改动。当然,也可以选择udf3,删除了udf1,再将udf3移动到第三查询语句的最外层中。
从上述示例5可以看出:对第三查询语句进行改动,使得改动后的第三查询语句中,涉及到关联字段的加密部分被提到最外层,而子查询就不再对关联字段加密,这样就不会引起关联失效;而执行改动后的第三查询语句得到的查询结果,仍旧会对关联字段进行加密,从而防止数据泄密。
从这个实施例可以看出,本发明提供的技术方案在针对用户的查询需求时,无需预先下载数据、加密数据、保存数据,而是用户输入的查询语句进行实时改动,增加加密部分以达到对特定字段加密的目的;进一步地,针对多关联数据表查询的情况,对查询语句作了进一步改动,以实现不影响关联关系的加密处理,最后执行改动后的查询语句,就直接查询到相应的加密数据,在防止数据泄露的同时避免数据滞后,能够提高用户体验。
装置实施例
与上述方法相对应,本申请实施例还提供了一种无落地的数据处理装置。
请参阅图3,图3是本发明提供的一种无落地的数据处理装置的实施例1的结构图,下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
如图3所示,该装置可以包括:
接收单元301,用于接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
加密单元302,用于采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
生成单元303,用于根据所述第一查询语句和所述第二查询语句生成第三查询语句;
查询单元304,用于执行所述第三查询语句得到查询结果。
可选的,所述加密单元,包括:
获取子单元,用于从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
第一加密子单元,用于根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,所述加密单元,包括:
展示子单元,用于向用户展示与所述第一查询语句中的数据表名对应的加密函数;
第二加密子单元,用于响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
可选的,所述生成单元,包括:
插入子单元,用于在所述第一查询语句中的数据表名之前,插入与该数据表名对应的第二查询语句以生成第三查询语句。
从这个实施例可以看出,本发明提供的技术方案在针对用户的查询需求时,无需预先下载数据、加密数据、保存数据,而是用户输入的查询语句进行实时改动,增加加密部分以达到对特定字段加密的目的,进而执行改动后的查询语句,就直接查询到相应的加密数据,在防止数据泄露的同时避免数据滞后,能够提高用户体验。
另外,考虑到多关联数据表的查询情况,本发明提供了另一种装置。
请参阅图4,图4是本发明提供的一种无落地的数据处理装置的实施例2的结构图,下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
如图4所示,该装置可以包括:
接收单元401,用于接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
加密单元402,用于采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
生成单元403,用于根据所述第一查询语句和所述第二查询语句生成第三查询语句;
改动单元404,用于当所述第一查询语句用于查询具有关联关系的数据表中字段对应的数据时,根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性;
查询单元405,用于执行所述改动单元改动后的第三查询语句得到查询结果。
进一步地,所述改动单元,可以包括:
改动子单元一,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数;或者,
改动子单元二,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
进一步地,所述改动单元,可以包括:
改动子单元三,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
从这个实施例可以看出,本发明提供的技术方案在针对用户的查询需求时,无需预先下载数据、加密数据、保存数据,而是用户输入的查询语句进行实时改动,增加加密部分以达到对特定字段加密的目的;进一步地,针对多关联数据表查询的情况,对查询语句作了进一步改动,以实现不影响关联关系的加密处理,进而执行改动后的查询语句,就直接查询到相应的加密数据,在防止数据泄露的同时避免数据滞后,能够提高用户体验。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种无落地的数据处理方法及装置进行了详细介绍,本文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种无落地的数据处理方法,其特征在于,所述方法包括:
接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
根据所述第一查询语句和所述第二查询语句生成第三查询语句;
执行所述第三查询语句得到查询结果。
2.根据权利要求1所述的方法,其特征在于,采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,包括:
从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
3.根据权利要求1所述的方法,其特征在于,采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,包括:
向用户展示与所述第一查询语句中的数据表名对应的加密函数;
响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
4.根据权利要求1所述的方法,其特征在于,根据所述第一查询语句和所述第二查询语句生成第三查询语句,包括:
在所述第一查询语句中的数据表名之前,插入与该数据表名对应的第二查询语句以生成第三查询语句。
5.根据权利要求1所述的方法,其特征在于,所述加密函数是预先设定的用户自定义函数。
6.根据权利要求1所述的方法,其特征在于,当所述第一查询语句用于查询具有关联关系的数据表中字段对应的数据时,
则在执行所述第三查询语句得到查询结果之前,所述方法还包括:
根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性;
则执行所述第三查询语句得到查询结果,具体为:
执行改动后的第三查询语句得到查询结果。
7.根据权利要求6所述的方法,其特征在于,根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性,包括:
当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数;或者,
当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
8.根据权利要求6所述的方法,其特征在于,根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性,包括:
当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
9.一种无落地的数据处理装置,其特征在于,所述装置包括:
接收单元,用于接收用户输入的第一查询语句,所述第一查询语句用于查询数据表中字段对应的数据;
加密单元,用于采用与所述第一查询语句中的数据表名对应的加密函数生成第二查询语句,所述加密函数用于对数据表中特定字段的数据进行加密;
生成单元,用于根据所述第一查询语句和所述第二查询语句生成第三查询语句;
查询单元,用于执行所述第三查询语句得到查询结果。
10.根据权利要求9所述的装置,其特征在于,所述加密单元,包括:
获取子单元,用于从预先设置的加密函数库中,获取与所述第一查询语句中的数据表名对应的加密函数;
第一加密子单元,用于根据获取的加密函数和数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
11.根据权利要求9所述的装置,其特征在于,所述加密单元,包括:
展示子单元,用于向用户展示与所述第一查询语句中的数据表名对应的加密函数;
第二加密子单元,用于响应于用户触发的选择操作,根据用户选择的加密函数和对应的数据表名生成第二查询语句,所述第二查询语句用于查询数据表中特定字段,并利用加密函数对特定字段的数据进行加密。
12.根据权利要求9所述的装置,其特征在于,所述生成单元,包括:
插入子单元,用于在所述第一查询语句中的数据表名之前,插入与该数据表名对应的第二查询语句以生成第三查询语句。
13.根据权利要求9所述的装置,其特征在于,当所述第一查询语句用于查询具有关联关系的数据表中字段对应的数据时,
所述装置还包括:
改动单元,用于根据第三查询语句中的加密函数与关联字段的关系以及关联字段与查询字段的关系,对第三查询语句中涉及关联字段的加密函数作改动,以使改动后的第三查询语句的关联字段具备关联性;
则所述查询单元,具体用于:
执行改动后的第三查询语句得到查询结果。
14.根据权利要求13所述的装置,其特征在于,所述改动单元,包括:
改动子单元一,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,删除所述第三查询语句中与关联字段相关的加密函数;或者,
改动子单元二,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段不是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中,再过滤该关联字段。
15.根据权利要求13所述的装置,其特征在于,所述改动单元,包括:
改动子单元三,用于当所述第三查询语句中的加密函数与关联字段相关且关联字段是查询字段时,从所述第三查询语句中与关联字段相关的所有加密函数中选择一个加密函数并将未被选择的加密函数删除,将所选择的加密函数移动到第三查询语句的最外层中。
CN201510542520.XA 2015-08-28 2015-08-28 一种无落地的数据处理方法及装置 Active CN106484378B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510542520.XA CN106484378B (zh) 2015-08-28 2015-08-28 一种无落地的数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510542520.XA CN106484378B (zh) 2015-08-28 2015-08-28 一种无落地的数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN106484378A CN106484378A (zh) 2017-03-08
CN106484378B true CN106484378B (zh) 2019-08-09

Family

ID=58236261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510542520.XA Active CN106484378B (zh) 2015-08-28 2015-08-28 一种无落地的数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN106484378B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710220B (zh) * 2018-12-12 2023-08-22 平安科技(深圳)有限公司 关系型数据库查询方法、装置、设备及存储介质
CN111125092A (zh) * 2019-11-18 2020-05-08 贝壳技术有限公司 业务指标的查询方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353387B2 (en) * 2001-03-08 2008-04-01 International Business Machines Corporation Method and system for integrating encryption functionality into a database system
EP2778951B1 (en) * 2011-11-11 2017-04-26 NEC Corporation Database encryption system, method and program
US9087212B2 (en) * 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database
CN102855448B (zh) * 2012-08-10 2016-02-10 深圳市黎明网络系统有限公司 一种字段级数据库加密装置
CN102968455A (zh) * 2012-10-31 2013-03-13 山东浪潮齐鲁软件产业股份有限公司 一种应用层透明的数据库加密方法
CN103853985B (zh) * 2012-12-05 2017-01-18 中国移动通信集团黑龙江有限公司 数据加密方法、解密方法及装置
CN104601325B (zh) * 2013-10-31 2018-03-16 华为技术有限公司 数据加密方法、数据解密方法、装置、设备及系统

Also Published As

Publication number Publication date
CN106484378A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
KR102155462B1 (ko) 데이터 액세스를 위한 방법, 시스템 및 장치
US11128465B2 (en) Zero-knowledge identity verification in a distributed computing system
US10831844B2 (en) Accessing databases
US11082226B2 (en) Zero-knowledge identity verification in a distributed computing system
US20140012833A1 (en) Protection of data privacy in an enterprise system
CN110019540B (zh) 企业图谱的实现方法、展示方法及装置、设备
CN102725755B (zh) 文件访问方法及系统
US9135454B2 (en) Systems and methods for enabling searchable encryption
US20160179836A1 (en) Method for updating data table of keyvalue database and apparatus for updating table data
CN104182405A (zh) 一种连接查询方法及装置
US20040107212A1 (en) Centralized access and management for multiple, disparate data repositories
CN108156030B (zh) 一种配置策略同步的方法及装置
US9465954B1 (en) Method and system for tracking masking of data
CN113127848A (zh) 一种权限系统数据的存储方法及相关设备
CN106484378B (zh) 一种无落地的数据处理方法及装置
CN103036726A (zh) 一种网络用户管理的方法及设备
US20210034574A1 (en) Systems and methods for verifying performance of a modification request in a database system
US9607072B2 (en) System and method for implementing nested relationships within a schemaless database
US11671491B2 (en) Sharing of data share metrics to customers
CN102193979B (zh) 图形数据库非联机事务中查询数据的控制方法
CN102193986B (zh) 图形数据库中联机事务的实现方法
CN115185946A (zh) 多租户系统、多租户管理方法、计算机设备和存储介质
US9460139B2 (en) Distributed storage system with pluggable query processing
CN105677692A (zh) 实时提供信息查询的信息系统与方法
US20130325836A1 (en) Systems and Methods for Providing Context Search Filtering

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211115

Address after: Room 516, floor 5, building 3, No. 969, Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee after: Alibaba Dharma Institute (Hangzhou) Technology Co.,Ltd.

Address before: P.O. Box 847, 4th floor, capital building, Grand Cayman, British Cayman Islands

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20170308

Assignee: Hangzhou Jinyong Technology Co.,Ltd.

Assignor: Alibaba Dharma Institute (Hangzhou) Technology Co.,Ltd.

Contract record no.: X2024980001317

Denomination of invention: A groundless data processing method and device

Granted publication date: 20190809

License type: Common License

Record date: 20240123

Application publication date: 20170308

Assignee: Golden Wheat Brand Management (Hangzhou) Co.,Ltd.

Assignor: Alibaba Dharma Institute (Hangzhou) Technology Co.,Ltd.

Contract record no.: X2024980001316

Denomination of invention: A groundless data processing method and device

Granted publication date: 20190809

License type: Common License

Record date: 20240123

Application publication date: 20170308

Assignee: Hangzhou Xinlong Huazhi Trademark Agency Co.,Ltd.

Assignor: Alibaba Dharma Institute (Hangzhou) Technology Co.,Ltd.

Contract record no.: X2024980001315

Denomination of invention: A groundless data processing method and device

Granted publication date: 20190809

License type: Common License

Record date: 20240123

EE01 Entry into force of recordation of patent licensing contract