这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战
前言
在大数据中,为了实现多租户环境下的数据、资源隔离,通常使用Kerberos认证来保证。常用于HDFS、Yarn、Kafka等大数据组件中。
基本概念
首先先了解一下Kerberos中常用的基本概念。
Kinit
请求缓存当前Principal的TGT,可以使用密码或者Keytab。
kinit -kt/path/to/keytabname@realm
复制代码
kdestroy
删除对当前缓存的TGT
Realm
Kerberos的一个认证管理域,其约束条件如下。
- 同一个域的用户使用同样的认证方案
- 在属于一个认证服务的边界内,这个认证服务才有权利认证一个用户,也有交叉认证
- realm的名字都用大写字母,通常realm名字和DNS域名一致
- 这个realms跟机器的host没有大关系
Principal
客户端和服务器唯一的名字,密码只有自己和认证服务器AS知道
- 用于引用认证服务数据库(AD)中的一个条目,密码存于AD和keytab
- 用户:Name[/Instance]@REALM
- 服务:Service/Hostname@REALM第一个是service名字,第二个是提供这个服务的机器的完全主机名(FQDN),DNS对应用服务器的IP地址进行逆向解析后得到的主机名
- 特例:krbtgt/REALM@REALM:TGT服务,用于申请Session Ticket
Keytab
以文件的形式呈现,存储了一个或多个Principal的长期的key用途和密码类似,用于kerberos认证登录;其存在的意义在于让用户不需要明文的存储密码,和程序交互时不需要人为交互来输入密码。
使用步骤
- 配置好krb5.conf(可以设置Ticket更新时间)
- 在KDC.conf中添加好principal,将密码dump回本地存为keytab给服务
服务器端安装
安装软件
yum install krb5-server krb5-libs krb5-auth-dialog
复制代码
配置文件/etc/krb5.conf
- bdx.sd.cmcc = BDX.SD.CMCC:所有在bdx.sd.cmcc此domain下host都被归属为BDX.SD.CMCC这个realm中,个人认为domain是hosts中的全名
- bdx.sd.cmcc = BDX.SD.CMCC:所有hostname包含bdx.sd.cmcc归属后面realm
- realm中default_domin这个属性是将krb4中的xx.hostname的service principal转换成krb5中xx/hostname.domain的形式