首页> 中国专利> 大数据平台数据修改系统及修改、响应、缓存、校验方法

大数据平台数据修改系统及修改、响应、缓存、校验方法

摘要

本发明公开了一种大数据平台数据修改系统,包括控制中心、大数据权限控制组件、大数据分布式文件系统、以及多个账号,所述分布式文件系统对应有多个物理节点,每一账号对应有至少一个控制端,所述控制端位于物理节点上,所述账号的控制端用于存储共享数据表的区块链,所述区块链用于存储共享数据表的操作信息;所述大数据分布式文件系统还对应有缓存区。本发明中,通过区块链来记录数据的修改信息,对数据的每一次修改都会由各共享端分别进行校验,只有在每一共享端都校验通过才会完成修改,从而保证发起端记载的操作内容与修改后的实际操作结果相符,避免账号绕过hive对数据进行篡改,确保修改记录的真实性,以便于审计。

著录项

  • 公开/公告号CN113094754B

    专利类型发明专利

  • 公开/公告日2022.11.01

    原文格式PDF

  • 申请/专利权人 重庆银行股份有限公司;

    申请/专利号CN202110497681.7

  • 申请日2021.05.08

  • 分类号G06F21/62(2013.01);G06F21/64(2013.01);G06F16/172(2019.01);G06F16/182(2019.01);

  • 代理机构重庆乐泰知识产权代理事务所(普通合伙) 50221;

  • 代理人崔雷

  • 地址 400000 重庆市江北区永平门街6号

  • 入库时间 2022-11-28 17:54:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-01

    授权

    发明专利权授予

说明书

技术领域

本发明涉及大数据平台技术领域,特别涉及一种大数据平台数据修改系统及修改、响应、缓存、校验方法。

背景技术

Hadoop平台是适合于大数据的分布式存储和处理平台,Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理。在大数据Hadoop平台hive数据仓库中,某些数据可被多个账号修改,这些账号可以是共同发布数据的账号、也可能是权限更大的上级账号、管理员账号等,这些账号可以通过操作hive表对应的分布式文件系统hdfs上的数据文件而不通过hive组件达到修改数据的目的,而大数据平台并不能提供足够的数据证明数据修改是来源于哪个账号的某个操作,造成无法审核操作的合法性和追溯数据修改来源账号。主要原因如下:

1)Hive数据仓库下文件的属主账号和角色信息缺失:在大数据平台多账号管理体系下sentry等权限组件几乎是必须使用的。但启用sentry等权限管理组件后,以任何方式向hive数据仓库路径(/user/hive/warehouse/)写入数据,分布式文件系统hdfs层面显示属主均为hive,而不会显示出发起写入操作的账号和角色,无法定位操作来源于哪个账号和角色。

2)hdfs记录的审计日志只提供操作的时间记录、来源、操作对象,缺乏操作结果和操作影响的数据范围,无法用于追溯到具体数据的提供者;hive记录的审计日志仅包含了通过hive提交的SQL语句,但账号如果绕过hive直接操作hdfs文件修改数据,hive不会产生审计记录,造成审计操作合规性和数据来源追溯困难。

对于大数据平台hive数据仓库的数据修改审计,目前采用的技术方案主要有以下三种:

1)在数据的固定位置提供签名记录数据提供者信息方案。比如在hive的共享数据表中增加一个签名字段,记录数据提供者的信息和提供时间,审计和溯源时只需要查看这个字段的内容即可找到对应的数据提供者,但该方案因记录的数据位置固定、记录结构简单,容易被其他有数据修改权限的账号篡改和伪造,甚至被数据提供者写入不实的签名。

2)在数据的隐藏位置提供加密的签名信息。采用在数据内隐藏的位置加入数字、图片等加密信息串的方式,但该方案可被其他有权限修改数据的账号将整个数据文件的内容全部覆盖和重写,从而导致签名失效,无法证明数据来源。

3)采用全量数据计算哈希值生成区块链来标识数据的唯一性。通过将修改后的数据内容两两计算哈希值得生成merkletree,使得数据产生唯一的哈希值,然后将哈希值写入区块,每次修改的区块信息依次串联形成区块链,用于追溯每次修改的内容。但这种方法需要对全部数据计算哈希值,需要较大的计算开销,只适用于小数据量修改的记录和溯源,对于一次任务处理数据量很大的大数据平台,生成区块的耗时很长,效率较低。

