首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hadoop HDFS-认证(Kerberos) 简介及入门

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

作者头像
运维小路
发布2025-07-27 10:41:53
发布2025-07-27 10:41:53
30600
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

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

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。
代码语言:javascript
代码运行次数:0
运行
复制
#当然这里仅作演示 
kadmin -q "addprinc -randkey nn/node1.example.com@HADOOP.COM"  
kadmin -q "addprinc -randkey yarn/node2.example.com@HADOOP.COM"  

3.2 Keytab 分发

为每个服务生成 Keytab 并安全分发到对应主机:

代码语言:javascript
代码运行次数:0
运行
复制
kadmin -q "ktadd -k /etc/security/keytabs/nn.service.keytab nn/node1.example.com@HADOOP.COM"

3.3 配置文件启用 Kerberos

core-site.xml

代码语言:javascript
代码运行次数:0
运行
复制
<property>
  <name>hadoop.security.authentication</name>
  <value>kerberos</value> <!-- 开启Kerberos -->
</property>

hdfs-site.xml

代码语言:javascript
代码运行次数:0
运行
复制
<property>
  <name>dfs.namenode.kerberos.principal</name>
  <value>nn/_HOST@HADOOP.COM</value> <!-- 使用_HOST自动匹配主机名 -->
</property>

4.用户认证

用户需先通过 kinit 获取 TG

代码语言:javascript
代码运行次数:0
运行
复制
kinit alice@HADOOP.COM  # 交互式输入密码
kinit -kt alice.keytab alice@HADOOP.COM  # 非交互式
  • 执行 Hadoop 命令(如 hdfs dfs -ls /)时自动使用票据。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Kerberos 简介
    • 核心概念
      • 2.Kerberos 认证流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档