用于为关系数据库处理数据库语句的方法和系统技术方案

技术编号:16038135 阅读:41 留言:0更新日期:2017-08-19 19:57
一种用于为关系数据库处理数据库语句的计算机实现的方法。所述数据库包含一个或多个包括一个或多个数据行的表。接收数据库语句。从所述数据库语句中确定谓词集合并从所述表中确定数据行集合以用于生成所述数据库语句结果。获得适用于一个或多个数据行的禁止语句集合。对于每个谓词:获得适用于一个或多个数据行的掩码集合,其中,对于每个掩码,由掩码掩蔽的数据被所述谓词使用。确定数据行是否具有适用的禁止语句,以及是否包含由掩码掩蔽的数据。如果是,则确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果。

【技术实现步骤摘要】
用于为关系数据库处理数据库语句的方法和系统
本专利技术涉及为关系数据库处理数据库语句。
技术介绍
数据库系统通常使用精细粒度访问控制(FGAC)机制来控制用户对数据的访问。例如,FGAC可以用于限制用户对关系表中的特定行集合的访问。该级别的访问控制对于关系数据访问的所有区域(诸如实用程序)是有利的,而对于诸如SELECT、INSERT、UPDATE和DELETE等数据操纵语言(datamanipulationlanguage,DML)SQL语句尤其有利。在关系数据库系统内实现FGAC的传统方法依赖于视图的使用。例如,诸如Oracle虚拟私有数据库等“虚拟私有数据库”允许在行和/或列级别限定访问。FGAC的其他已知实施方式使用用户会话的上下文属性,通过将谓词添加到查询中来修改SQL查询。然而,已知的现有技术解决方案并没有解决由于推断而可能出现的安全问题,即,用户可以使用允许其访问的其他信息,推断存储在数据库中的不允许其访问的数据信息的情况。举个例子来说,假设一个数据库表包含客户信用卡信息,其客户(CUSTOMERS)表具有栏目:姓名(name)、卡号(card_number)、失效日期(exp_date)、起始日期(start_date),并包含以下行:作为FGAC机制的一部分,可以定义卡号列的掩码,使得特定用户不能看到该列的整个值。例如,可以将一列掩码定义为XXXX-XXXX-XXXX-####的形式,以使查询为例如:SELECTname,card_numberFROMCUSTOMERSWHEREname=‘Smith,John’将为应用了掩码的用户返回以下结果:姓名卡号Smith,JohnXXXX-XXXX-XXXX-3456然而,利用该FGAC机制,用户仍然可能通过适当方式利用精心设计的查询来确定该掩蔽的值。例如,对于同一用户的查询为:SELECTnameFROMCUSTOMERSWHEREcard_numberlike‘1234-5678-9012-%’(%为数据库语言中诸如SQL等通配符)将为用户返回以下结果:姓名Smith,John因此,由于该用户能够从初始搜索确定该卡号的最后四位数为3456,该用户便能够确定完整的卡号值,即使该用户并无权限看到该卡号。通过该方式,用户可以发现完整卡号值,使用上述类型的连续查询来测试对于初始十二个数字的猜测是否正确。为了进一步强调该问题,可以使用以下形式的连续查询来执行二进制搜索:SELECTnameFROMCUSTOMERSWHEREname=‘Smith,John’ANDcard_number<‘5000-0000-0000-0000’其中在返回结果的情况下,下一个查询将是:SELECTnameFROMCUSTOMERSWHEREname=‘Smith,John’ANDcard_number<‘2500-0000-0000-0000’在未返回结果的情况下,下一个查询将是:SELECTnameFROMCUSTOMERSWHEREname=‘Smith,John’ANDcard_number<‘7500-0000-0000-0000’以此类推。通过该方式,该卡号的初始十二个数字可以最多使用2.(log21,000,000,000)+1=59个查询(通常更少)而识别出来。
技术实现思路
根据本专利技术的第一个方面,提供了一种用于为关系数据库处理数据库语句的计算机实现的方法和计算机程序产品,其中所述数据库包含一个或多个包括一个或多个数据行的表。接收数据库语句。从所述数据库语句中确定谓词集合以用于生成所述数据库语句的结果。从一个或多个表中确定数据行集合以用于生成所述数据库语句结果。获得适用于所述数据行集合中的一个或多个数据行的禁止语句集合。对于所述谓词集合的每个谓词,执行以下步骤:获得适用于所述数据行集合的一个或多个数据行的掩码集合,其中,对于所述掩码集合中的每个掩码,由掩码掩蔽的数据被所述谓词使用;确定所述数据行集合的数据行是否具有适用的禁止语句,以及是否包含由所述掩码集合的掩码掩蔽的数据;以及在所述数据行集合的数据行具有适用的禁止语句并且包含由所述掩码集合的一个掩码掩蔽的数据的情况下,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果。根据本专利技术的第二个方面,提供了一种数据库系统,其包括配置成从客户端设备接收数据库语句的数据库引擎以及与所述数据库引擎通信的至少一个数据库。所述至少一个数据库包括一个或多个数据库表,并且每个表包括一个或多个数据行。所述数据库引擎被配置为:当从所述客户端设备接收到数据库语句时,执行上述方法并将确定的结果返回给所述客户端设备。根据本专利技术的第三个方面,提供了一种用于为关系数据库处理数据库语句的计算机程序产品。所述数据库包括具有一个或多个数据行的一个或多个表。所述计算机程序产品包括具有计算机可读程序代码的计算机可读存储介质。所述计算机可读程序代码被配置为提供包括数据库引擎和与所述数据库引擎通信的至少一个数据库的数据库系统。所述数据库引擎被配置为从客户端设备接收多个数据库语句。所述至少一个数据库包括一个或多个数据库表。每个表包括一个或多个数据行。所述数据库引擎被配置为:当从所述客户端设备接收到数据库语句时,从所述数据库语句确定谓词集合,以用于生成所述数据库语句的结果;从所述一个或多个表确定数据行集合,以用于生成所述数据库语句的结果;获得适用于所述数据行集合中的一个或多个数据行的禁止语句集合;对于所述谓词集合的每个谓词:获得适用于所述数据行集合的一个或多个数据行的掩码集合,其中对于所述掩码集合中的每个掩码,由掩码掩蔽的数据被所述谓词所使用;确定所述数据行集合的数据行是否具有适用的禁止语句,以及是否包含由所述掩码集合的掩码掩蔽的数据;以及在所述数据行集合的数据行具有适用的禁止语句,并且包含由所述掩码集合的掩码掩蔽的数据的情况下,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果;并将确定的结果返回给所述客户端设备。当然,应当理解的是,关于本专利技术的一个方面描述的特征可以结合到本专利技术的其他方面中。例如,本专利技术的方法可以包括参考本专利技术的计算机系统描述的任何特征,反之亦然。附图说明现在将参照以下附图,仅通过示例的方式描述本专利技术的优选实施例,其中:图1是根据本专利技术实施例的数据库系统的示意图;图2是示出当处理数据库语句时,根据本专利技术实施例的数据库系统的高级操作流程图;图3是示出当应用数据组合禁止时,图2的数据库系统的操作流程图;图4是示出当处理数据库语句时,根据本专利技术另一个实施例的数据库系统的高级操作流程图;图5是示出当应用数据组合禁止时,图4的数据库系统的操作流程图;图6是示出当处理数据库语句时,根据本专利技术的另一个实施例的数据库系统的高级操作流程图;以及图7是示出当应用数据组合禁止时,图6的数据库系统的操作流程图。具体实现方式如上所述,根据本专利技术的第一个方面,提供了一种用于为关系数据库处理数据库语句的计算机实现的方法和计算机程序产品。当根据所述方法确定数据库语句的结果时,其使用的谓词(即,在确定所述结果时其包含的被评估的谓词)和其使用的数据行(即,来自于为所述谓词所适用的经组合的底层数据库表的行)被确定本文档来自技高网
...
用于为关系数据库处理数据库语句的方法和系统

