Hadoop安全管理(1)

Hadoop安全问题:

1:非法的slave节点添加

2:非法的客户端添加

3:非法的应用添加

4:用法身份造假

5:Web界面随意访问

究其原因还是安全的问题

默认支持的安全协议

1:simple,简单,适合单一团队使用

2:kerberos,复杂,配置麻烦,但是较安全。能解决上述问题。

Hadoop安全背景:

共享集群

按照业务或应用的规则划分资源队列,并分配给特定用户

HDFS上存放各种数据,包括公共的、机密的重要概念

安全认证:确保某个用户是自己声称的那个用户

安全授权:确保某个用户只能做他允许的那些操作

User:Hadoop用户,可以提交作业,查看自己作业状态,查看HDFS上的文件

Service:Hadoop中的服务组件,包括:namenode,resourcemanager,datanode,nodemanager

Kerberos解决安全认证问题

kerberos实现的是机器级别的安全认证,也就是服务到服务的认证

解决服务器到服务器的认证

防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派

解决client到服务器的认证

Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作

对用户级别上的认证并没有实现

无法控制用户提交作业的操作

ACL解决安全授权问题

通过访问控制列表(ACL)实现的

按照授权实体,ACL可分为队列访问控制列表、应用程序访问控制列表和服务访问控制列表

HDFS的文件访问控制机制

与当前Unix的一致,即将权限授予对象分为用户、同组用户和其他用户

且可单独为每类对象设置一个文件的读、写和可执行权限

用户和用户组的关系是插拔式的,默认情况下共用Unix/Linux下的用户与用户 组对应关系

Kerberos原理简介

目的:1:简单介绍kerberos的原理;2:为后面介绍hadoop的安全管理做准备

如下图是我自己画的图(因为网上找不到符合我意图的图)

以前我们客户端访问服务端,通过网络,输入服务端的用户名和密码。但是这样的方式不安全,于是有了kerberos方案。

kerberos

条件:

Kerberos服务里面已经存了客户端和服务端的信息。

过程:

1:客户端把自己的用户名和密码发送给kerberos去请求一张TGT(票据)

2:当kerberos收到请求以后会生产一个session key,这个session key其中一份拷贝用客户端的用户名和密码加密。Kerberos把这个加密的session key返回给客户端。

客户端会用自己的用户名和密码来解密,如果解密成功了,就说明认证成功了,同时也获得了TGT(session key)

3:客户端要想访问服务端,还得继续请求到服务端的TGT。Kerberos收到请求后,再生产一个session key。这个session key 有两份拷贝,第一份拷贝用第一次产生的session key加密,第二份拷贝用服务端的密码加密。

4:步骤3产生的两份session key返回给客户端。用第一次产生的sessio key加密的,客户端能解密(因为在步骤2的时候已经获得了这个session key(TGT))。但是用服务端密码加密的这个session key 客户段是无法解密的。

目前,客户段一共获得三个session key:a :步骤2获得的session key ;b: 用a session key解密出来的session key;c:未能解密的用服务端密码加密的session key。

5:b session key获取当前的时间戳,用自己去加密。然后把a b c三份session key 发送给服务端。

b session key 服务端可以用自己的密码来解密出来,这个时候就获得了一个session key.然后用这个session key 去解密这个加密的时间戳。如果时间戳能解密出来。说明认证成功,是由同一个kerberos管理的。

更详细的图:

Kerberos在hadoop中的应用

使用kerberos的原因

可靠

Hadoop本身并没有认证功能和创建用户组功能,使用依靠外围的认证系统

高效

Kerberos使用对称钥匙操作,比SSL的公共密钥快

操作简单

Kerberos依赖于第三方的统一管理中心--KDC,管理员对用户的操作直接作用在KDC上

整理的访问控制协议

Hadoop2.0认证机制

YARN中的各类Token及其作用

ResourceManager Delegation Token

ResourceManager授权令牌

持有该令牌的应用程序及其发起的任务可以安全地与ResourceManager交互

YARN Application Token

用于保证ApplicationMaster与ResourceManager之间的通信安全

由ResourceManager传递给NodeManager

该Token的生命周期与ApplicationMaster实例一致

YARN NodeManager Token

用于保证ApplicationMaster与NodeManager之间的通信安全

ResourceManager发送给ApplicationMaster

NodeManager向ResourceManager注册和心跳时领取

YARN Localizer Token

ARN Container Token

ApplicationMaster与NodeManager通信启动Container时需要出示

ResourceManager发送给ApplicationMaster

NodeManager向ResourceManager注册和心跳时领取

MapReduce Client Token

用于保证MR JobClient与MR Application Master之间的通信安全

ResourceManager在作业提交时创建并发送给JobClient

MapReduce Job Token

用于保证MapReduce的各个Task与MR Application Master之间的通信安全

