iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
Security

身分驗證你我他 ─ 使用 HashiCorp Vault 與 Terraform 打造 Secret 與 Identity 實驗室系列 第 7

Day 7. 初始化 Vault:Root Token、Unseal Keys 與基本操作

  • 分享至 

  • xImage
  •  

還記得前幾天我們run起Vault dev Server了嗎?
我們也可以採用tls方式run起伺服器,並指定root token的值:

vault server -dev -dev-listen-address="0.0.0.0:8200" -dev-root-token-id root -dev-tls

Root Token

Root Token 可以把它想像成 Vault 裡面的「最高管理員憑證」。它擁有非常高的權限,幾乎可以操作 Vault 中的所有功能,例如建立 Policy、設定 Authentication Method、讀寫 Secrets,甚至建立其他 Token。

因此,在正式環境中並不建議讓應用程式直接使用 Root Token,而是應該透過 Policy 與不同的 Authentication Method,替不同的使用者或應用程式配置最小必要權限。

啟動 Vault 後,我們可以開啟瀏覽器進入:

https://:8200

接著選擇 Token 作為登入方式,並輸入剛才設定的:

root

成功登入後,就可以看到 Vault 提供的 Web UI,並透過圖形化介面管理 Secrets、Authentication、Policies 等功能。

https://ithelp.ithome.com.tw/upload/images/20260920/20128925oSpozMIpT0.png

不過這裡有一個非常重要的觀念:Dev Server 與正式環境中的 Vault 初始化流程並不相同。

使用 vault server -dev 啟動時,Vault 會自動完成初始化(Initialize)與解封(Unseal),並且直接產生 Root Token,因此我們可以馬上開始操作。

但在正式模式下啟動 Vault 時,Vault 一開始會處於 Uninitialized 狀態。我們必須先執行:

vault operator init

Vault 才會產生初始化所需要的資訊,其中最重要的就是:

  • Unseal Keys
  • Initial Root Token

例如:

Unseal Key 1: xxxxx
Unseal Key 2: xxxxx
Unseal Key 3: xxxxx
Unseal Key 4: xxxxx
Unseal Key 5: xxxxx

Initial Root Token: hvs.xxxxxxxxx

Root Token 是「權限」的概念,用來證明你有權限操作 Vault;而 Unseal Key 則是「解鎖 Vault」的概念,用來讓 Vault 能夠取得解密資料所需的 Encryption Key。

換句話說:

Root Token 決定你能不能操作 Vault;Unseal Key 決定 Vault 本身能不能開始工作。

Seal & UnSeal

前面提到在我們啟動 Vault 伺服器時,它會以密封狀態啟動。在這種狀態下,Vault 可以存取實體存儲,但無法解密其中的任何資料。

因此,Unseal 指的是取得解密金鑰的過程,需要利用足夠數量的 Unseal Keys 重建 Root Key,讓 Vault 能解密它的 Encryption Key,進而正常讀寫 Vault 裡的資料。


上一篇
Day 6. Vault Architecture:Server、Storage Backend
下一篇
Day 8. Vault KV Secrets Engine:第一個 Secret
系列文
身分驗證你我他 ─ 使用 HashiCorp Vault 與 Terraform 打造 Secret 與 Identity 實驗室8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言