发明内容

本发明要解决的技术问题是提供了一种能够防止篡改数据,从而保证数据修改记录的真实性的大数据修改的方法及装置。

本发明的技术方案如下:

一种大数据平台数据修改系统,用于Hadoop大数据平台的hive数据仓库的数据修改,其特征在于,包括控制中心、大数据权限控制组件、大数据分布式文件系统、以及多个用于修改分布式文件系统的共享数据表的账号,所述分布式文件系统对应有多个物理节点,每一账号对应有至少一个控制端,所述控制端位于物理节点上;

所述控制中心用于:

实时从大数据权限控制组件中同步各账号对各共享数据表的操作权限;

响应账号的修改请求;当账号发起对共享数据表的修改请求时,将该账号作为此次修改的发起端,将其他共享了该共享数据表的账号作为此次修改的共享端;

生成一次性票据令牌转发给各共享端,以及回收一次性票据令牌;所述一次性票据令牌用于在控制中心、分布式文件系统、发起端、以及各共享端之间标识和互信本次修改的请求会话;

在发起端、共享端和分布式文件系统之间传递信息,向发起端、共享端和分布式文件系统下发执行命令,以及接收发起端、共享端和分布式文件系统反馈的信息;

所述大数据权限控制组件用于管理各账号对数据表的操作权限;

所述大数据分布式文件系统用于将多个物理节点组成一个文件系统网络,通过网络进行物理节点间的通信和数据传输;

所述账号的控制端用于存储共享数据表的区块链,以及响应控制中心下发的命令;当作为发起端时,用于:

向控制中心发起修改请求;

接受控制中心返回的本次请求的应答信息;

向大数据文件系统上发起修改数据文件的操作请求;

修改数据过程中,将本次修改信息写入区块,并串联上次的区块链形成新的区块链;

修改数据过程中,向共享账号广播校验区块链的请求;

接受控制中心反馈的修改校验结果,如果成功即归档并更新区块链,失败则丢弃本次区块,将区块链回退到上次的状态;

作为共享端时,用于:

接受控制中心转发的账号的修改请求;

检查确认其服务状态是否正常,并向控制中心反馈是否同意本次修改请求;

接受修改发起账号发起的校验区块链信息的请求,并校验修改账号广播的区块链中本次区块信息是否和修改数据内容一致,并反馈校验结果给控制中心。

进一步的,所述分布式文件系统还对应有缓存区,所述缓存区用于:

临时保存被修改的数据表的副本数据;

允许修改发起账号对副本数据进行修改;

允许共享账号读取副本数据;

在控制中心下发覆盖写入新数据的指令时,将被修改的副本数据的路径加锁拒绝应用访问,待原共享数据表路径下的数据文件删除后,再将副本数据移动到原共享数据表的数据路径中,最后解除锁,允许应用访问;

在控制中心下发回退数据的指令时,将被修改过的副本数据删除,并重新从分布式文件系统上原共享数据表的路径下复制一份数据放入缓存区的路径中。

一种大数据平台数据修改的修改方法,用于发起对Hadoop大数据平台的hive数据仓库的数据的修改,包括:

通过区块链记录共享数据表的修改信息;

向控制中心发出对一共享数据表的修改请求;

接收来自于控制中心的控制指令;

当控制指令为允许修改的指令时,对该共享数据表的数据进行修改操作,并将本次修改的操作信息写入一个新的区块,把新的区块连接在发起端对应的区块链的末端,生成一个新的区块链,并将新生成的区块链广播出去,以便于对修改进行校验;

当控制指令为修改完成的指令时,使分布式文件系统对修改的内容进行更新;

当控制指令为回退操作的指令时,将共享数据表的数据还原到修改前的状态,并丢弃本次区块,将区块链回退到修改前的状态。

一种响应大数据平台数据修改的修改响应方法,用于对Hadoop大数据平台的hive数据仓库的数据修改的控制,包括:

实时从大数据权限控制组件中同步各账号对各共享数据表的操作权限;

响应账号的修改请求;当账号发起对共享数据表的修改请求时,将该账号作为此次修改的发起端,将其他共享了该共享数据表的账号作为此次修改的共享端;

生成一次性票据令牌转发给各共享端,以及回收一次性票据令牌;