由ApplicationMaster创建并传递给NodeManager

MapReduce Shuffle Secret

用于保证shuffle过程的安全

HDFS通信协议

Yarn通信协议

访问控制列表(ACL)

队列访问控制列表

YARN将用户/用户组分成若干队列,并可指定每个用户/用户组所属的队列

每个队列包含两种权限:提交应用程序权限和管理应用程序权限

通过配置文件mapred-queue-acls.xml设置

应用程序访问控制列表

应用程序对外提供一些特殊的可直接设置的参数

比如用户可以通过参数mapreduce.job.acl-view-job 和mapreduce.job.acl-modify-job为每个作业单独设置查看和修改权限

服务访问控制列表

控制只有那些经过授权的客户端才能访问对应的服务

服务访问控制是通过控制各个服务之间的通信协议实现的

在hadoop-policy.xml文件进行配置

时间: 2024-10-06 21:38:22

Hadoop安全管理(1)的相关文章

Cloudera Hadoop 5& Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)

1.课程环境 本课程涉及的技术产品及相关版本: 技术 版本 Linux CentOS 6.5 Java 1.7 Hadoop2.0 2.6.0 Hadoop1.0 1.2.1 Zookeeper 3.4.6 CDH Hadoop 5.3.0 Vmware 10 Hive 0.13.1 HBase 0.98.6 Impala 2.1.0 Oozie 4.0.0 Hue 3.7.0 2.内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: 1.Hadoop2.0高阶运维,包括H

阿里云大数据三次技术突围:Greenplum、Hadoop和“飞天”

阿里云大数据三次技术突围:Greenplum.Hadoop和"飞天"  对于企业来说,到底什么是云计算?相信很多企业都有这样的困惑,让我们一起回到这个原始的起点探讨究竟什么是云计算?云计算对于企业而言到底意味什么? 云计算的三条发展路径及三种落地形态 当回到最初的起点再审视云计算的发展路径,可以发现,经过十余年的发展演进,云计算有三条发展路径,并且最终沉淀下来了三种落地形态. 第一条路:源自于谷歌对大规模数据的处理,谷歌为全球的互联网用户提供同一个服务--搜索,它需要将全世界所有的网站

基于大数据分析的安全管理平台技术研究及应用

[引言]这篇文章原载于内刊,现发布于此.内容有所删减. Research and Application of Big Data Analysis Based Security Management Platform Last Modified By yepeng @ 2014-1-14 [内 容摘要]本文首先通过介绍大数据的起因,给出了大数据的定义和特征描述,并简要说明了当前大数据的研究概况.接下来,本文阐释了大数据分析技术,对大数据 在信息安全领域尤其是安全管理平台领域的应用做了深入分析,并

Hadoop生态圈介绍

[问]hadoop在生产环境下综合考虑的的数据块副本数多少 [答]默认3个,一般也是用3个副本的比较多,如果有特殊需求的话,可以根据自己需求添加副本数. 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. 具有可靠.高效.可伸缩的特点. Hadoop的核心是YARN,HDFS和Mapreduce 下图是hadoop生态系统,集成spark生态圈.在未来一段

Hadoop入门(二)

一.Hadoop 1.0的模型: | split 0->map-[sort]->[1,3..] |  /merge | ==> reducer-->part 0 =>HDFS replication split 1->map-[sort]->[2,6..] |------------- | ==> reducre--->part 1         =>HDFS replication split 2->map-[sort]->[4,

Hadoop:Windows 7 32 Bit 编译与运行

所需工具 1.Windows 7 32 Bit OS(你懂的) 2.Apache Hadoop 2.2.0-bin(hadoop-2.2.0.tar.gz) 3.Apache Hadoop 2.2.0-src(hadoop-2.2.0-src.tar.gz) 3.JDK 1.7 4.Maven 3.2.1(apache-maven-3.2.1-bin.zip) 5.Protocol Buffers 2.5.0 6.Unix command-line tool Cygwin(Setup-x86.e

编译hadoop 的native library

os:centos 6.7 x64 要解决的问题:   WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 解决的必要性 hadoop的cache和短路读(Short-Circuit Local Reads)都需要native library的支持 解决步骤 编译方法是 http://had

Hadoop Hive基础sql语法

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

Hadoop快速入门

传说中的Hadoop,我终于来对着你唱"征服"了,好可爱的小象,!J 总的来说,hadoop的思路比较简单(map-reduce),就是将任务分开进行,最后汇总.但这个思路实现起来,比较复杂,但相对于几年前Intel等硬件公司提出的网格运算等方式,显得更加开放. 你难任你难,哥就是头铁! Tip:实践应用是核心,本文概念为主,有些部分可能会有些晦涩,直接跳过就好(不是特别重要). 本文代码实践在:https://github.com/wanliwang/cayman/tree/mast