《大数据安全技术》课件-第3章.pptx
《《大数据安全技术》课件-第3章.pptx》由会员分享,可在线阅读,更多相关《《大数据安全技术》课件-第3章.pptx(77页珍藏版)》请在文库网上搜索。
1、第3章 大数据平台Hadoop的安全机制主要内容主要内容安全威胁概述Hadoop安全机制Hadoop组件的安全机制安全技术工具Hadoop的安全性分析Hadoop安全技术架构3.1 安全威胁概述 Hadoop是Apache下基于Java语言实现的开源大数据计算处理框架,允许使用简单的编程模型在计算机集群上对大型数据集进行分布式处理。下面是网上报道过的其安全漏洞案例:1.漏洞1:SSRF伪造请求漏洞Apache的Ambari引用,导致攻击者可以直接通过外部的管理对Hadoop的生态组件进行管控。恶意攻击者通过SSRF攻击,远程对Hadoop服务以及进程进行操纵和读取数据。3.1 安全威胁概述2.
2、漏洞2:MapReduce信息漏洞主要是由于数据文件、用户产生的数据以及加密密钥都存储在同一个文件和磁盘中,导致恶意用户获取到加密密钥,并读取了数据块中的数据。3.漏洞3:Ambari重定向漏洞由于target的URI参数被修改成了黑客指定的任意网址,由此造成了钓鱼攻击,甚至结合Linux底层的操作系统漏洞以及Hadoop的其他漏洞还能实现恶意代码的加载。3.1 安全威胁概述4.漏洞4:引入Docker组件,黑客伪造root身份在Linux这层没有输入过程的认证,而Docker命令通过root身份来执行。因此,黑客通过Docker命令伪造root身份,然后对Hadoop进行全线账户的提权,实现
3、对整个操作系统的权限控制。早期Hadoop,在默认情况下没有身份认证和访问控制机制,基本上继承Linux的权限控制体系。此外,在数据传输和静态数据保存过程中无有效的加密措施。3.2 Hadoop安全机制3.2.1 基本安全机制 1.Simple机制 Simple机制是JAAS协议与Delegation Token结合的一种机制,JAAS提供JAVA认证与授权服务。(1)用户提交作业时,JobTracker端要进行身份核实,先是验证到底是不是这个人,即通过检查执行当前代码的人与JobConf中的user.name中的用户是否一致。3.2 Hadoop安全机制3.2.1 基本安全机制 1.Simp
4、le机制(2)然后检查ACL(Access Control List)配置文件(由管理员配置)确认是否有提交作业的权限。一旦通过验证,会获取HDFS或者MapReduce授予的Delegation Token(访问不同模块有不同的Delegation Token),之后的任何操作,比如访问文件,均要检查该Token是否存在,且使用者跟之前注册使用该Token的用户是否一致。3.2 Hadoop安全机制3.2.1 基本安全机制 2.Kerberos机制 Kerberos机制是基于认证服务器的一种方式。整体过程如图3.1所示。3.2 Hadoop安全机制3.2.2 总体安全机制(1)Hadoop客
5、户端通过RPC库访问相应服务,在RPC层中添加权限认证机制,所有RPC都会使用SASL进行连接。(2)HDFS认证分成两部分:一是客户端与NameNode连接时的认证;二是客户端从DataNode获取Block时所需要的认证。前者使用Kerberos协议认证和授权令牌认证,此令牌可以作为接下来访问HDFS的凭证。后者则是客户端从NameNode获取一个认证令牌,只有使用这个令牌才能从相应的DataNode获取Block。3.2 Hadoop安全机制3.2.2 总体安全机制(3)在MapReduce中用户的每个Task均使用用户的身份运行,防止了恶意用户使用Task干扰TaskTracker或者
6、其他用户的Task。(4)HDFS在启动时,NameNode首先进入一个安全模式,此时系统不会写入任何数据。NameNode在安全模式下会检测数据块的最小副本数,当一定比例的数据块达到最小副本数时(一般为3),系统就会退出安全模式,否则补全副本,以达到一定的数据块比例。3.2 Hadoop安全机制3.2.2 总体安全机制(5)当从HDFS获得数据时,客户端会检测从DataNode收到的数据块,通过检测每个数据块的校验和验证数据块是否损坏。如损坏,则从其他DataNode获得数据块的副本,以保证数据的完整性和可用性。(6)MapReduce和HDFS都设计了心跳机制,Task和DataNode都
7、定期向JobTracker和NameNode发送信条数据。当JobTracker不能接收到某个Task的心跳数据时,则认为该Task已经失败,会在另一个节点上重启该任务,以保证整个MapReduce程序的运行。同理,如果NameNode收不到某个DataNode的心跳消息,也认为该节点已经死掉,不会向该节点发送新的I/O任务,并复制那些丢失的数据块。3.3 Hadoop组件的安全机制3.3.1 RPC安全机制 RPC是指远程过程调用,也就是说两台不同的服务器(不受操作系统限制),一个应用部署在A上,一个应用部署在B上,若A想要调用B上的某个方法,由于不在一个内存空间,不能直接调用,需要通过网络
8、来表达调用的语意和传达调用的参数。Hadoop集群是Master/Slave(主/从)结构,Master包 括 NameNode和 JobTracker,Slave包括DataNode和TaskTracker。3.3 Hadoop组件的安全机制3.3.1 RPC安全机制 NameNode可看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的MetaData,同时周期性地将所有存在的Block信息发送给NameNode。3.3 Hadoop组件的安全机制3.3.1
9、 RPC安全机制 就通信方式而言,Client与NameNode、NameNode与DataNode都是在不同进程、不同系统间的通信,因此Hadoop要用到RPC。RPC安全机制是在Hadoop RP中添加权限认证授权机制。当用户调用RPC时,用户的Login Name会通过RPC头部传递给RPC,之后RPC使用SASL确定一个权限协议(支持Kerberos和DIGEST-MD5两种),完成RPC授权。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 客 户 端 获 取 NameNode初 始 访 问 认 证 后,获 取 一 个Delegation Token,作为接下来访问HD
10、FS或者提交作业的凭证。为了读取某个文件,客户端首先要与NameNode交互,获取对应数据块的Block Access Token,然后到相应的DataNode上读取各个数据块,而DataNode在初始启动向NameNode注册时,已提前获取这些Token,当客户端要从TaskTracker上读取数据块时,首先验证Token,通过后才允许读取。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 当用户使用Kerberos证书向NameNode提交认证后,从NameNode获得一个Delegation Token,之后该用户提交作业时可使用该De
11、legation Token进行身份认证。Delegation Token是用户和NameNode之间的共享密钥,获取Delegation Token的任何人都可以假冒该用户。只有当用户再次使用Kerberos认证时,才会再次得到一个新的Delegation Token。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 当 从 NameNode获 得 Delegation Token时,用 户 应 该 告 诉NameNode这个Token的renewer(更新者)。在对该用户的Token进行更新之前,更新者先向NameNode进行认证。Tok
12、en的更新将延长该Token在NameNode上的有效时间,而非产生一个新的Token。为了让一个MapReduce作业使用一个Delegation Token,用户通常需要将JobTracker作为Dolegation Toben的更新者。同一个作业下的所有任务使用同一个Token。在作业完成之前,JobTracker确保这些Token是有效的;在作业完成之后,JobTracker就可以废除这个Token。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token NameNode随机选取masterKey,并用它生成和验证Delegation To
13、ken,保存在NameNode的内存中,每个Delegation Token都有一个Token,存在expiryDate(过期时间)。如果currentTimeexpiryDate,该Token将被认为是过期的,任何使用该Token的认证请求都将被拒绝。NameNode将过期的Delegation Token从内存中删除,另外,如果Token和owner(拥有者)和renewer(更新者)废除了该Token,则NameNode将这个Delegation Token从内容中删除。Sequence Nunber(序列号)随着新的Delegation Token的产生不断增大,唯一标识每个Token
14、。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 当客户端(如一个Task)使用Delegation Token认证时,首先向NameNode发送Token。Token ID代表客户端将要使用的Delegation Token。NameNode利用Token ID和masterKey重新计算出Delegation Token,然后检查其是否有效。当且仅当该Token存在于NameNode内存中,并且当前时间小于过期时间时,这个Token才算是有效的。如果Token是有效的,则客户端和NameNode就会使用它们自己的Token Authen
15、ticator作为密钥、DIGEST MD5作为协议相互认证。以上双方认证过程中,都未泄露自己的Toke Authenticator给另一方。如果双方认证失败,意味着客户端和NameNode没有共享同一个Token Authenticator,那么它们也不会知道对方的Token Authenticator。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 为了保证有效,Delegation Token需要定时更新。假设JobTracker是一个Token的更新者,在JobTacker向NameNode成功认证后,JobTracker向Name
16、Node发送要被更新的Token。NameNode将进行如下验证。(1)JobTracker是Token ID中指定的更新者;(2)Token Authenticator是正确的;(3)currentTime maxDate。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 验证成功之后,如果该Token在NameNode内存中,即该Token是 有 效 的,则 NameNode将 其 新 expiryDate设 置 为min(currentTime+renewPeriod,maxDate),如果这个Token不在内存中,说明NameNode
17、重启丢失了之前内存中保存的Token,则NameNode将这个Token添加到内存中,并且用相同的方法设置其expiryDate,使得NameNode重启后作业依然可以运行。JobTracker需要在重新运行失败Tasks之前,向NameNode更新所有的Delegation Token。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 1.Delegation Token 注意:只要currentTime maxDate,那么即使这个Token已经过期,更新者依然可以更新它。因为NameNode无法判断一个Token过期与否(或是否被废除),或是由于NameNode重启导致其不
18、在内存中。只有被指定的更新者可以使一个过期的Token复活,即便攻击者窃取到了这个Token,也不能更新使其复活。masterKey需要定时更新,NameNode只循要将masterKey而不是Tokens保存在磁盘上。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token 当用户向NameNode请求访问文件时,NameNode进行文件权限检查。NameNode根据对用户所请求的文件(即相关的数据块)是否具有相应权限来做出授权。为了在HDFS上实施一致的数据访问控制策略,需要一个机制来将NameNode上的访问授权实施到DataNode上,并
19、且任何未授权的访问将被拒绝。NameNode通过使用Block Access Token向DataNode 传递数据访问权限授权信息。Block Access Token由NameNode生成,在DataNode上使用,其拥有者能够访问 DataNode中的特定数据块,而DataNode能够验证其授权。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token Block Access Token通过对称密钥机制生成,NameNode和所有的DataNode共享一个密钥。对于每一个Token,NameNode使用这个共享密钥计算出一个加密的哈希值(
20、MAC),这个哈希值就是Token Authenticator。Token Authenticator是构成Block Access Token的必要部分。当DataNode收到一个Token时,它使用自己的密钥重新计算出Token Authenticator。并将其与接收到的Token中的Token Authenticator进行比较,如果匹配,则认为这个Token是可信的。因为只有NameNode和DataNode知道密钥,所以第三方无法伪造Token。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token 若使用公钥机制生成Token,则
21、计算成本较为昂贵。其主要优点是即使一个DataNode被攻陷,攻击者也不会获得能够伪造出有效Token的密钥。然而,通常在HDFS部署中,所有DataNode的保护措施都是相同的(相同的数据中心、相同的防火墙策略)。如果攻击者有能力攻陷一个DataNode,那么就能够利用相同的手段攻陷所有的DataNode,而不必使用密钥。因此,使用公钥机制不会带来根本性的差异。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token 理想情况下,Block Access Token是不可转移的,仅其拥有者可以使用它。Token中包含了其拥有者的ID,无论谁使用
22、这个Token都要认证其是否为拥有者,所以没有必要担心Token的丢失。在当前的安全机制中,Block Access Token中包含其拥有者的ID。但DataNode 并不验证其拥有者的ID,预计以后会添加相关验证。3.3 Hadoop组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token 无须更新或者废除一个Block Access Token。当一个Block Access Token过期时,只需获取一个新的Token。Block Access Token保存在内存中,无须写入磁盘中。Block Access Token的使用场景如下:HDFS客户端向Nam
23、eNode请求一个文件的Block ID和所在位置;NameNode验证该客户端是否被授权访问这个文件,然后将所需的Block ID和对应的Block Access Token发送给客户端;当客户端需要访问一个数据块时,将向DataNode发送Block ID和对应的Block Access Token;DataNode验证收到的Block Access Token,判断是否客户端允许访问数据块。HDFS客户端把从NameNode获取的Block Access Token保存在内存中,当Token过期或者访问到未缓存的数据块时,客户端会向NameNode请求新的Token。3.3 Hadoop
24、组件的安全机制3.3.2 HDFS安全机制 2.Block Access Token 无论数据块实际存储在哪里,Block Access Token在所有的DataNode上都是有效的。NameNode随机选取计算Token Authenticator的密钥,当DataNode首次向NameNode注册时,NameNode将密钥发送给该DataNode。NameNode上有一个密钥滚动生成机制以更新密钥,并定期将新的密钥发送给DataNode。3.3 Hadoop组件的安全机制3.3.3 MapReduce安全机制 MapReduce也是Hadoop中核心组件之一,它为海量的数据提供计算。1.
25、作业提交(Job Submission)用户提交作业后,JobClient需与NameNode和JobTracker等服务进行通信,以进行身份认证和获取相应令牌。授权用户提交作业时,JobTracker会为之生成一个Delegation Token,该Token将被作为Job的一 部 分 存 储 到 HDFS上 并 通 过 RPC分 发 给 各 个TaskTracker,一旦Job运行结束,该Token失效。3.3 Hadoop组件的安全机制3.3.3 MapReduce安全机制 2.作业控制 用 户 提 交 作 业 时,可 通 过 参 数mapreduce.job.acl-view-job指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大数据安全技术 数据 安全技术 课件