guardian 3.2.x 版本如何构造带有hostname的principal和keytab

  使用配置
内容纲要

背景


越来越多的现场需求对接开源的产品,比如Spark、presto等,如果集群开了Guardian安全,这些开源的可能会用到带hostname的Principal,不带hostname会报错。

kadmin.guardian是kerberos-guardian的交互式命令行工具, 在Guardian server的pod的任意目录下,执行kadmin.guardian指令即可执行。

所谓的V2是指配合guardian-3.2.X及以上版本的guardian使用的kad,in.guardian工具(不适用于guardian-3.1.X及以下版本)。v1版本请参考 KB: guardian 3.2.0 以下版本如何构造带有hostname的principal和keytab

注意:本文适用于guardian 3.2.0 及以上版本,可以通过下面的命令查看容器正在使用的guardian版本。

kubectl describe po $(kubectl get po -o wide | grep -i guardian-server | head -1 | awk '{print $1}') | grep -i "image:"

官方内部链接:http://wiki.transwarp.io:8090/pages/viewpage.action?pageId=24588058

解决方案


这里以realm为TDH的集群为例,需要创建一个 test000/tdh001@TDHBAK的principal,并构造其keytab

1、addprinc创建principal

# 首先需要进入到guardian server的pod内,我们的脚本存放在/usr/lib/guardian/scripts/kadmin.guardian
> kubectl exec -it $(kubectl get po -o wide | grep -i guardian-server | head -1 | awk '{print $1}') bash
# 执行listprincs输出所有principal信息
# -w 后面的密码,可以到manager数据库内执行 SELECT value FROM transwarp_manager.service_config  where name='guardian.ds.root.password' 查看,并不是admin租户的密码哦

> /usr/lib/guardian/scripts/kadmin.guardian -H172.22.25.71 -w123456 -P8380 -T -q "listprincs"

注意:下面这步构造principal的时候,-rTDHBAK,这里的realm是你期望构造的principal里面的realm。

# 执行addprinc构造principal
> /usr/lib/guardian/scripts/kadmin.guardian -H172.22.25.71 -w123456 -P8380 -rTDHBAK -T -q "addprinc -pw 123456 test000/tdh001"

可以通过 kadmin.guardian -help 或者kadmin.guardian -h查看使用说明

 -b    The zookeeper parent znode for HA, guardian is default
 -d    The suffix of the ds server, such as dc=tdh
 -H    The host of ds server, the default is localhost
 -P    The port of ds server, the default is 10389
 -p    The dn used to connect to the ds server, such as
            uid=admin,ou=system
 -Q    The zookeeper quorum for HA
 -q    The kadmin query, must be xst, addprinc, listprincs, addent
 -r    The realm of the kerberos, such as TDH
 -T         Whether TLS should be used
 -w    The password used to connect to the ds server
# 验证principal是否添加成功
> /usr/lib/guardian/scripts/kadmin.guardian -H172.22.25.71 -w123456 -P8380 -T -q "listprincs" | grep 'test000/tdh001@TDHBAK'

2、xst -k 生成keytab文件

注意,-rTDH,这个realm使用的是你当前集群的realm。

下面的xst命令里面不需要写realm(否则有可能报错principal找不到),因为对于principal来说test000/tdh001是唯一的。

[root@jiujiu-tdh-71 scripts]# /usr/lib/guardian/scripts/kadmin.guardian -w123456 -rTDH -T -q"xst -k /tmp/test000.keytab test000/tdh001"
[root@jiujiu-tdh-71 scripts]# ls /tmp/test000.keytab 
/tmp/test000.keytab

# 校验keytab中的principal信息
[root@jiujiu-tdh-71 scripts]# klist -ket /tmp/test000.keytab
Keytab name: FILE:/tmp/test000.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   0 10/12/2021 10:42:21 test000/tdh001@TDHBAK (aes128-cts-hmac-sha1-96) 
   0 10/12/2021 10:42:21 test000/tdh001@TDHBAK (aes256-cts-hmac-sha1-96) 
   0 10/12/2021 10:42:21 test000/tdh001@TDHBAK (DEPRECATED:des3-hmac-sha1) 
   0 10/12/2021 10:42:21 test000/tdh001@TDHBAK (DEPRECATED:des-cbc-md5) 
   0 10/12/2021 10:42:21 test000/tdh001@TDHBAK (DEPRECATED:arcfour-hmac) 

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。