CN107612910A - 一种分布式文件数据访问方法及系统 - Google Patents
一种分布式文件数据访问方法及系统 Download PDFInfo
- Publication number
- CN107612910A CN107612910A CN201710846280.1A CN201710846280A CN107612910A CN 107612910 A CN107612910 A CN 107612910A CN 201710846280 A CN201710846280 A CN 201710846280A CN 107612910 A CN107612910 A CN 107612910A
- Authority
- CN
- China
- Prior art keywords
- information
- user
- client
- encryption information
- control node
- 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.)
- Pending
Links
Abstract
本发明提供一种分布式文件数据访问方法,所述方法通过使用客户端,核心控制节点,子群集控制节点各自的主密钥Master Key以及信息交互过程中的会话密钥对数据验证信息和访问请求信息进行加密,对用户身份信息进行了多次验证,同时对用户请求进行了加密传输。本发明提供的方法,通过对客户端的文件数据访问进行加密验证,实现了分布式系统中对文件访问的加密验证,提升了分布式系统的数据安全性。
Description
技术领域
本发明涉及分布式存储技术领域,更具体地,涉及一种分布式文件数据访问方法及系统。
背景技术
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的管理节点及所存储的数据各自分布在不同的节点上,这些节点之间通过网络相连,并可为多个客户端提供文件的存储、读写、删除等服务。通常的分布式文件系统主要由元数据服务器、数据块服务器和客户端组成,元数据服务器用来维护一个全局的命名空间,数据块服务器是分布式文件系统中用来直接存储数据的地方,客户端是用户和文件系统的接口,通常客户端都能使用户透明的进行I/O操作。
伴随云存储业务的不断增加,存储数据的规模也在不断增加,分布式文件系统也需要由大量的节点组成,这就使得分布式文件系统具有易扩展、高可靠性、安全接入等特点。目前应用较为广泛的分布式文件系统主要有GFS和Hadoop分布式文件系统(HDFS)。HDFS采用了主/从架构来管理文件系统,一个HDFS集群是由一个NameNode节点和一定数量的DataNode节点组成,NameNode是HDFS的主服务器,主要负责管理文件系统的元数据,DataNode是主要负责存储文件的数据块。具体架构如图1所示,NameNode节点是整个分布式文件系统的核心服务器,主要功能是管理用户文件的元数据信息,维护着整个文件系统树和这个树内所有的文件和索引目录。此外,NameNode节点还会负责数据块的管理,如新建数据块、备份数据块、删除多余的数据块以及垃圾回收等内容,为了保证元数据的可靠性,NameNode还会将元数据信息以镜像文件和编辑日志两种形式保存到硬盘中。
DataNode节点是存储文件的数据块,但并未记录数据块到文件的映射,因此客户端是通过NameNode获取文件的数据块信息和位置后,才能与DataNode联系进行文件的读写操作。每个DataNode节点都会定时向NameNode发送心跳信息和数据块报告状态,如果NameNode发现某个DataNode节点失效,就会将失效节点上的数据块通过其它副本复制到一个正常的DataNode中,保证数据块的副本数达到指定的数量。
通过分析HDFS架构的扩展性、性能、可靠性、安全性等,目前的HDFS架构使用单一的NameNode节点来管理整个HDFS集群的命名空间会使系统控制逻辑比较简单、方便管理,但是也会导致可靠性和安全性方面的缺陷。在分布式系统中,虽然文件的元数据大小相对于NameNode的存储空间来说是很小的,但是整个文件系统50%到80%的处理量都是对元数据的处理,所以分布式文件系统对元数据的服务性能大大制约着其文件的处理能力。所以在大规模HDFS应用的场景中,Namenode节点逐渐会变的不堪重负,并且HDFS在设计之初并未考虑安全因素,这种架构上的缺陷都会成为整个系统的瓶颈所在。
现有技术中,由于HDFS设计初期并没有考虑安全因素,其假定了服务器集群总是处于可信的环境中,并由可信用户使用的。面对分布式存储系统应用越发广泛的趋势,越来越多意外的或有意的安全问题出现了。例如:合法用户会误操作删掉大量有用的数据,非法用户可以冒充某个合法用户访问该用户在HDFS中的数据。这些安全问题都制约着传统分布式文件系统的发展。
发明内容
为解决现有技术中分布式文件系统设计初期并没有考虑安全因素,非法用户可以冒充某个合法用户访问该用户在分布式文件系统中的数据的问题,提出一种分布式文件数据访问方法及系统。
根据本发明的一个方面,提供一种分布式文件数据访问方法,包括:
接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户Master Key加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点MasterKey加密所述第一会话密钥和该用户ID信息,获得第二加密信息;
将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名;
根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权;
从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
其中,还包括目标子集群控制节点信息计算步骤,包括:通过文件名信息,根据ASCII码表将所述请求文件名中单个字符转换为对应的数字,根据所述对应的数字,计算目标子群集标识。
其中,还包括用户注册步骤,具体包括:
客户端使用Https协议与核心控制节点相连,注册用户ID信息,用户Master Key信息和访问控制列表信息;
其中,所述用户Master Key信息通过用户登录密码在客户端进行哈希运算获得。
本发明还提供一种分布式文件数据访问方法,包括:
接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息,
使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限;
根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
其中,还包括访问控制列表信息请求步骤,所述目标子集群控制节点对用户认证后向所述核心控制节点请求用户的访问控制列表信息。
本发明还提供一种分布式文件数据访问方法,包括接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性;根据客户端指令对储存块进行读取,写入操作。
根据本法明的另一方面,提供一种核心控制节点,包括:
第一加密模块,接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户Master Key加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点Master Key加密所述第一会话密钥和该用户ID信息,获得第二加密信息;
通信模块,用于将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名;
第一解密模块,用于根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权;
第二加密模块,用于从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
本发明还提供一种子群集控制节点,包括:
接收模块,用于接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息;
第二解密模块,用于使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限;
访问令牌生成模块,用于根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
本发明还提供一种数据节点,其特征在于,包括:
验证模块,用于接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性;
执行模块,用于根据客户端指令对储存块进行读取,写入操作。
最后,本发明提供一种分布式文件数据访问系统,包括一个核心控制节点,至少一个子群控制节点和至少一个数据节点。
本发明提供的方法,通过对客户端的文件数据访问进行加密验证,实现了分布式系统中对文件访问的加密验证,提升了分布式系统的数据安全性。
附图说明
图1为现有技术中分布式文件系统的结构示意图;
图2为本发明实施例提供的一种分布式文件数据访问方法中核心控制节点的流程图;
图3为本发明实施例提供的一种分布式文件数据访问方法中子集群控制节点的流程图;
图4为本发明实施例提供的一种分布式文件数据访问方法中数据节点流程图;
图5为本发明实施例提供的一种分布式文件数据访问方法中文件写入的信令交互图;
图6为本发明实施例提供的一种核心控制节点的结构图;
图7为本发明实施例提供的一种子群集控制节点的机构图;
图8为本发明实施例提供的一种数据节点的结构图;
图9为本发明实施例提供的一种分布式文件数据访问系统的结构图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
参考图2,图2为本发明实施例提供的一种分布式文件数据访问方法中核心控制节点的流程图,所述方法包括:
S201,接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户Master Key加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点MasterKey加密所述第一会话密钥和该用户ID信息,获得第二加密信息。
具体的,用户通过客户端将自己的User ID发送给核心控制节点,核心控制节点通过查询本地用户账户数据库来核查是否有该用户。若该用户已经注册,核心控制节点会生成一个会话密钥Session Key1,该会话密钥只在一段时间内有效,并且其作为客户端和核心控制节点之间的会话密钥。若该用户未注册,则核心控制节点丢弃该请求报文。
核心控制节点会将生成的Session Key1进行复制,并从本地数据库中调取出用户的Master Key和自己的Master Key,使用用户的Master Key加密Session Key1,用自己的Master Key加密包含Session Key1和用户User ID的数据包。然后核心控制节点将两个分别被用户Master Key和自己的Master Key加密的的信息发送回客户端,该信息可表示为Eclient Master Key(Session Key1)和E核心Master Key(Session Key1+User ID)。
S202,将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名。
具体的,客户端收到核心控制节点返回的信息后,使用用户自己的Master Key解密出Session Key1,然后用Session Key1加密User ID和请求的文件名生成ESession Key1(User ID+请求的文件名),连同E核心Master Key(Session Key1+User ID)一起发送给核心控制节点。
S203,根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权。
具体的,核心控制节点使用自己的Master Key解密E核心Master Key(Session Key1+User ID)得到Session Key1和User ID,然后再使用Session Key1解密ESession Key1(User ID+请求的文件名)得到User ID和请求的文件名,对比两次得到的User ID是否相同,若相同则完成了核心控制节点对用户的认证,并给该用户授予其对文件所属子集群控制节点的访问权限。
S204,从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
具体的,核心控制节点查找用户数据库并提取出该用户的访问控制列表(AccessControl List,ACL)信息,判断是否其对该子集群有访问权限,若没有则文件系统暂停对该用户的服务。若有则核心控制节点再次生成一个Session Key2并对其复制,使用该用户的Master Key加密其中一个Session Key2和子集群控制节点地址,使用所要访问的子集群控制节点的Mater Key加密另一个Session Key2和User ID,然后将EClient Master Key(SessionKey2+子集群地址)和E子集群Master Key(Session Key2+User ID)一并发送给客户端。
通过此方法,实现了在分布式系统中的核心控制节点中的用户身份认证以及对用户访问权限的加密式发放,提升了分布式系统的数据安全性。
在上述实施例的基础上,还包括目标子集群控制节点信息计算步骤,包括:通过文件名信息,根据ASCII码表将所述请求文件名中单个字符转换为对应的数字,根据所述对应的数字,计算目标子群集标识。
具体的,核心控制节点受到用户请求的文件名后,会解析所请求的文件名以判定文件所属的子集群,判别方法是:核心控制节点根据美国信息交换标准码ASCII码表逐个将文件名中的单个字符转换成对应的数字,求和所有对应的数字,并将求和结果除以子集群总数,得到的取余结果为文件所属子集群的标识,该子集群的标识即为子集群控制节点的ID。
在传统的单一控制节点的分布式文件系统,元数据的管理主要采用集中式的管理机制,文件的元数据信息全部保存在唯一的控制节点中,并采用树结构来记录文件系统的目录结构并采用二分查找法来查找同级目录下的文件,虽然这种元数据管理机制简单高效,但面对海量数据存储时就难免会使单一的控制节点成为文件系统的瓶颈。因此本发明的文件系统中采用二级元数据管理机制,将文件的目录信息和文件的数据块位置信息分开存储,并分别使用散列算法和负载平衡算法来进行元数据的分级管理。
在分布式文件系统中,文件的元数据主要包括:文件的完整路径、文件的属性和文件的数据块列表。本实施例将文件的元数据分成目录信息和数据块信息。目录信息包括文件名、文件大小、文件的父目录完整路径、文件的访问控制权限、文件的创建时间和修改时间。数据块信息主要为数据块位置信息,其记录的是文件数据块与数据节点的映射关系。由于文件的数据块信息会远大于目录信息,故本系统对元数据目录信息与数据块信息进行不同策略的管理。
本系统将文件的目录信息和文件的数据块信息分开存储,二级元数据管理机制将按照不同的策略来分布这些元数据。首先,第一级元数据分布算法是将文件所在目录的绝对路径哈希计算后,根据该结果代入分布函数得到该文件目录信息存储的子集群控制节点的ID。然后第二级元数据分布算法是根据当前子集群的负载情况为数据块位置信息分配一个合适的子集群控制节点的ID。
第一级元数据分布算法的目标是将元数据信息中的目录信息有效地分布到各子集群控制节点中。首先将文件所在目录的绝对路径进行哈希计算,得到一个哈希结果,如下式:
result=Hash(pathname)
再将得到的结果带入分布函数,得到该文件目录信息存储的子集群控制节点的ID,如下式:
ID=f(result)
在此过程中哈希函数可以使输出结果在输入变量pathname的取值范围内获得一种平滑的随机分布,再通过分布函数的映射就可把文件系统的目录数据均匀的分布到各个子集群的控制节点中了。例如根据美国信息交换标准码ASCII码表逐个将文件绝对路径中的单个字符转换成对应的数字,求和所有对应的数字,并将求和结果除以子集群总数,得到的取余结果为文件所属子集群的标识,该子集群的标识即为子集群控制节点的ID。该过程就是最简单的一种第一级元数据分布算法。
通过此方法,将文件的元数据中的目录信息和数据块信息分别储存,通过验证后获取对目录信息的访问权限,计算出文件元数据中数据块信息的储存位置,得到文件元数据中的数据块信息储存路径,提升了分布式系统的文件数量扩展能力,降低了分布式系统中核心控制节点的访问压力。
在上述实施例的基础上,所述方法还包括用户注册步骤,具体包括:客户端使用Https协议与核心控制节点相连,注册用户ID信息,用户Master Key信息和访问控制列表信息;其中,所述用户Master Key信息通过用户登录密码在客户端进行哈希运算获得。
具体的,客户端使用Https协议连接核心控制节点注册自己的User ID,登录密码,文件访问域,核心控制节点会将用户的注册信息存入本地的关系型数据库中。User ID可表示具体用户的身份信息,登录密码是一种用户所独有的Long-term Key,由于long-termKey加密的数据不应该在网络上传输,一旦Long-term Key加密的数据包被恶意网络监听者截获,原则上,只要有充足的时间都是可以通过计算获取加密用的Long-term Key。此外,登录密码仅仅限于用户知晓,甚至对于核心控制节点都是保密的,因此需要将登录密码在本地进行哈希运算得到一个Hash code,该Hash code就是核心控制节点验证用户登录密码的Master Key。文件访问域是用户注册时申请加入的域,加入成功后核心控制节点会为其分配一个角色,用户的访问权限将受到域、角色、用户三个访问控制信息的共同限制,可用BNF范式描述其ACL接入控制层的结构,如:
<ACL>::={<ACL>}
<ACE>::=<subjectID><right>{<restriction>}
<subjectID>::=<domain>|<role>|<userID>
<right>::=<read>|<write>
<restriction>::=restriction type><restriction value>
<restriction type>::=time stamp>|<file type>|<file ID>|<block ID>
例如,某个ACL表示为ACL=<Domain:A><Role:B><right:read><ObjectType:C><timestamp:24>,其表示文件访问域A且角色为B的用户都可对文件类型为C的文件进行读操作,且根据该ACL进行权限判断产生的块访问令牌的有效期为24小时。
通过此方法,通过用户的密码运算生成客户端的Master key,用户只需要定期更新运算方法而不用更换密码,就可以保证核心控制节点数据库保存用户密码,同时提升了分布式系统用户访问的安全性。
参考图3,图3为本发明实施例提供的一种分布式文件数据访问方法中子集群控制节点的流程图,所述方法包括:
S301,接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息。
具体的,客户端收到信息后使用其Master Key解密EClient Master Key(Session Key2+子集群地址)得到Session Key2和子集群控制节点地址,并创建一个由User ID、Timestamp和请求文件名组成的认证包ESession Key2(User ID+Timestamp+请求文件名),使用SessionKey2对其进行加密,然后连同E子集群Master Key(Session Key2+User ID)发送给具有该地址的子集群控制节点。
本系统中,数据的第二级元数据分布算法的目标是将元数据信息中的数据块信息合理的分布到各个子集群控制节点中,本级的分布算法不在采用哈希函数进行散列分布,而是需要根据当前子集群的负载情况分布的。本文件系统中每个子集群控制节点会定期向核心控制节点利用心跳信号上报其负载情况,包括其CPU利用率、内存利用率等、核心控制节点收集到所有的子集群负载情况后,发送给各个子集群控制节点。子集群控制节点会维持一个子集群负载列表,根据这个列表选择一个负载最轻的子集群控制节点,将文件的数据块信息分布到该节点中,并将该节点的ID记录在该文件目录信息存储的节点中。
S302,使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限。
子集群控制节点收到ESession Key2(User ID+Timestamp+请求文件名)和E子集群Master Key(Session Key2+User ID)后,使用其Master Key解密E子集群Master Key(SessionKey2+User ID)得到Session Key2和User ID,然后使用Session Key2解密ESession Key2(UserID+Timestamp+请求文件名)得到User ID、Timestamp和请求文件名,对比两个User ID是否一致,若一致则完成了子集群控制节点对用户的认证。
S303,根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
具体的,子集群控制节点结合该用户的ACL信息生成块访问令牌,令牌的格式如下
BlockTokenID={timestamp,keyID,ownerID,blockID,accessModes}
TokenAuthenticator=HMAC-SHA1(key,TokenID)
BlockAccessToken={TokenID,TokenAuthenticator}
其中KeyID是子集群控制节点计数器所产生的值,在子集群控制节点每生成一个认证令牌时都会令计数器值自动加1,这样就能确保每一个认证令牌都会是不同。OwnerID为用户的User ID。块访问令牌中的accessModes、timestamp、blockID字段与ACL中的<right>、<timestamp>、<block ID>是相同的,分别表示该用户访问该文件或者存储块的方式、令牌有效期、存储块编号。
子集群控制节点将生成的上述令牌传送给客户端并返回该请求文件所属的存储块的地址,并且将令牌中的密钥key通过心跳信号传送给相应的数据节点。客户端收到信息后再将需要访问存储块的block ID以及相应的块访问令牌一同传给数据节点。
通过此方法,实现了子集群控制节点中的用户验证,根据二级元数据向客户端提供数据节点访问权限,提升了分布式系统的数据安全性。
在上述实施例的基础上,还包括访问控制列表信息请求步骤,所述目标子集群控制节点对用户认证后向所述核心控制节点请求用户的访问控制列表信息。
具体的,子集群控制节点对用户完成认证后向核心控制节点请求该用户的ACL信息,核心控制节点在接收到子集群控制节点的请求后,向子集群控制节点发送该用户ID的ACL信息。
参考图4,图4为本发明实施例提供的一种分布式文件数据访问方法中数据节点流程图,所述方法包括:
S401,接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性。
S402,根据客户端指令对储存块进行读取,写入操作。
具体的,客户端收到子集群控制节点的块访问令牌后,将需要访问存储块的blockID以及相应的块访问令牌一同传给数据节点,数据节点收到后验证该令牌的合法性,验证完成后便可允许客户端对其存储块进行读取、写入等操作。
在文件读取操作中,客户端发送访问令牌并向相应的数据节点服务器请求数据,文件被分为大小一致的分片,进程为客户端并发地返回文件的所有分片。与原HDFS操作一样,当读到一个块的结尾时,就会断开到数据节点的链接,然后继续选择下一个数据节点来获取下一个数据块。当客户端直接连接到数据节点中找到相应的块进行文件的读取时,首先会验证校验码,检测所读取的数据是否有效,如果有效则直接进行读取,如果无效,则需向子集群控制节点发出请求,到备份的数据节点服务器中读取数据,然后由备份数据节点将有效数据同步到主数据节点中。
在数据写入过程中如图5所示,子集群控制节点完成一系列验证工作,确认允许客户端写文件后,向数据节点发出数据块创建指令,返回给客户端数据节点的块地址。
接着,客户端与数据节点建立连接,请求写入文件到子集群控制节点所分配的数据块中,数据节点分配块中实际可写入的物理地址,设置偏移ID,将文件分成大小一致的分片,并发上传到数据节点的上传缓冲中。
当完成上传后,客户端即可认为写入完成,即可断开与数据节点的连接,后续的操作将对客户端透明。
当数据节点接收到客户端的文件缓存后,在相对空闲的时候,将文件按顺序异步写入热备份数据节点的数据块中,数据节点与其热备份数据节点连接,以同样的方式写入备份数据节点中。主备数据节点写入均完成后,主数据节点通知子集群控制节点写入成功并更新元数据,数据节点删除该文件占据的上传缓存空间。
子集群控制节点与核心控制节点联系,将文件索引写入索引系统中。假如主数据节点或者备份数据节点中有一个从上传缓存空间中写入到磁盘中失败,主数据节点将会向子集群控制节点请求分配另一个数据块进行写入。
通过此方法,在两次用户身份验证后,实现了对分布式文件数据的读写操作,提升了分布式系统文件访问的安全性以及系统的可扩展性。
参考图6,图6为本发明实施例提供的一种核心控制节点的结构图,所述节点包括:第一加密模块61、通信模块62、第一解密模块63和第二加密模块64。
其中,第一加密模块61用于接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户Master Key加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点Master Key加密所述第一会话密钥和该用户ID信息,获得第二加密信息。
具体的,用户通过客户端将自己的User ID发送给核心控制节点,核心控制节点通过查询本地用户账户数据库来核查是否有该用户。若该用户已经注册,核心控制节点会生成一个会话密钥Session Key1,该会话密钥只在一段时间内有效,并且其作为客户端和核心控制节点之间的会话密钥。若该用户未注册,则核心控制节点丢弃该请求报文。
核心控制节点会将生成的Session Key1进行复制,并从本地数据库中调取出用户的Master Key和自己的Master Key,使用用户的Master Key加密Session Key1,用自己的Master Key加密包含Session Key1和用户User ID的数据包。然后核心控制节点将两个分别被用户Master Key和自己的Master Key加密的的信息发送回客户端,该信息可表示为Eclient Master Key(Session Key1)和E核心Master Key(Session Key1+User ID)。
通信模块62用于将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名。
具体的,客户端收到核心控制节点返回的信息后,使用用户自己的Master Key解密出Session Key1,然后用Session Key1加密User ID和请求的文件名生成ESession Key1(User ID+请求的文件名),连同E核心Master Key(Session Key1+User ID)一起发送给核心控制节点。
第一解密模块63用于根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权。
具体的,核心控制节点使用自己的Master Key解密E核心Master Key(Session Key1+User ID)得到Session Key1和User ID,然后再使用Session Key1解密ESession Key1(User ID+请求的文件名)得到User ID和请求的文件名,对比两次得到的User ID是否相同,若相同则完成了核心控制节点对用户的认证,并给该用户授予其对文件所属子集群控制节点的访问权限。
第二加密模块64用于从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
具体的,核心控制节点查找用户数据库并提取出该用户的访问控制列表(AccessControl List,ACL)信息,判断是否其对该子集群有访问权限,若没有则文件系统暂停对该用户的服务。若有则核心控制节点再次生成一个Session Key2并对其复制,使用该用户的Master Key加密其中一个Session Key2和子集群控制节点地址,使用所要访问的子集群控制节点的Mater Key加密另一个Session Key2和User ID,然后将EClient Master Key(SessionKey2+子集群地址)和E子集群Master Key(Session Key2+User ID)一并发送给客户端。
通过此节点,实现了在分布式系统中的核心控制节点中的用户身份认证以及对用户访问权限的加密式发放,提升了分布式系统的数据安全性。
参考图7,图7为本发明实施例提供的一种子群集控制节点的机构图。所述子集群控制节点包括:接收模块71、第二解密模块72和访问令牌生成模块73。
其中,接收模块71用于接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息。
具体的,客户端收到信息后使用其Master Key解密EClient Master Key(Session Key2+子集群地址)得到Session Key2和子集群控制节点地址,并创建一个由User ID、Timestamp和请求文件名组成的认证包ESession Key2(User ID+Timestamp+请求文件名),使用SessionKey2对其进行加密,然后连同E子集群Master Key(Session Key2+User ID)发送给具有该地址的子集群控制节点。
第二解密模块72用于使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限。
子集群控制节点收到ESession Key2(User ID+Timestamp+请求文件名)和E子集群Master Key(Session Key2+User ID)后,使用其Master Key解密E子集群Master Key(SessionKey2+User ID)得到Session Key2和User ID,然后使用Session Key2解密ESession Key2(UserID+Timestamp+请求文件名)得到User ID、Timestamp和请求文件名,对比两个User ID是否一致,若一致则完成了子集群控制节点对用户的认证。
访问令牌生成模块73用于根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
具体的,子集群控制节点结合该用户的ACL信息生成块访问令牌,令牌的格式如下
BlockTokenID={timestamp,keyID,ownerID,blockID,accessModes}
TokenAuthenticator=HMAC-SHA1(key,TokenID)
BlockAccessToken={TokenID,TokenAuthenticator}
其中KeyID是子集群控制节点计数器所产生的值,在子集群控制节点每生成一个认证令牌时都会令计数器值自动加1,这样就能确保每一个认证令牌都会是不同。OwnerID为用户的User ID。块访问令牌中的accessModes、timestamp、blockID字段与ACL中的<right>、<timestamp>、<block ID>是相同的,分别表示该用户访问该文件或者存储块的方式、令牌有效期、存储块编号。
子集群控制节点将生成的上述令牌传送给客户端并返回该请求文件所属的存储块的地址,并且将令牌中的密钥key通过心跳信号传送给相应的数据节点。客户端收到信息后再将需要访问存储块的block ID以及相应的块访问令牌一同传给数据节点。
通过此节点,实现了子集群控制节点中的用户验证,根据二级元数据向客户端提供数据节点访问权限,提升了分布式系统的数据安全性。
参考图8,图8为本发明实施例提供的一种数据节点的结构图,所述数据节点包括:验证模块81和执行模块82。
其中,验证模块81用于接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性。
执行模块82用于根据客户端指令对储存块进行读取,写入操作。
具体的,客户端收到子集群控制节点的块访问令牌后,将需要访问存储块的blockID以及相应的块访问令牌一同传给数据节点,数据节点收到后验证该令牌的合法性,验证完成后便可允许客户端对其存储块进行读取、写入等操作。
在文件读取操作中,客户端发送访问令牌并向相应的数据节点服务器请求数据,文件被分为大小一致的分片,进程为客户端并发地返回文件的所有分片。与原HDFS操作一样,当读到一个块的结尾时,就会断开到数据节点的链接,然后继续选择下一个数据节点来获取下一个数据块。当客户端直接连接到数据节点中找到相应的块进行文件的读取时,首先会验证校验码,检测所读取的数据是否有效,如果有效则直接进行读取,如果无效,则需向子集群控制节点发出请求,到备份的数据节点服务器中读取数据,然后由备份数据节点将有效数据同步到主数据节点中。
在数据写入过程中如图5所示,子集群控制节点完成一系列验证工作,确认允许客户端写文件后,向数据节点发出数据块创建指令,返回给客户端数据节点的块地址。
接着,客户端与数据节点建立连接,请求写入文件到子集群控制节点所分配的数据块中,数据节点分配块中实际可写入的物理地址,设置偏移ID,将文件分成大小一致的分片,并发上传到数据节点的上传缓冲中。
当完成上传后,客户端即可认为写入完成,即可断开与数据节点的连接,后续的操作将对客户端透明。
当数据节点接收到客户端的文件缓存后,在相对空闲的时候,将文件按顺序异步写入热备份数据节点的数据块中,数据节点与其热备份数据节点连接,以同样的方式写入备份数据节点中。主备数据节点写入均完成后,主数据节点通知子集群控制节点写入成功并更新元数据,数据节点删除该文件占据的上传缓存空间。
子集群控制节点与核心控制节点联系,将文件索引写入索引系统中。假如主数据节点或者备份数据节点中有一个从上传缓存空间中写入到磁盘中失败,主数据节点将会向子集群控制节点请求分配另一个数据块进行写入。
通过此节点,在两次用户身份验证后,实现了对分布式文件数据的读写操作,提升了分布式系统文件访问的安全性以及系统的可扩展性。
参考图9,图9为本发明实施例提供的一种分布式文件数据访问系统的结构图,所述系统包括一个核心控制节点,至少一个子集群控制节点和至少一个数据节点。
所述核心控制节点,子群控制节点和数据节点通过前面所述的实施例实现客户端对分布式文件数据访问的各种方法。
本发明提供的系统,对客户端的文件数据访问进行加密验证,实现了分布式系统中对文件访问的加密验证,提升了分布式系统的数据安全性。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分布式文件数据访问方法,其特征在于,包括:
接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户MasterKey加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点Master Key加密所述第一会话密钥和该用户ID信息,获得第二加密信息;
将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名;
根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权;
从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
2.根据权利要求1所述的方法,其特征在于,还包括目标子集群控制节点信息计算步骤,包括:
通过文件名信息,根据ASCII码表将所述请求文件名中单个字符转换为对应的数字,根据所述对应的数字,计算目标子群集标识。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括用户注册步骤,具体包括:
客户端使用Https协议与核心控制节点相连,注册用户ID信息,用户Master Key信息和访问控制列表信息;
其中,所述用户Master Key信息通过用户登录密码在客户端进行哈希运算获得。
4.一种分布式文件数据访问方法,其特征在于,包括:
接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息,
使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限;
根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
5.根据权利要求4所述的方法,其特征在于,还包括访问控制列表信息请求步骤,所述目标子集群控制节点对用户认证后向所述核心控制节点请求用户的访问控制列表信息。
6.一种分布式文件数据访问方法,其特征在于,包括:
接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性;
根据客户端指令对储存块进行读取,写入操作。
7.一种核心控制节点,其特征在于,包括:
第一加密模块,用于接收用户ID信息,判断用户是为注册用户,根据所述用户ID信息,生成第一会话密钥,从本地数据库中调取用户Master Key和核心控制节点Master Key,根据所述用户Master Key加密所述第一会话密钥,获得第一加密信息,根据所述核心控制节点Master Key加密所述第一会话密钥和该用户ID信息,获得第二加密信息;
通信模块,用于将所述第一加密信息和第二加密信息发送给客户端,以接收所述客户端返回的所述第二加密信息和通过所述第一会话密钥加密的第三加密信息,所述第三加密信息中包含待验证的用户ID信息和请求文件名;
第一解密模块,用于根据第一会话密钥解密所述第三加密信息,获得所述待验证的用户ID信息,根据所述用户ID信息和所述待验证的用户ID信息的一致性判断获知该用户具有目标子群控制节点的访问权;
第二加密模块,用于从本地数据库中调取用户的访问控制列表信息,生成第二会话密钥,根据所述用户Master Key加密第二会话密钥,获得第四加密信息,根据目标子集群Master Key加密第二会话密钥和用户ID信息,生成第五加密信息;并将所述第四加密信息和所述第五加密信息发送给客户端。
8.一种子群集控制节点,其特征在于,包括:
接收模块,用于接收客户端发送的所述第五加密信息和根据所述第二会话密钥加密用户ID信息、时间戳和所述文件名信息获得的第六加密信息;
第二解密模块,用于使用所述目标子集群Master Key对所述第五加密信息进行解密,使用所述第二会话密钥对所述第六加密信息进行解密,判定所述第五加密信息中的用户ID信息和所述第六加密信息中的用户ID信息的一致性,认证用户的访问权限;
访问令牌生成模块,用于根据所述用户的访问控制列表信息,生成块访问令牌,向客户端和目标数据节点发送所述块访问令牌。
9.一种数据节点,其特征在于,包括:
验证模块,用于接收客户端发送的块访问令牌和所述目标子集群节点发送的块访问令牌,验证所述块访问令牌的合法性;
执行模块,用于根据客户端指令对储存块进行读取,写入操作。
10.一种分布式文件数据访问系统,其特征在于,包括一个如权利要求7所述的核心控制节点、至少一个如权利要求8所述的子群控制节以及至少一个如权利要求9所述的数据节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846280.1A CN107612910A (zh) | 2017-09-19 | 2017-09-19 | 一种分布式文件数据访问方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846280.1A CN107612910A (zh) | 2017-09-19 | 2017-09-19 | 一种分布式文件数据访问方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107612910A true CN107612910A (zh) | 2018-01-19 |
Family
ID=61060373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710846280.1A Pending CN107612910A (zh) | 2017-09-19 | 2017-09-19 | 一种分布式文件数据访问方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107612910A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108924266A (zh) * | 2018-08-24 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的客户端请求分离管理方法及装置 |
CN108965310A (zh) * | 2018-07-27 | 2018-12-07 | 广东讯飞启明科技发展有限公司 | 一种批量数据上传中防篡改加密实现方法和装置 |
CN109818934A (zh) * | 2018-12-29 | 2019-05-28 | 深圳前海达闼云端智能科技有限公司 | 一种自动化日志处理的方法、装置及计算设备 |
CN110515536A (zh) * | 2018-05-22 | 2019-11-29 | 杭州海康威视数字技术股份有限公司 | 数据存储系统 |
CN110704375A (zh) * | 2019-09-26 | 2020-01-17 | 深圳前海大数金融服务有限公司 | 文件管理方法、装置、设备及计算机存储介质 |
CN114650184A (zh) * | 2022-04-15 | 2022-06-21 | 四川中电启明星信息技术有限公司 | 一种基于信任度的Docker进程安全访问控制方法 |
WO2023093312A1 (zh) * | 2021-11-25 | 2023-06-01 | 华为技术有限公司 | 信息处理系统、方法、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647797A (zh) * | 2013-11-15 | 2014-03-19 | 北京邮电大学 | 一种分布式文件系统及其数据访问方法 |
CN103973698A (zh) * | 2014-05-19 | 2014-08-06 | 华中科技大学 | 一种云存储环境中的用户访问权限回收方法 |
CN104935590A (zh) * | 2015-06-10 | 2015-09-23 | 南京航空航天大学 | 一种基于角色和用户信任值的hdfs访问控制方法 |
-
2017
- 2017-09-19 CN CN201710846280.1A patent/CN107612910A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647797A (zh) * | 2013-11-15 | 2014-03-19 | 北京邮电大学 | 一种分布式文件系统及其数据访问方法 |
CN103973698A (zh) * | 2014-05-19 | 2014-08-06 | 华中科技大学 | 一种云存储环境中的用户访问权限回收方法 |
CN104935590A (zh) * | 2015-06-10 | 2015-09-23 | 南京航空航天大学 | 一种基于角色和用户信任值的hdfs访问控制方法 |
Non-Patent Citations (1)
Title |
---|
刘莎等: ""Hadoop云平台中基于信任的访问控制模型"", 《计算机科学》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515536A (zh) * | 2018-05-22 | 2019-11-29 | 杭州海康威视数字技术股份有限公司 | 数据存储系统 |
CN110515536B (zh) * | 2018-05-22 | 2020-10-27 | 杭州海康威视数字技术股份有限公司 | 数据存储系统 |
CN108965310A (zh) * | 2018-07-27 | 2018-12-07 | 广东讯飞启明科技发展有限公司 | 一种批量数据上传中防篡改加密实现方法和装置 |
CN108924266A (zh) * | 2018-08-24 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种基于分布式文件系统的客户端请求分离管理方法及装置 |
CN109818934A (zh) * | 2018-12-29 | 2019-05-28 | 深圳前海达闼云端智能科技有限公司 | 一种自动化日志处理的方法、装置及计算设备 |
CN109818934B (zh) * | 2018-12-29 | 2021-10-22 | 达闼机器人有限公司 | 一种自动化日志处理的方法、装置及计算设备 |
CN110704375A (zh) * | 2019-09-26 | 2020-01-17 | 深圳前海大数金融服务有限公司 | 文件管理方法、装置、设备及计算机存储介质 |
CN110704375B (zh) * | 2019-09-26 | 2020-10-23 | 深圳前海大数金融服务有限公司 | 文件管理方法、装置、设备及计算机存储介质 |
WO2023093312A1 (zh) * | 2021-11-25 | 2023-06-01 | 华为技术有限公司 | 信息处理系统、方法、设备及存储介质 |
CN114650184A (zh) * | 2022-04-15 | 2022-06-21 | 四川中电启明星信息技术有限公司 | 一种基于信任度的Docker进程安全访问控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210234682A1 (en) | Resilient secret sharing cloud based architecture for data vault | |
US9031876B2 (en) | Managing keys for encrypted shared documents | |
CN107612910A (zh) | 一种分布式文件数据访问方法及系统 | |
Li et al. | A hybrid cloud approach for secure authorized deduplication | |
CN102394894B (zh) | 一种基于云计算的网络虚拟磁盘文件安全管理方法 | |
CN108259169A (zh) | 一种基于区块链云存储的文件安全分享方法及系统 | |
CN104009987B (zh) | 一种基于用户身份能力的细粒度云平台安全接入控制方法 | |
WO2018032379A1 (zh) | 一种用于区块链的非信任远程交易文件安全存储系统 | |
CN114513533A (zh) | 一种分类分级健身健康大数据共享系统及方法 | |
JP2013513834A (ja) | 信頼できるコンピューティングおよびデータサービスのための信頼できる拡張マークアップ言語 | |
JP2012518330A (ja) | 高信頼なクラウド・コンピューティングおよびクラウド・サービスのフレームワーク | |
CN102821096A (zh) | 一种分布式存储系统及其文件共享方法 | |
US20200042497A1 (en) | Distributed ledger system | |
Yu et al. | Data security in cloud computing | |
Jin et al. | Design of a trusted file system based on hadoop | |
CN115883214A (zh) | 基于联盟链和cp-abe的电子医疗数据共享系统及方法 | |
Li | Secured cloud storage scheme based on blockchain | |
Piechotta et al. | A secure dynamic collaboration environment in a cloud context | |
Shu et al. | Secure storage system and key technologies | |
JP2022531538A (ja) | 暗号システム | |
Andersen | Decentralized authorization with private delegation | |
Sirisha et al. | ’Protection of encroachment on bigdata aspects’ | |
Zeidler et al. | Towards a framework for privacy-preserving data sharing in portable clouds | |
Sánchez‐Artigas et al. | StackSync: Attribute‐based data sharing in file synchronization services | |
Zhang et al. | BC-SSES: Secure Storage Extension and Sharing Method for Blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180119 |