天天看點

kerberos的tgt時間了解

之前在impala內建kerberos時,遇到了時間相關的問題,當時沒有做充分的測試,對某些了解有些問題(http://caiguangguang.blog.51cto.com/1652935/1381323),今天正好做了下測試,總結如下:

1.klist中expires以及renew until是由client端的/etc/krb5.conf配置檔案中的參數決定(在沒有超過max的情況)。

1

2

3

4

5

6

<code>server端對應的配置為:</code>

<code>ticket_lifetime = 1h</code>

<code>renew_lifetime = 1d</code>

<code>client端對應的配置為:</code>

<code>ticket_lifetime = 4h</code>

<code>renew_lifetime = 5d</code>

2.server端kdc.conf的配置起到限制client的作用。在client的設定超過max的設定時,按max取值

比如server端設定

7

8

9

<code>max_life = 25h</code>

<code>max_renewable_life = 71d</code>

<code>client端設定</code>

<code>ticket_lifetime = 40h</code>

<code>renew_lifetime = 200d</code>

<code>klist的結果為server配置的值:</code>

<code>Valid starting Expires Service principal</code>

<code>03</code><code>/25/14</code> <code>11:55:41 03</code><code>/26/14</code> <code>12:55:41 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>06</code><code>/03/14</code> <code>11:55:41</code>

3.kdc.conf配置的更改對建立的principal會立即生效,舊的不會生效,如果需要對舊的principal生效,需要modprinc

比如:

<code>modprinc -maxlife 32days -maxrenewlife 32days +allow_renewable krbtgt</code><code>/REALM</code>

4.了解ticket_lifetime和renew_lifetime

超過renew_lifetime時間之後,不能kinit -R,kinit -R不會改變tgt cache的renew until時間,如果想要改變tgt cache的renew until時間

可以使用kinit -r xx來renew tgt,最大時間由max_renewable_life限制。

10

11

12

13

14

15

16

17

18

19

20

21

<code>ticket_lifetime = 40w</code>

<code>renew_lifetime = 200w</code>

<code>klist</code>

<code>03</code><code>/25/14</code> <code>12:04:25 03</code><code>/25/14</code> <code>12:05:05 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:07:45</code>

<code> </code><code>date</code>

<code>Tue Mar 25 12:05:38 CST 2014</code>

<code>  </code><code>#超過了expires的時間,但是沒有超過renew until的時間</code>

<code>kinit -R</code>

<code>  </code><code>#可以renew,renew until的時間不會變</code>

<code>03</code><code>/25/14</code> <code>12:05:46 03</code><code>/25/14</code> <code>12:06:26 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>date</code>

<code>  </code><code>#超過renew until的時間</code>

<code>Tue Mar 25 12:08:04 CST 2014</code>

<code> </code><code>#不能renew</code>

<code>kinit(v5): Ticket expired </code><code>while</code> <code>renewing credentials</code>

5.w不代表week的意思,是s的意思(和不帶機關一樣)

6.如果renew_lifetime 的時間小于ticket_lifetime的時間,則renew until和Expires 時間相同,運作kinit -R不會生效,但是可以運作kinit -r xx

<code>ticket_lifetime = 60</code>

<code>renew_lifetime = 10</code>

<code>03</code><code>/25/14</code> <code>12:25:38 03</code><code>/25/14</code> <code>12:26:38 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:26:38</code>

<code>date</code> <code>&amp;&amp; kinit -R ;klist</code>

<code>Tue Mar 25 12:27:29 CST 2014</code>

<code>03</code><code>/25/14</code> <code>12:27:29 03</code><code>/25/14</code> <code>12:27:46 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:27:46</code>

<code>date</code><code>&amp;&amp;kinit -k -t hdfs.keytab hdfs</code><code>/xxxxx</code><code>@KERBEROS_HADOOP -r 10d;klist</code>

<code>Tue Mar 25 12:36:49 CST 2014</code>

<code>03</code><code>/25/14</code> <code>12:36:49 03</code><code>/25/14</code> <code>12:37:49 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>04</code><code>/04/14</code> <code>12:36:49</code>

<code>  </code><code>#renew life time變化了</code>

7.renew_lifetime的優先級高于max_renewable_life,如果renew_lifetime&lt;=max_renewable_life,

則取renew_lifetime,renew_lifetime&gt;=max_renewable_life時,也是取renew_lifetime的值

<code>renew_lifetime = 120</code>

<code>max_renewable_life = 10</code>

<code>03</code><code>/25/14</code> <code>12:42:20 03</code><code>/25/14</code> <code>12:43:20 krbtgt</code><code>/KERBEROS_HADOOP</code><code>@KERBEROS_HADOOP</code>

<code>        </code><code>renew </code><code>until</code> <code>03</code><code>/25/14</code> <code>12:44:20</code>

<code></code>

本文轉自菜菜光 51CTO部落格,原文連結:http://blog.51cto.com/caiguangguang/1383723,如需轉載請自行聯系原作者

繼續閱讀