使用 API Token
Rancher v2.8.0 引入了 Rancher Kubernetes API,可以透過 kubectl 管理 Rancher 資源。本頁面涵蓋了與 Rancher CLI、kubeconfig 檔案、Terraform 和 v3 API 瀏覽器 一起使用的 API token 資訊。
預設情況下,某些叢集級別的 API token 會以無限的存活時間 (ttl=0) 產生。換句話說,具有 ttl=0 的 API token 永不過期,除非您手動將其作廢。Token 不會因為變更密碼而失效。
您可以透過刪除 API token 或停用使用者帳戶來停用 API token。
刪除 Token
刪除 token 的步驟:
-
在 Rancher API 檢視中前往
https://<Rancher-Server-IP>/v3/tokens查看所有 token 列表。 -
透過 ID 存取您要刪除的 token。例如,
https://<Rancher-Server-IP>/v3/tokens/kubectl-shell-user-vqkqt -
點選 Delete。
以下是使用 ttl=0 產生的 token 完整列表:
| Token | 描述 |
|---|---|
kubectl-shell-* | 在瀏覽器中存取 kubectl shell |
agent-* | 用於 agent 部署的 token |
compose-token-* | 用於 compose 的 token |
helm-token-* | 用於 Helm chart 部署的 token |
drain-node-* | 用於 drain 的 token (Rancher 使用 kubectl 進行 drain,因為沒有原生的 Kubernetes API)。 |
設定 Kubeconfig Token 的 TTL
管理員可以為 Kubeconfig token 設定全域的存活時間 (TTL)。變更預設的 kubeconfig TTL 可以透過導航至全域設定,並將 kubeconfig-default-token-ttl-minutes 設定為所需的分鐘數。從 Rancher v2.8 開始,kubeconfig-default-token-ttl-minutes 的預設值為 43200,這表示 token 會在 30 天後過期。
此設定適用於所有 kubeconfig token,但由 CLI 產生 kubeconfig token 建立的 token 除外。
在產生的 Kubeconfig 中停用 Token
將 kubeconfig-generate-token 設定設為 false。此設定指示 Rancher 在使用者點擊下載 kubeconfig 檔案時不再自動產生 token。當此設定停用 時,產生的 kubeconfig 會參照 Rancher CLI 以擷取叢集的短期 token。當在客戶端 (例如 kubectl) 中使用此 kubeconfig 時,需要安裝 Rancher CLI 才能完成登入請求。
Token 雜湊
您可以啟用 token 雜湊,其中 token 會使用 SHA256 演算法進行單向雜湊。這是一個不可逆的過程:一旦啟用,此功能就無法停用。您應該先在測試環境中評估此設定,並且/或在啟用前進行備份。
此功能會影響所有 token,包括但不限於以下內容:
- Kubeconfig token
- Bearer token API 金鑰/呼叫
- 內部操作使用的 token
Token 設定
這些全域設定會影響 Rancher token 的行為。
| 設定 | 描述 |
|---|---|
auth-user-session-ttl-minutes | 使用者認證工作階段 token 的 TTL,以分鐘為單位。 |
auth-user-session-idle-ttl-minutes | 使用者認證工作階段 token 在無使用者活動時的 TTL,以分鐘為單位。 |
kubeconfig-default-token-ttl-minutes | 套用於所有 kubeconfig token 的預設 TTL,但由 Rancher CLI 產生的 token 除外。 |
auth-token-max-ttl-minutes | 所有 token 的最大 TTL,但由 auth-user-session-ttl-minutes 控制的 token 除外。 |
kubeconfig-generate-token | 如果為 true,則在使用者下載 kubeconfig 時自動產生 token。 |
auth-user-session-ttl-minutes
存活時間 (TTL) 持續時間,以分鐘為單位,用於決定使用者認證工作階段 token 何時過期。過期時,使用者必須登入並取得新的 token。此設定不受 auth-token-max-ttl-minutes 影響。工作階段 token 會在使用者登入 Rancher 時建立。
auth-user-session-idle-ttl-minutes
登入工作階段 token 在無使用者活動時的存活時間 (TTL),以分鐘為單位。
預設情況下,auth-user-session-idle-ttl-minutes 設定為與 auth-user-session-ttl-minutes 相同的值 (以維持向後相容性)。它永遠不能超過 auth-user-session-ttl-minutes 的值 。
kubeconfig-default-token-ttl-minutes
存活時間 (TTL) 持續時間,以分鐘為單位,用於決定 kubeconfig token 何時過期。當 token 過期時,API 會拒絕該 token。此設定不能大於 auth-token-max-ttl-minutes。此設定適用於在請求的 kubeconfig 檔案中產生的 token,但由 Rancher CLI 產生的 token 除外。從 Rancher v2.8 開始,預設持續時間為 43200,這表示 token 會在 30 天後過期。
auth-token-max-ttl-minutes
認證 token 允許的最大存活時間 (TTL),以分鐘為單位。如果使用者嘗試建立 TTL 大於 auth-token-max-ttl-minutes 的 token,Rancher 會將 token TTL 設定為 auth-token-max-ttl-minutes 的值。適用於所有 kubeconfig token 和 API token。從 Rancher v2.8 開始,預設持續時間為 129600,這表示 token 會在 90 天後過期。
kubeconfig-generate-token
當為 true 時,透過 UI 請求的 kubeconfig 會包含有效的 token。當為 false 時,kubeconfig 會包含使用 Rancher CLI 提示使用者登入的指令。CLI 然後會為使用者擷取並快取 token。