在发起端、共享端和分布式文件系统之间传递信息,向发起端、共享端和分布式文件系统下发执行命令,以及接收发起端、共享端和分布式文件系统反馈的信息。

一种大数据平台数据修改的缓存方法,用于在修改Hadoop大数据平台的hive数据仓库的数据过程中对数据进行缓存,包括:

在分布式文件系统设置有独立路径的缓存区;

将请求修改的共享数据表复制一份副本数据存放于缓存区的独立路径中;

提供发起端对缓存区中数据副本的修改,以及在修改后提供给各共享端校验修改信息;

在控制中心下发覆盖写入新数据的指令时,缓存区首先将被修改的副本数据的路径加锁拒绝应用访问,待原共享数据表路径下的数据文件删除后,再将缓存区中已经修改并校验有效的副本数据移动到原共享数据表的数据路径中,最后解除锁,允许应用访问;

在控制中心下发回退数据的指令时,缓存区将被修改过的副本数据删除,并重新从分布式文件系统上原共享数据表的路径下复制一份数据放入缓存区的路径中。

一种大数据平台数据修改的校验方法,用于对Hadoop大数据平台的hive数据仓库的数据修改的真实性进行校验,包括:

存储共享端的账号对应的区块链,所述区块链用于记录共享数据表的修改信息;

共享端接受控制中心转发的发起端的修改请求,检查是否满足本次修改的操作要求;如果满足操作要求则向控制中心反馈同意本次修改请求;否则,向控制中心反馈拒绝本次修改请求;

共享端接受发起端广播的新生成的区块链,并访问缓存区上修改后的副本数据,将其和自身区块链中上次区块的操作结果进行比对,找出被修改的部分;其中,所述共享数据表的数据信息和所述操作结果均包括文件名称、生成时间和占用的存储容量信息;再读取新生成的区块链中本次区块记录的本次修改的操作信息,检查被修改的部分是否和本次区块记录的操作信息一致,如果一致则返回校验通过的信息,否则,返回校验不通过的信息。

进一步的,在分布式文件系统对应有用于记录修改信息的审计数据表,所述审计数据表对应有唯一行号“rowId”字段,其类型是自步长为1的增长序列,用于记录被修改的数据范围;审计数据表中有唯一字段“提供者账号签名”记录发起端的账号签名、唯一字段“生成时间”记录数据的修改时间;在修改完成后,还将相关的操作信息写入审计数据表。

进一步的,对追加操作的真实性进行校验包括:

从分布式文件系统上找出数据表中本次修改过的文件,并比对本次区块信息的操作内容中记录的操作文件列表,是否完整地包含在这些本次修改过的文件中;如果是则继续校验,否则,返回检验不通过的信息;

然后,对本次未修改过的各文件,依次比较该文件的文件名称、生成时间、占用存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用的存储容量信息是否一致;如果一致则继续校验,否则,返回检验不通过的信息;

检查在上次区块的操作结果中未记录的文件是否记录在本次区块的操作内容中,并依次检查其数据文件中的账号签名、生成时间文件内容是否和本次区块的记录的操作来源账号、生成时间信息一致,操作内容对应的操作结果是否与本次区块中操作结果记录的信息一致;如果一致说明操作结果与操作内容相符,返回校验通过的信息;否则,说明操作结果与操作内容不相符,返回校验不通过的信息。

之后,读取本次区块的操作内容中记录的各操作文件和审计数据表的“rowId”字段,依次找到各操作文件被修改的行号范围;检查文件中写入数据的账号签名和本次区块记录的账号是否一致;如果不一致则返回检验不通过的信息,如果一致则继续检查该操作文件被修改的行号范围之前的数据的账号写入数据行号范围和是否与上次区块的操作结果中记录的信息一致;如果一致则继续校验,否则,返回检验不通过的信息;

最后,依次读取各操作文件,检查本次区块中操作结果记录的最大行号是否等于上次区块中操作结果记录的最大行号加上本次区块中操作内容记录的追加写入的数据行号的最大值;如果相等则返回检验通过的信息;否则,返回检验不通过的信息。

进一步的,对新增操作的真实性进行校验的方法包括:

依次检查在上次区块的操作结果记录的各文件,其文件名称、生成时间、占用的存储容量信息是否和本次区块的操作内容中记录的文件名称、生成时间、占用的存储容量信息一致,并检测文件范围是否完整;如果信息一致且文件范围完整则继续校验,否则,返回检验不通过的信息;

