第11章 Hadoop安全机制
第10章中介绍了常见的几种Hadoop多用户任务调度器,包括Fair Scheduler、Capacity Scheduler等。多用户任务调度器使得不同需求的用户可以共享一个Hadoop集群中的计算资源和存储资源,进而大大降低了运维成本且提高了系统资源利用率,但同时引出了一个亟需解决的问题——安全问题。由于Hadoop缺乏安全机制,当大量用户共享一个Hadoop集群时,可能会带来各种安全隐患,比如普通用户访问机密数据,用户杀死他人的作业等。为了更好地管理Hadoop集群,从1.0版本开始,Hadoop引入了安全机制。
本章将从Hadoop安全设计动机出发,依次介绍Hadoop RPC、HDFS和MapReduce中的安全机制设计方法。
11.1 Hadoop安全机制概述
由于所有的Hadoop集群都部署在有防火墙保护的局域网中且只允许公司内部人员访问,因此为Hadoop添加安全机制的动机并不像传统的安全概念那样为了防御外部黑客的攻击,而是为了更好地让多用户在共享Hadoop集群环境下安全高效地使用集群资源。
11.1.1 Hadoop面临的安全问题
在1.0版本之前,Hadoop几乎没有任何安全机制,因此面临着各方面的安全威胁,主要包括以下几个方面。
(1)缺乏用户与服务之间的认证机制
1)NameNode或者JobTracker缺少用户认证机制:由于用户可以在应用程序中设置自己的用户名和所在的用户组,这使得任意用户可以很容易伪装成其他用户,给用户管理造成极大不便。
2)DataNode上缺少用户授权机制:DataNode上的Block读写无任何访问控制机制,以至于用户只要知道Block ID,就能够获取对应Block的内容,并且用户也可以随便往一个DataNode上直接写入Block。
3)JobTracker上缺少用户授权机制:
❑任何一个用户均可以修改或者杀死其他用户的作业。
❑任何一个用户均可以修改JobTracker的持久化状态。
(2)缺乏服务与服务之间的认证机制
DataNode与NameNode、TaskTracker与JobTracker之间缺少认证机制,以至于用户可以任意启动DataNode或者TaskTracker。
(3)缺乏传输以及存储加密措施
客户端与服务器之间、Slave与Master之间的数据传输采用TCP/IP协议,以Socket方式实现,但在传输和存储过程中没有加/解密处理。Hadoop各节点间的数据采用明文传输,使其极易在传输的过程中被窃取。
此外,数据服务器对内存和存储器中的数据没有任何存储保护,在恶意入侵、介质丢失、维修等情况下,数据容易泄露。