【技术保护点】
一种用于为关系数据库处理数据库语句的计算机实现的方法,其中所述数据库包含一个或多个包括一个或多个数据行的表,所述方法包括以下步骤:接收数据库语句;从所述数据库语句中确定谓词集合以用于生成所述数据库语句的结果;从所述一个或多个表中确定数据行集合以用于生成所述数据库语句结果;获得适用于所述数据行集合中的一个或多个数据行的禁止语句集合;对于所述谓词集合的每个谓词:获得适用于所述数据行集合的一个或多个数据行的掩码集合,其中,对于所述掩码集合中的每个掩码,由掩码掩蔽的数据被所述谓词使用;确定所述数据行集合的数据行是否具有适用的禁止语句,以及是否包含由所述掩码集合的掩码掩蔽的数据;以及在所述数据行集合的数据行具有适用的禁止语句并且包含由所述掩码集合的掩码掩蔽的数据的情况下,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果。

【技术特征摘要】
2015.11.23 US 14/948,8471.一种用于为关系数据库处理数据库语句的计算机实现的方法,其中所述数据库包含一个或多个包括一个或多个数据行的表,所述方法包括以下步骤:接收数据库语句;从所述数据库语句中确定谓词集合以用于生成所述数据库语句的结果;从所述一个或多个表中确定数据行集合以用于生成所述数据库语句结果;获得适用于所述数据行集合中的一个或多个数据行的禁止语句集合;对于所述谓词集合的每个谓词:获得适用于所述数据行集合的一个或多个数据行的掩码集合,其中,对于所述掩码集合中的每个掩码,由掩码掩蔽的数据被所述谓词使用;确定所述数据行集合的数据行是否具有适用的禁止语句,以及是否包含由所述掩码集合的掩码掩蔽的数据;以及在所述数据行集合的数据行具有适用的禁止语句并且包含由所述掩码集合的掩码掩蔽的数据的情况下,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果。2.如权利要求1所述的计算机实现的方法,其中,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果,其实现是通过:从所述数据行集合中移除所述数据行;以及将所述谓词集合应用于所述经修改的数据行集合。3.如权利要求1所述的计算机实现的方法,其中,确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果,其实现是通过:从所述谓词集合中移除所述谓词;以及将所述经修改的谓词集合应用于所述数据行集合。4.如权利要求1所述的计算机实现的方法,其中,所述禁止语句集合中的每个禁止语句定义是否确定所述数据库语句的结果而无需使用将所述谓词应用于所述数据行的结果,其实现是通过执行以下步骤之一:从所述数据行集合中移除所述数据行;以及从所述谓词集合中移除所述谓词。5.如权利要求1所述的计算机实现的方法,其中,所述禁止语句集合中的每个禁止语句定义了所述禁止语句应用的数据库语句的类型。6.如权利要求5所述的计算机实现的方法,其中,所述禁止语句集合仅包括适用于所述数据库语句的禁止语句。7.如权利要求1所述的计算机实现的方法,其中,所述禁止语句集合的一个或多个禁止语句定义所述禁止语句应用的表的列。8.如权利要求7所述的计算机实现的方法,其中,在确定所述数据行集合的数据行是否具有适用的禁止语句,以及是否包含被所述掩码集合的掩码掩蔽的数据的步骤中,禁止语句被确定为仅适用于当所述禁止语句应用于表的列且其数据被所述掩码掩蔽的情况。9.一种数据库系统,包括:配置成从客户...

【专利技术属性】
技术研发人员:PM巴尔巴斯J达菲L潘DM蒂尔森
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国,US

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

1