检查在上次区块的操作结果中未记录的文件是否记录在本次区块的操作内容中,并依次检查其数据文件中的账号签名、生成时间文件内容是否和本次区块的记录的操作来源账号、生成时间信息一致,操作内容对应的操作结果是否与本次区块中操作结果记录的信息一致;如果一致则返回检验通过的信息;否则,返回检验不通过的信息。

进一步的,对删除操作的真实性进行校验的方法包括:

当操作内容为删除所有文件时,检查该数据表的路径下是否还存储有文件;如果未存储文件则返回检验通过的信息;否则,返回检验不通过的信息;

当操作内容为删除部分文件时,检查数据表的路径下是否存储有相应的文件,如果未存储相应的文件则继续校验,否则,返回检验不通过的信息;

检测该路径下仍然存储的文件,其文件名称、生成时间、占用的存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用存储容量是否一致;如果一致则返回检验通过的信息;否则,返回检验不通过的信息。

本发明中,通过区块链来记录数据的修改信息,对数据的每一次修改都会由各共享端分别进行校验,只有在每一共享端都校验通过才会完成修改,从而保证发起端记载的操作内容与修改后的实际操作结果相符,避免账号绕过hive对数据进行篡改,确保修改记录的真实性,以便于审计。

附图说明

图1为本发明大数据平台数据修改系统的一个优选实施例的逻辑图;

图2为本发明大数据平台数据修改系统的工作流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

如图1所示,本发明大数据平台数据修改系统的一个优选实施例包括控制中心、大数据权限控制组件、大数据分布式文件系统、以及多个用于操作分布式文件系统的账号,所述分布式文件系统以共享数据表的形式存储数据,所述分布式文件系统对应有多个物理节点,每一账号对应有至少一个控制端,所述控制端位于物理节点上;每一物理节点上可以有多个账号的控制端,每一账号也可以有多个控制端,且多个控制端分别设置在不同的物理节点上。所述大数据分布式文件系统还对应有缓存区;

所述分布式文件系统对应有用于修改共享数据表的发起端和多个用于校验修改真实性的共享端,并对应发起端和各共享端分别生成区块链。其中,所述发起端和所述共享端均为账号的控制端;当一账号向控制中心发起对共享数据表的修改请求时,控制中心将该账号作为此次修改的操作账号,将操作账号的控制端作为此次修改的发起端,将其他共享了该共享数据表的账号作为此次修改的共享账号,将共享账号的控制端作为此次修改的共享端。

所述控制中心用于:

实时从大数据权限控制组件中同步各账号对各共享数据表的操作权限;

响应账号的修改请求;当账号发起对共享数据表的修改请求时,将该账号作为此次修改的发起端,将其他共享了该共享数据表的账号作为此次修改的共享端;

生成一次性票据令牌转发给各共享端,以及回收一次性票据令牌;所述一次性票据令牌用于在控制中心、分布式文件系统、发起端、以及各共享端之间标识和互信本次修改的请求会话;

在发起端、共享端和分布式文件系统之间传递信息,向发起端、共享端和分布式文件系统下发执行命令,以及接收发起端、共享端和分布式文件系统反馈的信息;

所述大数据权限控制组件用于管理各账号对数据表的操作权限;

所述大数据分布式文件系统用于将多个物理节点组成一个文件系统网络,通过网络进行物理节点间的通信和数据传输;

所述账号的控制端用于存储共享数据表的区块链,以及响应控制中心下发的命令;所述区块链与账号一一对应,所述区块链存储在对应的账号的一个控制端中。所述区块链用于存储对应账号对共享数据表的操作信息,所述操作信息包括操作内容和操作结果;当然,所述操作信息还可以包括操作来源账号、记录路径、操作类型、操作完成时间和一次性票据令牌token。控制中心实时同步并存有大数据平台上各账号可操作的共享数据表范围。

当账号的控制端作为发起端时,用于:

向控制中心发起修改请求;

接受控制中心返回的本次请求的应答信息;

向大数据文件系统上的缓存区发起修改数据文件的操作请求;

修改数据过程中,将本次修改信息写入区块,并串联上次的区块链形成新的区块链;

修改数据过程中,向共享账号广播校验区块链的请求;

接受控制中心反馈的修改校验结果,如果成功即归档并更新区块链,失败则丢弃本次区块,将区块链回退到上次的状态;

