Hadoop 安全

标签 hadoop kerberos hadoop-plugins kerberos-delegation mit-kerberos

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

我正在尝试学习“如何在 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 安全的步骤

  1. 在所有集群节点均可访问的任何服务器中安装 Kerberos。 yum 安装 krb5-server yum 安装 krb5-workstation yum 安装 krb5-libs

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

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

  4. 在 KDC 主机中创建数据库

    $ kdb5_util 创建-r 主机名-s

  5. 将管理员添加到 ACL 文件

    1. vi/etc/kdamin.acl
    2. 在该文件中添加管理员主体“admin/admin@host_name”
  6. 添加管理员主体 $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/

相关文章:

hadoop - Hadoop超时尝试在AWS多区域配置中写入Cassandra

wcf - IIS 7中的Kerberos身份验证

javascript - 通过 javascript 或 HTML 5 的 Kerberos

hadoop - 如何安装 Hadoop 插件或补丁?

hadoop - 如何配置配置单元服务器以远程模式运行?

lucene - 是否可以在一个 JVM 中运行多个 map 任务?

java - 限制 yarn 中每个应用程序同时运行的容器数量

hadoop - yarn 作业不会超过 "state: ACCEPTED"

hadoop - 在 vectorized.execution.enabled 时将 ORC 文件格式与 Hive 一起使用时发生 ClassCastException

hadoop - 启用 hadoop 和 kerberos 的 datastax enterprise 出错