Hadoop HDFS-认证(Kerberos) 简介及入门

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

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

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 认证流程
  1. 2.1 用户登录

    • 用户向 AS 请求 TGT,提供密码(或 Keytab)。

    • AS 验证身份后返回加密的 TGT(用用户密钥加密)。

  2. 2.2 获取服务票据

    • 用户向 TGS 发送 TGT 和要访问的服务 Principal(如 hdfs/node1)。

    • TGS 验证 TGT 后返回服务票据(用服务密钥加密)。

  3. 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 /)时自动使用票据。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值