当账号的控制端作为共享端时,用于:

接受控制中心转发的账号的修改请求;

检查确认其服务状态是否正常,并向控制中心反馈是否同意本次修改请求;

接受修改发起账号发起的校验区块链信息的请求,并访问缓存区上修改后的副本数据,校验修改账号广播的区块链中本次区块信息是否和修改数据内容一致,并反馈校验结果给控制中心;

所述缓存区用于:

临时保存被修改的数据表的副本数据;

允许修改发起账号对副本数据进行修改;

允许共享账号读取副本数据;

在控制中心下发覆盖写入新数据的指令时,将被修改的副本数据的路径加锁拒绝应用访问,待原共享数据表路径下的数据文件删除后,再将副本数据移动到原共享数据表的数据路径中,最后解除锁,允许应用访问;

在控制中心下发回退数据的指令时,将被修改过的副本数据删除,并重新从分布式文件系统上原共享数据表的路径下复制一份数据放入缓存区的路径中。

所述分布式文件系统生成有用于记录数据表修改信息的审计数据表,所述审计数据表对应有有唯一行号字段“rowId”、唯一字段“提供者账号签名”和唯一字段“生成时间”;所述“rowId”字段是自步长为1的增长序列,用于记录被修改的数据范围;所述“提供者账号签名”字段用于记录发起端的账号签名,所述“生成时间”用于记录数据的修改时间;在执行完所述步骤S7后,还将相关的操作信息写入审计数据表。

如图2所示,本实施例的数据修改过程包括以下步骤:

步骤S1、发起端向控制中心发出对一共享数据表的修改请求。

所述控制中心同步有各账号对共享数据表的操作权限;所述修改请求的内容包括修改的请求修改的账号签名、操作类型和操作内容,修改的操作类型包括追加操作、新增操作和删除操作。

其中,追加操作用于在共享数据表的文件中追加内容,为防止篡改数据,追加操作只能在文件的结尾追加内容,而不能在文件的中间追加内容。

新增操作用于在共享数据表中新增加文件。

删除操作用于删除共享数据表中的部分或全部文件,删除全部文件时,操作内容为“All”,删除部分文件时,操作内容为文件列表list,list中的文件即为请求删除的文件。

步骤S2、控制中心验证发起端是否有该共享数据表的修改权限;如果有修改权限则执行步骤S4,否则,拒绝本次修改请求。

步骤S3、控制中心生成一次性票据令牌token,并检查各共享端是否满足本次修改的操作要求;如果满足要求则执行步骤S4;否则,控制中心拒绝本次修改请求,并通知发起端。其中,生成一次性票据令牌token的目的在于在控制中心、分布式文件系统以及各账号之间标识和互信本次修改的请求会话。检查各共享端是否满足本次修改的操作要求的方法包括:

Hadoop大数据平台的控制中心向各共享端发送一次性票据令牌和请求修改数据的通知,请求修改数据的通知包括修改请求的内容;

各共享端收到通知后检查其区块链所在的控制端是否满足操作要求,如满足操作要求,则向控制中心返回同意修改的信息,否则,向控制中心返回拒绝修改的信息;如果各共享端都返回同意修改的信息,则判定各共享端都满足操作要求。

步骤S4、控制中心将发起端的修改请求和一次性票据令牌token发给分布式文件系统hdfs,同时向发起端返回同意修改的通知,允许发起端对共享数据表进行修改操作;发起端先从分布式文件系统hdfs中复制一份共享数据表的数据作为副本数据存放在分布式文件系统hdfs用于修改的缓存区的独立路径中,然后通过SQL组件或非SQL组件在缓存区中对副本数据进行操作。并将本次修改的操作信息写入一个新的区块,把新的区块连接在发起端对应的区块链的末端,生成一个新的区块链,并将新生成的区块链广播给各共享端。

步骤S5、各共享端收到新生成的区块链后,分别根据其区块链记录的信息对本次操作的真实性进行校验,并返回校验是否通过的信息;如果各共享端均返回校验通过,则执行步骤S6;否则,执行步骤S7。各共享端对本次操作的真实性进行校验的方法为:

