5

Scenario : - User logs on to his computer gets authenticated by Kerberos Authentication and submits a map reduce job Hadoop安全

我在学习“Kerberos如何在Hadoop中实现?” 我曾经使用过此文档https://issues.apache.org/jira/browse/HADOOP-4487 我还通过基本Kerberos的东西(https://www.youtube.com/watch?v=KD2Q-2ToloE

了这些资源我来这,我通过一个图表示得出结论学习后消失。 情景: - 用户登录到他的计算机通过Kerberos身份验证进行身份验证并提交地图缩减作业 (请阅读几乎不需要5分钟时间的关系图的描述) 我想解释该图并提出问题用几个步骤(粗体) 号码在黄色背景表示整个流量(编号1〜19) DT(带红色背景)相关的代表委托令牌 BAT(具有绿色背景)表示块访问令牌 JT(与棕色背景)代表作业标记

步骤1,2,3和4代表: - 请求TGT(票证授予票证) 请求名称节点的服务票证。 问题1)KDC应该在哪里?它可以在我的名字节点或工作追踪器所在的机器上吗?

步骤5,6,7,8和9代表: - 向名称节点显示服务票证,得到一个确认。 名称节点会发出委托令牌(红色) 用户会告诉令牌新生(在这种情况下,作业调度器)

问题2)用户提交thisDelegation令牌与作业作业服务器一起。代理令牌将与任务跟踪器共享吗?

步骤10,11,12,13和14代表: - 问一个服务票据作业跟踪,得到KDC 显示该票作业跟踪服务票据,并得到一个ACK从JobTracker的 提交作业+代理令牌给JobTracker。

步骤15,16和17表示: - 生成块访问令牌并分布在所有数据节点上。 发送块标识和块访问令牌作业调度器和作业调度器将它传给的TaskTracker

问题3)谁就会要求BlockAccessToken和块ID从名称节点? JobTracker或TaskTracker

对不起,我错过了第18号。 Step19表示: - 作业跟踪器生成Job Token(棕色)并将其传递给TaskTracker。

问题4)我可以得出结论:每个用户将有一个委派令牌,它将分布在整个群集中,并且每个作业将有一个作业令牌?因此,用户只有一个授权令牌和许多工作令牌(等于他提交的作业数量)。

请告诉我,如果我错过了某些东西,或者我在我的解释中某处出错了。

+1

Rohit!良好的分析;你有没有解决方案来保护Hadoop?如果是的话,你可以在这篇文章中分享答案吗? – 2014-11-19 11:05:11

+0

如果你有问题,请更新答案@Rohit Sarewar – Rengasamy 2014-12-09 09:52:09

回答

0

要遵循的步骤,以确保Hadoop是安全的

  1. 在所有群集节点访问的任何服务器安装Kerberos。 百胜安装krb5的服务器 百胜安装的krb5工作站 百胜安装的krb5-库

  2. 修改配置文件中的KDC服务器配置设置ACL文件,管理密钥表文件,主机。 /var/kerberos/krb5kdc/kdc.conf

  3. 修改配置文件的/etc/krb5.conf设置KDC主机和管理服务器

  4. 在KDC主机创建数据库

    $ kdb5_util创建 - [R HOST_NAME -s

  5. 添加管理员ACL文件

    1. 六/etc/kdamin.acl
    2. 添加admin主体 '管理/管理员@ HOST_NAME' 在该文件中
  6. 添加管理员主要 $ addprinc管理员/管理员@ HOST_NAME

在所有群集节点上安装Kerberos客户端

yum install krb5-workstation

将krb5.conf复制到所有群集节点

确保通过设置所需的配置 https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html

验证,以使在Hadoop的安全模式:

  • 正常登录,用户群集,其中用户keytabs部署网关或节点
  • 运行“的kinit -k -t/location/of/keytab文件username @ host_name“
  • 然后运行HDFS命令或mapreduce作业来验证集群是否安全

这些是确保在群集中启用kerberos的基本步骤。