我正在尝试学习“如何在 Hadoop 中实现 Kerberos?” 我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487 我还了解了基本的 Kerberos 内容 ( https://www.youtube.com/watch?v=KD2Q-2ToloE )
从这些资源中学习后,我得出了一个结论,我通过图表表示了这一点。 场景:- 用户登录到他的计算机获得 Kerberos 身份验证的身份验证并提交 map reduce 作业 (请阅读图表的描述它几乎不需要你 5 分钟的时间) 我想解释图表并提出与几个步骤相关的问题(粗体) 黄色背景中的数字代表整个流程(数字 1 到 19) DT(红色背景)代表Delegation Token BAT(绿色背景)代表区 block 访问 token JT(棕色背景)代表Job Token
步骤 1、2、3 和 4 代表:- 请求 TGT(票证授予票证) 请求名称节点的服务票证。 问题1)KDC应该放在哪里?它可以在我的名称节点或作业跟踪器所在的机器上吗?
步骤 5、6、7、8 和 9 代表:- 向名称节点出示服务票据,获得确认。 Name Node 会发行一个 Delegation Token(红色) 用户将告知 token 更新器(在本例中为 Job Tracker)
问题 2) 用户将此委托(delegate) token 连同作业一起提交给 Job Tracker。 Delegation Token 会与 Task tracker 共享吗?
步骤 10、11、12、13 和 14 代表:- 向 Job tracker 索取服务票,从 KDC 获取服务票 向 Job Tracker 出示此票并从 JobTracker 获得 ACK 将 Job + Delegation Token 提交给 JobTracker。
步骤 15、16 和 17 代表:- 生成 block 访问 token 并分布在所有数据节点上。 将 blockID 和 Block Access Token 发送给 Job Tracker,Job Tracker 会将其传递给 TaskTracker
问题 3)谁会向名称节点请求 BlockAccessToken 和 Block ID? JobTracker 或 TaskTracker
对不起,我错漏了 18 号。 Step19 代表:- 作业跟踪器生成作业 token (棕色)并将其传递给任务跟踪器。
问题 4)我能否得出结论,每个用户将有一个委托(delegate) token ,该 token 将分布在整个集群中,并且 每个工作会有一个工作 token ?因此,用户将只有一个 Delegation Token 和许多 Job Token(等于他提交的 Job 数量)。
如果我遗漏了什么或者我在解释中的某个地方有误,请告诉我。
最佳答案
确保 Hadoop 安全的步骤
在所有集群节点均可访问的任何服务器中安装 Kerberos。 yum 安装 krb5-server yum 安装 krb5-workstation yum 安装 krb5-libs
修改 KDC 服务器配置中的配置文件,为主机设置 acl 文件、管理 key 表文件。 /var/kerberos/krb5kdc/kdc.conf
修改配置文件/etc/krb5.conf以设置kdc主机和管理服务器
在 KDC 主机中创建数据库
$ kdb5_util 创建-r 主机名-s
将管理员添加到 ACL 文件
- vi/etc/kdamin.acl
- 在该文件中添加管理员主体“admin/admin@host_name”
添加管理员主体 $addprinc admin/admin@host_name
在所有集群节点上安装 Kerberos 客户端
yum 安装 krb5-workstation
复制krb5.conf到所有集群节点
确保通过设置所需的配置在 Hadoop 中启用安全模式 https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html
验证:
- 以普通用户身份登录集群网关或部署用户 key 表的节点
- 运行“kinit –k –t/location/of/keytab file username@host_name”
- 并运行 HDFS 命令或 mapreduce 作业以验证集群是否安全
这些是确保在集群中启用 kerberos 的基本步骤。
关于Hadoop 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140339/