一种Hadoop平台上面向数据字段的访问控制方法与流程

文档序号:11407255阅读:379来源:国知局
本发明涉及云计算
技术领域
,特别是涉及一种hadoop平台上面向数据字段的访问控制方法。
背景技术
:社会信息化和网络化的迅猛发展,导致数据量以呈爆炸式激增。开源分布式框架hadoop作为大数据平台的标准解决方案,被企业、科研机构及个人所认可。由于hadoop在最初设计时并未考虑到安全问题,随着其使用量的增加以及使用形式的转变,如:使用hadoop构建云存储、云计算平台等等,导致hadoop的安全漏洞以及隐患日益凸显,且由于平台中承载了庞大的用户隐私数据,这就引起了社会各界的担忧,并成为阻碍其发展的重要原因之一。因此,云存储、云计算平台的安全问题,尤其是广泛使用的hadoop集群的安全问题成为了近些年来学术界以及工业界的一个研究热点。目前最新的hadoop3.0.0-alpha3-snapshot版本中使用kerberos认证体系作为其安全机制的基础,用于在集群中提供用户认证、hadoop节点认证以及hadoop服务认证,从而解决了hadoop早期版本中可能出现的冒充威胁;使用sla(servicelevelauthorization)将指定的hadoop服务授权给特定的合法用户,从而更加规范化、更加安全地管理计算与存储资源;使用ssl证书(sslcertificates)加密保护浏览器/服务器以及节点间数据传输的安全;采用https加密传输数据,防止数据在传送过程中被监听、盗取、篡改保证了数据的完整性;使用kms(hadoopkeymanagementserver)提供hdfs(hadoopdistributefilesystem)数据的透明加密,有效解决了多租户中的数据隔离问题。保存到磁盘中的数据以密文形式存储,还有效地防止了当节点被黑客攻击后,后者直接从硬盘中取得数据的威胁。使用类unix/linux的访问机制对主节点(namenode)中文件访问进行限制,从而提供了丰富的文件级别的访问控制策略。综上,hadoop最新版本中虽然提供了多种安全机制,但是它们都属于粗粒度的访问控制,而随着hadoop使用方式的丰富,对资源的共享者来说急需更加细粒度的访问控制策略,例如某些字段对于某些具有文件读取权限的用户仍需不可见。解决这一问题的关键是对存储于hdfs中的结构化数据使用新的存储以及读取方法,使其在存储以及读取过程中能有效识别所属字段,进而使用访问控制列表(accesscontrollist,acl)对字段的访问权限进行控制。然而由于hadoop使用非结构化的数据存储方式,即把资源按字节流形式进行读取并直接写入hdfs,且不同文件的记录结构不同,故而无法使用统一的配置文件来限制字段访问权限。如何针对不同文件设置并存储字段访问控制列表以及进行字段级细粒度访问控制是本发明的主要任务。技术实现要素:本发明所要解决的技术问题是提供一种hadoop平台上面向数据字段的访问控制方法,提高数据拥有者对数据进行安全管理的灵活性。本发明解决其技术问题所采用的技术方案是:提供一种hadoop平台上面向数据字段的访问控制方法,包括以下步骤:(1)文件上传过程:扩展hadoop中已有的文件上传命令,设定schema格式,并将原始文件中的数据根据schema解析后上传到主节点,在主节点中保存字段的访问控制列表,添加编辑日志以及文件镜像的写入操作;(2)字段的权限操作:增加字段权限操作命令,提供查询、更新指定文件的字段访问控制列表操作;在进行字段的权限操作时,用户通过客户端向主节点发送请求,主节点通过验证用户的权限来进行具体的操作;(3)数据下载过程:程序通过对原始block数据输出流进行解析,验证用户对该字段是否具有读权限,进而限定反馈的结果列。所述步骤(1)具体包括以下子步骤:(11)对原有命令进行扩展,其中,在扩展后的命令中,-fs用来指定字段间的分隔符,schema为上传文件的路径;(12)为待上传的文件建立schema文件作为文件的说明;(13)在原有与主节点通信消息之上增加schema字段用来向主节点传递schema信息;主节点获取到schema信息,将其转化为fieldpermission对象,其权限为文件的默认权限,并将该对象作为属性写入对应文件的元信息中;最后将此信息写入编辑日志以便于主节点重启后仍能加载该文件的字段访问控制列表到内存中;(14)客户端得到主节点反馈的block输入流后,在原始数据流写入的过程中增加字段识别功能;按行读取原始流数据,然后,将数据存储为[(<field,value>,<field,value>,…)]格式,最后写入到block流中;(15)增加编辑日志与文件镜像合并过程中的解析方法,具体操作内容是将编辑日志中的字段的访问控制列表进行解析然后合并到文件镜像内对应的记录中。所述步骤(2)中字段访问控制列表查看的基本流程是:用户通过客户端向主节点发送rpc请求,主节点通过判断用户是否是文件的拥有者决定是否反馈该文件的字段访问控制列表。所述步骤(2)中文件字段权限以及归属的修改流程是:用户通过客户端向主节点发送rpc请求,主节点接收请求后,验证用户是否具有相关权限,若具有则记录编辑日志并更新内存中针对于该文件的访问控制列表信息,若不具有则直接返回拒绝访问给用户。所述步骤(3)具体包括以下子步骤:(31)获取用户读取文件的fieldpermission属性,若存在该属性则说明用户正在读取支持字段级访问控制的文件,若不存在则说明用户读取的是普通文件;(32)验证用户是否具有对文件的读权限,若具有则允许读取该文件,进一步判断用户读取的文件类型;若用户读取的是普通文件,则进入普通文件的处理流程;若用户读取的文件支持字段级访问控制,则继续下述流程;(33)打开block的输入流,并在数据流写入到本地文件时,增加数据流解析,按行读取数据,将数据解析为(<field,value>,…)格式;(34)通过fieldpermission属性即可对数据的字段进行访问控制,将未授权的字段过滤,之后对数据格式进行还原,使其能够还原到上传前的数据存储形式。有益效果由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明增加hadoop对结构化数据字段的细粒度访问控制,丰富了hadoop访问控制方式,提高了数据拥有者对数据管理的灵活性。具体实施方式下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。本发明的实施方式涉及一种hadoop平台上面向数据字段的访问控制方法,包括以下步骤:步骤1、文件上传过程:扩展原始上传文件命令,设定schema格式,并将原始文件中的数据根据schema解析后上传到namenode,在namenode中保存字段的访问权限列表,添加editlog以及fsimage的写入操作;1.1)为原有的hdfsdfs–put[-f][-p][-l][-d]<localsrc>...<dst>命令进行扩展,扩展后的命令格式为:hdfsdfs–put[-f][-p][-l][-d][-fs<fieldseparator>-s<schema>]<localsrc>...<dst>。其中-fs用来指明字段间的分隔符,schema为上传文件的路径;1.2)为待上传的文件建立schema文件作为文件的说明,schema文件包含字段的名称以及类型。其顺序对应于文件中的字段顺序,以json格式保存,其格式展示如下所示:上段中fields字段保存文件中的所有字段信息,name用于存储字段名称,type用于存储字段类型。fields字段内记录有序,隐含index属性用来标识字段的逻辑位置信息。设计fields来保存所有字段的目的是,未来一旦添加新的功能,可以保证原有的解析过程不变;1.3)由于hadoop文件上传客户端需要和主节点通过rpc通信获取blocks,且namenode维护文件的元信息,故需要在原有与主节点通信消息之上增加schema字段用来向namenode传递schema信息。主节点获取到schema信息,将其转化为fieldpermission对象,其权限为文件的默认权限,并将该对象作为属性写入对应文件的元信息中。最后将此信息写入editlog以便于namenode重启后仍能加载该文件的字段访问控制列表到内存中。1.4)客户端得到主节点反馈的block输入流后,在原始数据流写入的过程中增加字段识别功能。按行读取原始流数据。然后,将数据存储为[(<field,value>,<field,value>,…)]格式,最后写入到block流中,使用该结构进行存储的目的是在后续读取过程中能够对数据的字段进行权限判定;1.5)增加editlog与fsimage合并过程中的解析方法,具体操作内容是将editlog中的字段的访问控制列表进行解析然后合并到fsimage内对应的记录中。步骤2、字段的权限操作:增加字段权限操作命令,提供查询、更新指定文件的字段访问控制列表操作。2.1)为了能够更新字段的访问控制列表,需要增加新的hdfs命令,新增加的命令如下表1所示:表1字段权限相关命令用途命令格式查看指定文件hdfsdfs-fshow<filepath>修改权限hdfsdfs-fchmodmode<filepath>fields…修改归属hdfsdfs–fchown[owner][:[group]]<filepath>fields…2.2)文件的字段访问控制列表查看的基本流程是,用户通过客户端向主节点发送rpc请求,主节点通过判断用户是否是文件的拥有者决定是否反馈该文件的字段访问控制列表;2.3)文件字段权限以及归属的修改流程是用户通过客户端向主节点发送rpc请求,主节点接收请求后,验证用户是否具有相关权限,若具有则记录editlog并更新内存中针对于该文件的访问控制列表信息,若不具有则直接返回permissiondeny给用户。步骤3、数据下载过程:程序通过对原始block数据输出流进行解析,验证用户对该字段是否具有读权限,进而限定反馈的结果列。3.1)获取用户读取文件的fieldpermission属性,若存在该属性则说明用户正在读取支持字段级访问控制的文件,若不存在则说明用户读取的是普通文件;3.2)验证用户是否具有对文件的读权限,若具有则允许读取该文件,进一步判断用户读取的文件类型。若用户读取的是普通文件,则进入普通文件的处理流程;若用户读取的文件支持字段级访问控制,则继续下述流程;3.3)打开block的输入流,并在数据流写入到本地文件时,增加数据流解析。按行读取数据,将数据解析为(<field,value>,…)格式;3.4)通过fieldpermission属性即可对数据的字段进行访问控制,将未授权的字段过滤,之后对数据格式进行还原,使其能够还原到上传前的数据存储形式。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1