在上一篇中,我們建立了一個帶有Policy的token,但這還不夠。
因為在現實中,我們不能讓一個token永遠有效力,這也可能是一個資安破口。
因此,在今天,我們要來談談 ──
Token 到底是什麼?為什麼需要 TTL?Lease 又是什麼?
甚麼是 Vault Token ?
Vault token 其實就是上一篇我們建立用來登入 vault 的 token,我們也可以將其理解為在進行 Authentication 後,Vault 發給 Client 的 Credential,拿到Token後便可以存取存在 Vault 裡的 credentials。
而Token由於是用來存取Vault的重要資訊,因此,控制其有效期限便相當重要。
Token 的 TTL (Time-to-Live)
我們試想,如果 Credential 永久有效,會發生甚麼問題呢?
對於內部員工來說,乍看之下也許比較方便,就好像你家的門鎖一樣,若永遠都不換,在開門時用同一把就好。
但若今天這個Token被駭客獲取,他將可以拿走你房子裡面的所有貴重物品,有可能是地契、提款卡、護照等等。
這個 "方便" 所帶來的代價真的值得嗎?
因此,為了解決這個潛在風險,Credential 應該具有生命週期,TTL即代表著存留時間,也就是Token還能使用的期限。
透過Vault,我們可以建立一個 TTL 為一小時的 Token。
vault token create -policy="myapp-read" -ttl=1h
可以透過lookup指令查看TTL:
vault token lookup 
從上面的途中可以看到TTL已經開始呈現倒數狀態。
那甚麼又是 Lease?
With every dynamic secret and service type authentication token, Vault creates a lease: metadata containing information such as a time duration, renewability, and more. Vault promises that the data will be valid for the given duration, or Time To Live (TTL).
透過官方文件的敘述,我們可以這樣理解:
Lease是 Vault 對具有生命週期的資源所建立的一份「租約」。
所以,lease 包含了對該 dynamic token 的描述,如 TTL、是否 renewable 等等,而每個 lease 租約都有一個 unique 的lease id去對應。
這在之後當我們談到Dynamic secret時會再回來check out這個概念。