前言
自从2018年大数据平台升级,Hadoop/Kafka从此被Kerberos立体环绕,虽然知道kinit/kdestory/klist命令,但是每次执行都感觉云里雾绕,尤其是对接租户的时候,多次陷入尴尬的境地。实习带我的老师曾提起培训一次kerberos,可是还没提上日程就离职了。于是决定去靠自己理解一下Kerberos,脱离这种没有安全感的日子。
什么是kerberos?
Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议,个人认为可以类比https去理解。Kerberos的client、service、KDC可以类比https的client、server、CA去理解。
在大数据平台的应用中,可以给不同的资源添加不同的权限,例如HDFS的访问、kakfa的topic读写,必须带有对应权限的principal和对应的"密码"去访问。
Kerberos名词
- Realm认证管理域,通常是服务端和客户端在一个域内才能进行认证。
- Principal客户端和服务端的名称,通常Client命名规则为name@REALM,Server命名规则为name/hostname@REALM
- keytab每个principal的配套密码,可代替手动输入密码
- krb5.conf记录KDC的host与定义realm规则的配置文件
例如: 你的hadoop有十台主机,/etc/hosts配置的host为hadoop[1-10].hadoop.com,name在定义你的Kerberos的Realm时就是HADOOP.COM,你创建的客户端的服务端的principal都是以@HADOOP.COM结尾。 Client通过解析Server的principal中的hostname部分来通过/etc/hosts来映射出Server的IP,所以使用Kerberos一定要配置Server所有的hosts
安装
- 执行yum install krb5-server krb5-libs krb5-auth-dialog
- 编辑/etc/krb5.conf,配置realm和kdc等配置
- 执行kdb5_util create -s -r HADOOP.COM来生成AD(Account Database),存放principal和密码
- 启动服务systemctl start krb5kdc.servicesystemctl start kadmin.service
- 在kdc服务器中通过kadmin.local命令进入AD,通过下面命令来生成pricipalxst -k /etc/test.keytab test@HADOOP.COM
命令
认证过程
WHY
以上就是对Kerberos概念的一些了解,后续可能会对具体场景下的使用进行汇总,主要是java/scala/flume对hadoop/kafka的读写等。See U again