各共享端收到本次修改新生成的区块链的广播后,将修改后的共享数据表的数据信息和该账号的区块链中上次区块的操作结果进行比对,找出被修改的部分;其中,所述共享数据表的数据信息和所述操作结果均包括文件名称、生成时间和占用的存储容量信息;再读取新生成的区块链中本次区块记录的本次修改的操作信息,检查被修改的部分是否和本次区块记录的操作信息一致,如果一致则返回校验通过的信息,否则,返回校验不通过的信息。

具体的,对追加操作的真实性进行校验包括:

从分布式文件系统hdfs上找出共享数据表中本次修改过的文件,并比对本次区块信息的操作内容中记录的操作文件(即本次修改请求中请求修改的文件)列表,是否完整地包含在这些本次修改过的文件中;如果是,说明对本次区块的操作内容中记录的文件均进行了修改,继续校验操作内容是否相符;否则,说明对本次区块的操作内容中记录的文件未全部进行修改,停止校验,返回校验不通过的信息。

然后,对本次未修改过的各文件,依次比较该文件的文件名称、生成时间、占用存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用的存储容量信息是否一致;如果一致说明没有对本次未修改的文件进行篡改,继续进行校验,否则,说明对本次未修改的文件进行了篡改,停止校验,返回校验不通过的信息。

之后,读取本次区块的操作内容中记录的各操作文件,依次找到各操作文件在本次追加的数据,检查写入数据的账号签名和本次区块记录的账号是否一致;如果不一致则返回校验不通过的信息,如果一致则继续检查该操作文件在本次追加之前已有的数据的账号写入数据行号范围和是否与上次区块的操作结果中记录的信息一致;如果一致说明对于没有修改原文件已有的数据,则继续校验追加的内容是否和操作内容相符,否则,说明对原文件已有的数据进行了篡改,停止校验,返回校验不通过的信息。

最后,依次读取各操作文件,检查本次追加的信息和与本次区块中记录的操作内容和操作结果是否一致;如果一致则返回校验通过的信息;否则,返回校验不通过的信息。

对新增操作的真实性进行校验的方法包括:

依次检查在上次区块的操作结果记录的各文件,其文件名称、生成时间、占用的存储容量信息是否和本次区块的操作内容中记录的文件名称、生成时间、占用的存储容量信息一致,并检测文件范围是否完整;如果信息一致且文件范围完整,说明没有对共享数据表中原有的文件进行修改,未发现操作结果与操作内容不相符,继续进行校验;否则,说明对共享数据表中原有的文件进行了篡改,停止校验,返回校验不通过的信息。

检查在上次区块的操作结果中未记录的文件是否记录在本次区块的操作内容中,并依次检查其数据文件中的账号签名、生成时间文件内容是否和本次区块的记录的操作来源账号、生成时间信息一致,操作内容对应的操作结果是否与本次区块中操作结果记录的信息一致;如果一致说明操作结果与操作内容相符,返回校验通过的信息;否则,说明操作结果与操作内容不相符,返回校验不通过的信息。

对删除操作的真实性进行校验的方法包括:

当操作内容为“All”时,检查共享数据表的路径下是否还存储有文件;如果未存储文件说明共享数据表的数据已全部删除,操作结果与操作内容相符,返回校验通过的信息;否则,说明操作结果与操作内容不相符,返回校验不通过的信息。

当操作内容为文件列表list时,检查共享数据表的路径下是否存储有list中的文件,如果未发现list中的文件,说明list中的文件已全部删除,未发现操作结果与操作内容不相符,继续进行校验;否则,说明操作结果与操作内容不相符,停止校验,返回校验不通过的信息。

检测该路径下仍然存储的文件,其文件名称、生成时间、占用的存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用存储容量是否一致;如果一致说明没有对共享数据表中未删除的文件进行修改,操作结果与操作内容相符,返回校验通过的信息;否则,说明对共享数据表中未删除的文件进行了篡改,返回校验不通过的信息。

步骤S6、各共享端分别将其区块链更新到最新状态并存储;同时,分布式文件系统hdfs对修改的内容进行更新。具体如下:

控制中心通知共享数据表T的各共享端校验通过,共享数据表T的各共享端分别将其区块链更新到最新状态并存储,并返回确认信息给控制中心;控制中心通知账号A修改完成,并归档回收一次性票据令牌token,完成本次修改操作;同时,控制中心下发覆盖写入新数据的指令,首先将分布式文件系统hdfs中共享数据表T的路径锁定,拒绝任何应用访问,然后将其路径下的数据文件删除,再将用于修改的缓存区中修改后的共享数据表副本数据移动到大数据文件系统上共享数据表T的路径中,最后解除锁定,允许应用访问,完成数据覆盖操作。由于分布式文件系统hdfshdfs执行删除和移动数据文件操作仅需修改hdfs元数据,并不需要真正的移动数据,因此效率非常高(基本是毫秒级完成),账号和应用基本无感知。

