跳至主要内容

使用 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 的步驟:

  1. 在 Rancher API 檢視中前往 https://<Rancher-Server-IP>/v3/tokens 查看所有 token 列表。

  2. 透過 ID 存取您要刪除的 token。例如,https://<Rancher-Server-IP>/v3/tokens/kubectl-shell-user-vqkqt

  3. 點選 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。