kerberos相关(2)

Posted by serrini on March 28, 2022

流程

创建用户名为test的Principal

kadmin创建一个用户test,之后可以用密码登录,如果不想记住密码可以用keytab文件登录。(也可以不设置密码,-randkey随机生成一个) kadmin在kdc服务器上可以是kadmin.local,如果是kerberos客户端就是kadmin。

addprinc -pw 123456 test ktadd -k /root/user.keytab test

创建TGT

创建TGT需要在hive客户端

方式一:账号密码登录

方式二:用户keytab文件登录

访问hive

示意图

审计需要的keytab文件

审计系统需要的keytab文件是server的keytab文件,是需要保存在配置文件hive_site.xml指定的位置,hdfs/spark等同理。里面相当于是server端的密码,可以指定也可以随机生成,这个跟集群配置有关。

用户登录认证有两种方式,kinit sl(密码登录)或者是kinit -kt user.keytab sl(用户keytab文件登录),不管怎样,klist回显的信息,表示TGT创建成功了,这时候的principal表示是用哪个用户登录的。

如果我们拿到的是user.keytab,里面相当于存的是client的密码,是没法解密的。

优点:

Kerberos实际上就是使用对称秘钥,比使用公钥操作的SSL性能更好;所有的用户/服务密钥存在KDC的数据库里,可以认为是一个集中管理平台,如果想要删除一个用户,直接在KDC中删除该用户即可。

Hive相关

文档:https://hive.apache.org/

hive.server2.authentication

hive.server2.thrift.sasl.qop

hive.server2.thrift.sasl.qop

#Kerberos的黄金票据/白银票据

Golden Ticket

不用as_req/as_rep,伪造的TGT,通常的TGT都是由TGS加密过的(涉及到krbtgt账户),黄金票据就是伪造的TGT,作为tgs_req的一部分被发送,以获取 serverticket。被krbtgt账户密钥加密过的TGT可以被域中任意kdc解密,但是client/server都不行。

krbtgt账户:每个域控制器都有一个 krbtgt的用户账户,是 KDC的服务账户,用来创建票据授予服务(TGS)加密的密钥

Silver Tickets

……