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

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

图片

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

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

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

1.安装配置kerberos

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

# 安装 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 数据库(存储所有主体和密钥),当然我这里并没有输入密码,而是直接回车,所以这里的密码是空密码,当然我这里测试没有问题,生产建议还是需要配置密码。​​​​​​​

[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: 

图片

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]# 
#设置密码
  • primary = admin(标识管理员身份)

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

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

5.配置hosts和acl

  1. ACL 文件 (kadm5.acl)

    • */admin@EXAMPLE.COM * 表示所有 admin 实例的主体都有完全管理权限

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

  2. 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

6 验证

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

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

运维小路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值