作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS(本章节)
前面我们介绍了HDFS的用户概念,很多的时候就是为了权限控制,但是HDFS超级管理员的本质由配置决定,而非用户本身。手动创建 hdfs 用户不会自动获得超管权限,需同时满足以下条件:
进程启动身份:NameNode 必须由 hdfs 用户启动(关键!)
超级组声明:在 hdfs-site.xml 声明超级组
用户组归属:hdfs用户需在 supergroup 组中
上面的虽然有涉及到多个用户,但是这里的用户简单理解都是匿名的,也就是我可以很容易实现权限替换,在实际比较注重安全的环境中必然是不行的,所以我们今天就来介绍这个更安全的认证方式:Kerberos。
1.Kerberos 简介
Kerberos 是一种网络认证协议,用于在非安全网络中安全地验证用户和服务身份。Hadoop 集群使用 Kerberos 提供强身份认证,防止未授权访问。
核心概念
-
KDC (Key Distribution Center):包含 AS (认证服务) 和 TGS (票据授予服务)
-
Principal:用户或服务的唯一标识(格式:
primary/instance@REALM) -
Keytab:存储服务 principal 密钥的文件,用于非交互式认证
2.Kerberos 认证流程
-
2.1 用户登录
-
用户向 AS 请求 TGT,提供密码(或 Keytab)。
-
AS 验证身份后返回加密的 TGT(用用户密钥加密)。
-
-
2.2 获取服务票据
-
用户向 TGS 发送 TGT 和要访问的服务 Principal(如
hdfs/node1)。 -
TGS 验证 TGT 后返回服务票据(用服务密钥加密)。
-
-
2.3 访问服务
-
用户向服务(如 HDFS)提交服务票据。
-
服务用自身密钥解密票据,验证用户身份。
-

3.Hadoop 集成 Kerberos
3.1 服务 Principal 注册
-
每个 Hadoop 组件(NameNode, YARN, HBase 等)需在 KDC 注册服务 Principal。
#当然这里仅作演示
kadmin -q "addprinc -randkey nn/node1.example.com@HADOOP.COM"
kadmin -q "addprinc -randkey yarn/node2.example.com@HADOOP.COM"
3.2 Keytab 分发
为每个服务生成 Keytab 并安全分发到对应主机:
kadmin -q "ktadd -k /etc/security/keytabs/nn.service.keytab nn/node1.example.com@HADOOP.COM"
3.3 配置文件启用 Kerbero
core-site.xml
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value> <!-- 开启Kerberos -->
</property>
hdfs-site.xml
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>nn/_HOST@HADOOP.COM</value> <!-- 使用_HOST自动匹配主机名 -->
</property>
4.用户认证
用户需先通过 kinit 获取 TG
kinit alice@HADOOP.COM # 交互式输入密码
kinit -kt alice.keytab alice@HADOOP.COM # 非交互式
执行 Hadoop 命令(如 hdfs dfs -ls /)时自动使用票据。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。
2246

被折叠的 条评论
为什么被折叠?