步骤S7、将共享数据表的数据还原到修改前的状态,并使各共享端丢弃新的区块链;使发起端丢弃本次区块,将区块链回退到修改前的状态。具体如下:

控制中心向共享数据表的各共享端广播操作失败的信息,并向分布式文件系统hdfs发起回退操作,将缓存区中共享数据表的副本数据删除,并重新从hdfs上原路径下复制一份共享数据表的数据放入缓存区的路径中,从而将数据还原到修改前的状态,由于本操作不涉及对hdfs上原本数据的修改,所以不会影响账号和应用使用。各共享端收到失败信息后,丢弃新的区块链;发起端也丢弃本次区块,将区块链回退到修改前的状态。

采用以上修改方法对大数据平台的hive数据的修改进行限制后,如果想篡改数据,则必须对所有的共享端的数据进行篡改,否则将无法修改成功,因此,只需要适当设置共享端的数量,即可避免对数据的私自篡改,从而记录下每次数据修改的修改账号和修改内容,以便于审计。例如,设置共享数据表的共享端的数量不少于20个时,私自篡改数据就需要先找出这20个共享端,再分别对20个共享端的数据进行修改,这个难度是非常大的,几乎是不可能完成的;对于十分重要的数据,还可进一步增加共享端的数量。从而能够在账号较少的大数据平台保障数据修改信息的真实性。

为便于审计,在修改完成后,还可将相关的操作信息写入表T。在审计时,只需要通过hive查看共享数据表中的“rowId”字段、“提供账号签名”字段和“生成时间”字段即可找到每条数据修改的来源账号和操作时间,从而方便进行审计。

本发明大数据平台数据修改的修改方法的一个优选实施例包括:

通过区块链记录共享数据表的修改信息;

向控制中心发出对一共享数据表的修改请求;

接收来自于控制中心的控制指令;

当控制指令为允许修改的指令时,对该共享数据表的数据进行修改操作,并将本次修改的操作信息写入一个新的区块,把新的区块连接在发起端对应的区块链的末端,生成一个新的区块链,并将新生成的区块链广播出去,以便于对修改进行校验;

当控制指令为修改完成的指令时,使分布式文件系统对修改的内容进行更新;

当控制指令为回退操作的指令时,将共享数据表的数据还原到修改前的状态,并丢弃本次区块,将区块链回退到修改前的状态。

本发明响应大数据平台数据修改的修改响应方法的一个优选实施例包括:

实时从大数据权限控制组件中同步各账号对各共享数据表的操作权限;

响应账号的修改请求;当账号发起对共享数据表的修改请求时,将该账号作为此次修改的发起端,将其他共享了该共享数据表的账号作为此次修改的共享端;

生成一次性票据令牌转发给各共享端,以及回收一次性票据令牌;

在发起端、共享端和分布式文件系统之间传递信息,向发起端、共享端和分布式文件系统下发执行命令,以及接收发起端、共享端和分布式文件系统反馈的信息。

本发明大数据平台数据修改的缓存方法的一个优选实施例包括:

在分布式文件系统设置有独立路径的缓存区;

将请求修改的共享数据表复制一份副本数据存放于缓存区的独立路径中;

提供发起端对缓存区中数据副本的修改,以及在修改后提供给各共享端校验修改信息;

在控制中心下发覆盖写入新数据的指令时,缓存区首先将被修改的副本数据的路径加锁拒绝应用访问,待原共享数据表路径下的数据文件删除后,再将缓存区中已经修改并校验有效的副本数据移动到原共享数据表的数据路径中,最后解除锁,允许应用访问;

在控制中心下发回退数据的指令时,缓存区将被修改过的副本数据删除,并重新从分布式文件系统上原共享数据表的路径下复制一份数据放入缓存区的路径中。

本发明大数据平台数据修改的校验方法的一个优选实施例包括:

存储共享端的账号对应的区块链,所述区块链用于记录共享数据表的修改信息;

