Hadoop HDFS-认证(Kerberos) 部署与配置

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

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

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

上个小节,我们介绍了kerberos这个网络认证协议,本小节我们就来进行kerberos的部署。****

1.安装配置kerberos

这里主要的软件核心如软件是:krb5-server,提供 KDC(密钥分发中心)服务,包含核心的 Kerberos 认证服务。

ini 复制代码
# 安装 KDC (以 MIT Kerberos 为例)
yum install krb5-server krb5-libs krb5-workstation

# 配置 /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM = {
  kdc = kdc-server.example.com
  admin_server = kdc-server.example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
  • default_realm:客户端未指定领域时使用的默认领域(必须大写

  • dns_lookup_*:设为 false 避免依赖 DNS,需手动配置 KDC

  • ticket_lifetime:用户票据有效期(建议 24 小时)

  • renew_lifetime:票据总生命周期(续订上限)

  • forwardable:允许代理认证(如 SSH 跳转)

  • EXAMPLE.COM:领域名称(需与 default_realm 一致)

  • kdc:KDC 服务器的主机名或 IP(可端口 kdc = host:88

  • admin_server:KDC 管理服务地址(默认端口 749)

  • 注意:这里不使用dns,就必须通过hosts来实现。

2.初始化数据库

创建 Kerberos 数据库(存储所有主体和密钥),当然我这里并没有输入密码,而是直接回车,所以这里的密码是空密码,当然我这里测试没有问题,生产建议还是需要配置密码。

kotlin 复制代码
[root@localhost hadoop-2.10.2]# kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/M@EXAMPLE.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key: 
Re-enter KDC database master key to verify: 

![图片](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='www.w3.org/2000/svg' xmlns:xlink='www.w3.org/1999/xlink'... stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

3.启动服务

  • krb5kdc:密钥分发中心服务(处理票据请求)

  • kadmin:Kerberos 管理服务(管理主体和策略)

    systemctl start krb5kdc kadmin systemctl enable krb5kdc kadmin

4.设置管理员密码

  • 创建管理员主体 admin/admin,这是 Kerberos 系统的超级用户,密码用于后续管理操作(添加/删除主体等),kadmin.local 直接在 KDC 上运行,无需认证。

  • 这里必须要输入密码,无法直接回车跳过,后面也会用到这里的密码。

    root@localhost hadoop-2.10.2\]# kadmin.local -q "addprinc admin/admin" Authenticating as principal root/admin@EXAMPLE.COM with password. WARNING: no policy specified for admin/admin@EXAMPLE.COM; defaulting to no policy Enter password for principal "admin/admin@EXAMPLE.COM": Re-enter password for principal "admin/admin@EXAMPLE.COM": Principal "admin/admin@EXAMPLE.COM" created. \[root@localhost hadoop-2.10.2\]# #设置密码

  • instance = admin(区分管理员类型)

  • 完整名称:admin/admin@EXAMPLE.COM(假设领域为 EXAMPLE.COM

5.配置hosts和acl

  1. ACL 文件 (kadm5.acl)
  • */admin@EXAMPLE.COM * 表示所有 admin 实例的主体都有完全管理权限

  • 格式:主体 权限* 代表所有权限)

  1. Hosts 文件
  • kdc-server.example.com 解析到 127.0.0.1

  • 解决单机环境 DNS 解析问题

  • 确保 Kerberos 客户端能找到 KDC 服务

    root@localhost hadoop-2.10.2\]# echo "\*/admin@EXAMPLE.COM \*" \> /var/kerberos/krb5kdc/kadm5.acl \[root@localhost hadoop-2.10.2\]# echo "127.0.0.1 kdc-server.example.com" \>\> /etc/hosts

进行票据验证,列出当前票据。默认票据有效期24小时。

ruby 复制代码
root@localhost hadoop-2.10.2]# kinit admin/admin
Password for admin/admin@EXAMPLE.COM: 
[root@localhost hadoop-2.10.2]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@EXAMPLE.COM
Valid starting       Expires              Service principal
07/20/2025 23:14:31  07/21/2025 23:14:31  krbtgt/EXAMPLE.COM@EXAMPLE.COM

**到这里我们的Kerberos就算部署完成,但是这里的和我们的HDFS还没产生任何关系,因为Kerberos不仅仅支持HDFS,他还支持很多软件,只是在HDFS里面使用最广泛,所以我们拿到这里来讲解。

**Kerberos 的通用性使其成为企业级环境中身份认证的首选方案,几乎所有主流的分布式系统、数据库、应用服务器和云服务都提供了对 Kerberos 的支持。在 Hadoop 生态系统中,Kerberos 更是安全认证的标准配置,用于保护集群免受未授权访问。

运维小路

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

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

相关推荐
360智汇云2 小时前
k8s共享存储fuse-client三种运行方案对比
java·linux·开发语言
云游3 小时前
IP地址管理:docker方式部署phpIPAMv1.7.3
运维·docker·ip·ipv4·ipv6
小闫BI设源码3 小时前
Docker Swarm主机编排
运维·docker·容器·容器编排·docker compose·依赖管理·多服务启动
Reicher3 小时前
Docker的介绍和使用
运维·docker·容器
zrande3 小时前
基于HTTP构建局域网内YUM网络源:详细操作指南(太细)
运维·构建yum网络源
cetcht88884 小时前
从 “有人值守” 到 “少人运维”:智能巡检机器人重塑配电室管理模式
大数据·运维·人工智能·机器人
Mr.45674 小时前
Linux&Windows环境下Nacos3.1.0详细安装配置指南:从零到生产就绪
linux·运维·服务器
峰顶听歌的鲸鱼5 小时前
30.Linux DHCP 服务器
linux·运维·服务器·笔记·学习方法
退役小学生呀5 小时前
二十一、DevOps:从零建设基于K8s的DevOps平台(二)
运维·docker·云原生·容器·kubernetes·devops