微信公众号:大数据开发运维架构
关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;
如果您觉得“大数据开发运维架构”对你有帮助,欢迎转发朋友圈
从微信公众号拷贝过来,格式有些错乱,建议直接去公众号阅读
概述:
开启了Kerberos认证集群之后,集群不再像以前一样随意操作,需要证书进行登录,这里就讲一下我们日常用的的一些kerberos相关的一些操作,包括票据的创建、删除、有效期更改等。
常用操作:
1.登录控制台,如果直接kdc本地登录的话输入kadmin.local即可:
[root@master98 conf]# kadmin.local
如果在其他安装了kerberos客户端的机器登录已管理员登录输入密码,执行以下命令:
[root@salver158~]# kadminAuthenticatingasprincipal admin/admin@CHINAUNICOMwithpassword.Passwordforadmin/admin@CHINAUNICOM://这里输入管理员票据密码
2.查看所有票据,控制台输入list_principals :
kadmin.local: list_principals
3.删除票据,控制台输入:
kadmin.local:delete_principalzookeeper/salver32.hadoop.unicom@CHINAUNICOM
4.新建票据,控制台输入:
要通过Kerberos的认证需要提供principal及其对应的密码。密码可以手动输入,也可以存放在一个keytab文件中。“Keytab”是“key table”的简写,它用于存放一个或多个principal的密码。进行Kerberos认证时,一个用户可以提供principal和密码,或者principal和keytab文件。如果使用principal和keytab文件认证,那么Kerberos会去keytab文件中读取principal密码。
1).生成指定key的principal,输入密码生成,中间根据提示输入两次密码即可:
kadmin: addprinc zookeeper/salver32.hadoop.unicom@CHINAUNICOMWARNING:nopolicy specifiedforzookeeper/salver32.hadoop.unicom@CHINAUNICOM; defaulting tonopolicyEnter passwordforprincipal"zookeeper/salver32.hadoop.unicom@CHINAUNICOM":Re-enter passwordforprincipal"zookeeper/salver32.hadoop.unicom@CHINAUNICOM":Principal"zookeeper/salver32.hadoop.unicom@CHINAUNICOM"created.
2).生成随机key的principal,创建票据并同时将生成的test.keytab文件放到/etc/security/keytabs文件夹下,两条命令控制台输入:
kadmin.local: addprinc -randkey zookeeper/salver158.hadoop.unicom@CHINAUNICOM//生成票据
kadmin.local:xst-norandkey -k /etc/security/keytabs/zk.service.keytab zookeeper/salver158.hadoop.unicom@CHINAUNICOM//生成票据对应的keytab文件
5.缓存票据(非控制台命令)
上面4)中票据“zookeeper/salver32.hadoop.unicom@CHINAUNICOM”是给salver32机器生成的,直接拷贝到32机器的/etc/security/keytabs目录下即可,可验证下票据是否可使用,分两步:
1).查看票据信息
[root@salver32 keytabs]#klist-ktzk.service.keytab//这里是查看票据信息,一个keytab文件可保存多个票据信息,一般我们只保存一个
2).根据1)中的票据信息,在salver32节点缓存票据,klist列出了凭证高速缓存中保存的Kerberos主体和Kerberos票证,或密钥表文件中保存的密钥
[root@salver32keytabs]# kinit -kt zk.service.keytab zookeeper/salver32.hadoop.unicom@CHINAUNICOM
这里截个图:
说明一下缓存的票据是zookeeper/salver32.hadoop.unicom@CHINAUNICOM, 以后你对集群的所有操作用户就是zookeeper。
6.清除缓存票据(非控制台命令),kdestroy使用程序通过覆盖和删除包含它们的凭据缓存来破坏用户的活动Kerberos授权票证。如果未指定凭据缓存,则会破坏默认凭据缓存。
[root@salver32 keytabs]# kdestroy
7.修改票据密码(控制台命令),根据提示输入密码即即可:
kadmin.local: cpw -pw unicom123 admin/adminPassword for"admin/admin@CHINAUNICOM"changed.
另外一种修改密码方式(非控制台命令),修改当前本地已缓存票据密码:
[root@salver32 keytabs]# kpasswdPasswordforzookeeper/salver32.hadoop.unicom@CHINAUNICOM:Enternewpassword:
修改密码后的票据,必须要重新生成keytab文件,不然票据无法通过kinit缓存,只需要重新建keytab文件就可以了:
kadmin.local: xst -norandkey -k /etc/security/keytabs/zk.service.keytab zookeeper/salver32.hadoop.unicom@CHINAUNICOM//生成票据对应的keytab文件
8.获取票据信息(控制台输入),查看详细信息
getprinc zookeeper/salver32.hadoop.unicom@CHINAUNICOM
kadmin.local: getprinc zookeeper/salver32.hadoop.unicom@CHINAUNICOMPrincipal: zookeeper/salver32.hadoop.unicom@CHINAUNICOMExpiration date: [never]Last passwordchange: Wed Feb2621:13:25CST2020Passwordexpirationdate: [none]Maximum ticket life:3650days00:00:00Maximum renewable life:3650days00:00:00Lastmodified: Wed Feb2621:13:25CST2020(admin/admin@CHINAUNICOM)Lastsuccessfulauthentication: [never]Lastfailedauthentication: [never]Failedpasswordattempts:0Numberofkeys:7Key: vno2, aes128-cts-hmac-sha1-96Key: vno2, des3-cbc-sha1Key: vno2, arcfour-hmacKey: vno2, camellia256-cts-cmacKey: vno2, camellia128-cts-cmacKey: vno2, des-hmac-sha1Key: vno2, des-cbc-md5MKey: vno1Attributes:Policy: [none]
9.修改票据有效期(控制台输入):
kadmin.local: modprinc -maxlife360days -maxrenewlife360days +allow_renewable zookeeper/salver32.hadoop.unicomPrincipal"zookeeper/salver32.hadoop.unicom@CHINAUNICOM"modified.
这里再获取一下,有效期已经更改:
2.票据有效期
票据的两个属性:ticket_lifetime 和 renew_lifetime。
其中 ticket_lifetime 票据生效的时限,默认为24小时。在票据失效前部分凭证可以延期失效时间(即renewable), renew_lifetime 表明票据最长可以被延期的时限,默认7天。当票据过期之后,对安全认证的服务的后续访问则会失败。
1).当 ticket lifetime 结束时,该 ticket 将不再可用。
2).如果 renewable lifetime > ticket lifetime ,那么在票据生命周期内都可以其进行续期,直到达到可再生周期的上限。
3).当时间达到 renewable lifetime 后,ticket lifetime结束后将不能继续续期,续期时将会报错 KDC can't fulfill requested option while renewing credentials,之后需要重新申请新的 ticket。
4).可再生周期和 keytabs 无关,如果你没有修改 key 和 principal 的关系,keytabs 将不用关心。
举个列子:
ticket_lifetime = 1d
renew_lifetime = 7d
a.在登陆后的24h内可以对ticket进行续期,直到第一次登陆的7天后将不再允许续期。
b.在24h内如果没有续期,将无法续期。
c.对 ticket 进行一次续期后,ticket_lifetime 将恢复到24h。
关于票据有效期的几点说明:
1).klist中expires以及renew until是由client端的/etc/krb5.conf配置文件中的参数决定(前提是是没有超过Maximum ticket life)。
2).server端kdc.conf的配置起到限制client的作用。在client的设置超过Maximum ticket life的设置时,按Maximum ticket life取值,一般我们server、client端时间设置一致。
3).kdc.conf配置的更改对新建的principal会立即生效,旧的不会生效,如果需要对旧的principal生效,需要modprinc命令手动修改,具体命令请参照上面的:9.修改票据有效期。
4).超过renew_lifetime时间之后,不能kinit -R,kinit -R不会改变票据缓存的renew until时间,如果想要改变票据缓存的renew until时间可以使用 kinit -r xx来renew tgt,最大时间由max_renewable_life限制。
5).renew_lifetime的优先级高于max_renewable_life,不管renew_lifetime大于等于还是小于等于max_renewable_life,都是取renew_lifetime的值。