各共享端接受控制中心转发的发起端的修改请求,检查是否满足本次修改的操作要求;如果满足操作要求则向控制中心反馈同意本次修改请求;否则,向控制中心反馈拒绝本次修改请求;

各共享端接受发起端广播的新生成的区块链,并访问缓存区上修改后的副本数据,将其和自身区块链中上次区块的操作结果进行比对,找出被修改的部分;其中,所述共享数据表的数据信息和所述操作结果均包括文件名称、生成时间和占用的存储容量信息;再读取新生成的区块链中本次区块记录的本次修改的操作信息,检查被修改的部分是否和本次区块记录的操作信息一致,如果一致则返回校验通过的信息,否则,返回校验不通过的信息。

所述分布式文件系统生成有用于记录数据表修改信息的审计数据表,所述审计数据表对应有有唯一行号字段“rowId”、唯一字段“提供者账号签名”和唯一字段“生成时间”;所述“rowId”字段是自步长为1的增长序列,用于记录被修改的数据范围;所述“提供者账号签名”字段用于记录发起端的账号签名,所述“生成时间”用于记录数据的修改时间。在修改完成后,还将相关的操作信息写入审计数据表。

对追加操作的真实性进行校验包括:

从分布式文件系统上找出数据表中本次修改过的文件,并比对本次区块信息的操作内容中记录的操作文件列表,是否完整地包含在这些本次修改过的文件中;如果是则继续校验,否则,返回检验不通过的信息;

然后,对本次未修改过的各文件,依次比较该文件的文件名称、生成时间、占用存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用的存储容量信息是否一致;如果一致则继续校验,否则,返回检验不通过的信息;

检查在上次区块的操作结果中未记录的文件是否记录在本次区块的操作内容中,并依次检查其数据文件中的账号签名、生成时间文件内容是否和本次区块的记录的操作来源账号、生成时间信息一致,操作内容对应的操作结果是否与本次区块中操作结果记录的信息一致;如果一致说明操作结果与操作内容相符,返回校验通过的信息;否则,说明操作结果与操作内容不相符,返回校验不通过的信息。

之后,读取本次区块的操作内容中记录的各操作文件和审计数据表的“rowId”字段,依次找到各操作文件被修改的行号范围;检查文件中写入数据的账号签名和本次区块记录的账号是否一致;如果不一致则返回检验不通过的信息,如果一致则继续检查该操作文件被修改的行号范围之前的数据的账号写入数据行号范围和是否与上次区块的操作结果中记录的信息一致;如果一致则继续校验,否则,返回检验不通过的信息;

最后,依次读取各操作文件,检查本次区块中操作结果记录的最大行号是否等于上次区块中操作结果记录的最大行号加上本次区块中操作内容记录的追加写入的数据行号的最大值;如果相等则返回检验通过的信息;否则,返回检验不通过的信息。

对新增操作的真实性进行校验的方法包括:

依次检查在上次区块的操作结果记录的各文件,其文件名称、生成时间、占用的存储容量信息是否和本次区块的操作内容中记录的文件名称、生成时间、占用的存储容量信息一致,并检测文件范围是否完整;如果信息一致且文件范围完整则继续校验,否则,返回检验不通过的信息;

检查在上次区块的操作结果中未记录的文件是否记录在本次区块的操作内容中,并依次检查其数据文件中的账号签名、生成时间文件内容是否和本次区块的记录的操作来源账号、生成时间信息一致,操作内容对应的操作结果是否与本次区块中操作结果记录的信息一致;如果一致则返回检验通过的信息;否则,返回检验不通过的信息。

对删除操作的真实性进行校验的方法包括:

当操作内容为删除所有文件时,检查该数据表的路径下是否还存储有文件;如果未存储文件则返回检验通过的信息;否则,返回检验不通过的信息;

当操作内容为删除部分文件时,检查数据表的路径下是否存储有相应的文件,如果未存储相应的文件则继续校验,否则,返回检验不通过的信息;

检测该路径下仍然存储的文件,其文件名称、生成时间、占用的存储容量信息与上次区块的操作结果中记录的文件名称、生成时间、占用存储容量是否一致;如果一致则返回检验通过的信息;否则,返回检验不通过的信息。

附图1所示的框图和附图2所示的流程图中,框图或流程图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。

本发明未描述部分与现有技术一致,在此不做赘述。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明的专利保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号