Hadoop的初始设计是运行在信任的环境下,它假定所有的集群用户都是可信任的,她们才能正确地表明自己的身分而且不会尝试获取更多的权限。由此实现了简单的安全模式,它是Hadoop中默认的验证系统。在简单安全模式下,Hadoop信任操作系统所提供的用户身分。和大部份关系数据库不同,Hadoop并没有任何集中用户和权限储存机制。在Hadoop中linux服务器安全,不存在通过用户名和密码来对用户进行验证的概念。Hadoop接受并信任操作系统所提供的用户名而且对此不会采取过多的检测。
随着Hadoop的发展,越来越多的公司开始使用Hadoop作为大数据平台的框架进行实际应用,潜在的安全隐患渐渐曝露下来。尤其是Hadoop集群被越来越多地应用于生产环境的数据剖析工作中,使用者的数目越来越多,身分也越来越复杂,因而越来越多地须要考虑权限控制和数据保护等安全问题。目前,Hadoop技术体系面临的安全问题主要有以下三个方面。
(1)欠缺安全认证机制
除基本的Linux用户名和密码举措外,Hadoop缺少对用户的认证的管理形式。恶意的用户可以轻易地伪装成其他用户来窜改权限。诸如,任何有用户名和密码的用户都可以递交作业,更改JobTracker状态中标linux,更改HDFS上的数据,甚至伪装成DataNode或则TaskTracker接收NameNode的数据和JobTracker的任务等。
服务器与用户之间也缺少认证机制,因而任何用户都可以伪装成其他用户并对HDFS或MapReduce集群进行非法访问,甚至进行一些非法活动。比如,对其他用户的作业进行更改linux删除文件夹,窜改其他用户在HDFS上的数据,或则恶意递交作业,占用集群资源等。
(2)缺少适宜的访问控制机制
具有Hadoop使用权限的用户可以不受限制地浏览DataNode上储存的数据,甚至可以轻易地更改和删掉那些数据。同时,用户还可以随便更改或则中止其他用户的作业。当Hadoop集群被应用到数据和作业运行状态敏感的环境中时,这些状况可能随时会造成出现重大的安全车祸
在Hadoop1.0版本中对HDFS上资源的访问控制模型采用的是与Linux/UNIX相像的9位权限判断,权限类型有读(r)、写(w)、执行(x)三种。HDFS上的用户与Linux/UNIX系统用户一致,分为user、group、other。用户在向Hadoop集群递交文件时,可以通过集群命令tmdoopfs-cbanod来设定该文件的访问权限。
Hadoop最初的授权管理存在的缺陷可以通过一个案例来描述。比如,在系统中某个用户时属于other,对于某个文件没有写入的权限,当这个用户恳求得到该文件的写权限时,系统就必须开放other权限。并且一旦放开了other权限,所有的用户就拥有了该文件的写入权限,这在授权管理中似乎是不合理、不安全的。
(3)数据传输缺少加密机制
Hadoop集群各节点之间,顾客端与服务器之间的数据传输采用TCP/IP合同,以Socket方法实现。数据在传输过程中缺少加密处理,致使用户隐私数据、系统敏感信息极易在传输的过程中被泄露、窜改,进而使数据丧失了完整性、保密性。HDFS上数据的储存没有任何加揭秘处理,各服务器对其显存和外部储存器中的数据没有储存保护举措,极易导致用户数据和系统信息的泄密。
为了解上述安全问题linux服务器安全,Hadoop引入了对Kerberos合同的支持。Kerberos是一个安全的网路认证合同,它实现了机器级别的安全认证,支持顾客端和服务器之间不须要在网路上传输密码认证,而是由一个可信赖的第三方秘钥分发中心提供身分认证。KDC主要由认证服务器和票据授权服务器组成。Kerberos持有一个秘钥数据库,拿来记载每位Kerberos用户的秘钥。这个秘钥只有Kerberos用户和KDC晓得,该秘钥可以对网路实体与KDC的通讯进行加密。KDC会为它们形成一个临时会话秘钥,拿来加密它们之间的交互信息。认证服务器负责对用户进行身分认证。用户通过认证以后,会形成会话秘钥和票据授权票据,之后将其发送给认证用户。会话秘钥拿来加密用户之间的通讯消息,并且是认证用户访问的账簿。票据授权服务器为通过认证的合法用户形成会话秘钥和票据,之后将秘钥和票据发送给用户。认证用户与服务器之间的通讯可由会话秘钥加密,认证用户通过票据作为账簿来访问应用服务器。
Kerberos具有密码不在网路中传输,只在网路中传输时间敏感的票据。密码或秘钥只有KDC和标示可以辨识。
Kerberos支持将密码或秘钥储存于LDAP兼容的统一的凭据储存系统中,服务器不须要储存任何票据和顾客端相关的详尽信息来认证顾客端,顾客端通过KDC认证并获得TGT可以用于以后的认证,保证大数据平台Hadoop的安全。