给定了像 Kerberos "renew untill " auto这样的关键字,找不到可以解决我问题的线程,所以在这里发布。
我创建了一个包含以下票证生命周期信息的密钥表
Valid starting: 09/14/2018 13:05:01
Expires: 09/15/2018 13:05:01
renew until: 09/19/2018 09:26:37
基于Hadoop kerberos票证自动续订
我可以毫无问题地续订延长到期日期的机票。
现在,另一个问题正在续订,直到设置为在 7 天后过期。
我的问题:
哪个类似于
kinit -R
命令可以自动延长续订到日期,这样我就不需要重新签发kinit -kt mine.keytab my-principal
来获取密钥表的新票证?或者任何可以达到相同效果的 API?使用以下基于 https://www.cloudera.com/documentation/enterprise/5-14-x/topics/sg_kerberos_troubleshoot.html 的Hadoop API,我可以执行代码,但在更新之前找不到更新。
UserGroupInformation.loginUserFromKeytab(principal, keyPath) val currentUser = UserGroupInformation.getCurrentUser() currentUser.checkTGTAndReloginFromKeytab val currentUser1 = UserGroupInformation.getLoginUser currentUser1.checkTGTAndReloginFromKeytab`
klist
显示续订截止日期部分中的日期保持不变。
编辑:格式化
可再生 TGT
当票证可续订时,会话密钥会定期刷新,而不会发出全新的票证。如果 Kerberos 策略允许可续订票证,则 KDC 在其签发的每个票证中设置一个可续订标志,并在票证中设置两个过期时间。一个过期时间限制票证当前实例的生存期;第二个过期时间设置了票证所有实例的累积生存期限制。
当前工单实例的到期时间保存在"结束时间"字段中。与不可续订票证一样,"结束时间"字段中的值等于"开始时间"字段中的值加上 Kerberos 策略指定的最长票证寿命值。持有可续订票证的客户必须在结束时间之前将其(同时提供新的身份验证器(发送到 KDC 进行续订。当 KDC 收到续订票证时,它会检查"续订截止日期"字段中保留的第二个过期时间的值。此值是在首次签发票证时设置的。它等于工单开始时间字段中的值加上 Kerberos 策略指定的最大累积票证寿命的值。当 KDC 续订票证时,它会检查以确定续订时间是否尚未到来。如果没有,KDC 将发出票证的新实例,其中包含较晚的结束时间和新的会话密钥。
这意味着管理员可以设置 Kerberos 策略,以便必须以相对较短的时间间隔(例如,每天(续订票证。续订票证时,将颁发新的会话密钥,从而最大程度地降低已泄露密钥的值。管理员还可以设置相对较长的时间段(例如,一周或一个月(的累积票证寿命。在该时间结束时,机票将过期,不再有效。
所以续订 - 直到是票证的一部分,并且出于安全原因,它的最大值在服务器端受到限制。在设计上没有解决方法。