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 更是安全认证的标准配置,用于保护集群免受未授权访问。

运维小路

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

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

相关推荐
HIT_Weston33 分钟前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
cccccc语言我来了37 分钟前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
8K超高清1 小时前
高校巡展:中国传媒大学+河北传媒学院
大数据·运维·网络·人工智能·传媒
ben9518chen1 小时前
嵌入式Linux C语言程序设计九
linux·c语言
wuk9982 小时前
CentOS7环境搭建L2TP服务器
运维·服务器
恒创科技HK2 小时前
香港1核2G云服务器当网站服务器够用不?
运维·服务器
IT 小阿姨(数据库)2 小时前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
颜大哦2 小时前
linux安装mysql
linux·运维·mysql·adb
学习3人组3 小时前
Node.js 网站服务器开发
运维·服务器·node.js
来知晓3 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器