輪替 KSA 簽署金鑰

Kubernetes 服務帳戶 (KSA) 可為在 Pod 中執行的程序提供身分。

Kubernetes 服務帳戶與應用程式用來對 Google Cloud API 發出授權呼叫的Google Cloud 服務帳戶不同。

Google Distributed Cloud 會使用私密加密編譯金鑰,簽署發給 Pod 的 KSA 權杖。當 Pod 將要求傳送至 Kubernetes API 伺服器時,kubelet 會使用對應的公開金鑰驗證權杖。當 Pod 使用 Workload Identity 呼叫 API 時, Google Cloud Google Cloud 會使用相同的公開金鑰驗證 Pod 的身分。

建立使用者叢集時,Google Distributed Cloud 會產生私密和公開金鑰。此外,在建立叢集期間,Google Distributed Cloud 會向機群註冊叢集,並將公開金鑰提供給 Google Cloud。

稍後可以輪替私密/公開金鑰組。輪替程序會自動核發以新私密金鑰簽署的新權杖。輪替完成後,叢集會擁有新的私密金鑰、新的公開金鑰,以及更新的權杖。此外,Google Cloud 也擁有新的公開金鑰。

繫結權杖和舊版權杖

Pod 呼叫 Kubernetes API 伺服器時,可以使用舊版權杖或繫結權杖進行驗證和授權。繫結權杖的生命週期有限,會透過投射磁碟區分配給 Pod。舊版權杖永不過期,且會保留在 Kubernetes Secret 中。 建議使用繫結權杖,因為這類權杖較為安全。

金鑰輪替期間,繫結權杖和舊版權杖都會重新整理。

限制

啟動金鑰輪替

開始輪替金鑰前,請先考量下列事項:

  • 在金鑰輪替期間,您無法啟動其他金鑰輪替、憑證授權單位輪替或叢集更新。

  • 金鑰輪替作業無法暫停或復原。所有舊金鑰都會遭到刪除。

  • 金鑰輪替會刪除現有叢集節點,並建立新節點。

如要開始輪替金鑰,請按照下列步驟操作:

gkectl update credentials ksa-signing-key rotate \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG \
    [--skip-prompt]

更改下列內容:

  • USER_CLUSTER_CONFIG:使用者叢集設定檔的路徑

  • ADMIN_KUBECONFIG_FILE:管理員叢集 kubeconfig 檔案的路徑

如不想收到提示,請加入 --skip-prompt

查看金鑰輪替狀態

如要查看金鑰輪替狀態,請按照下列步驟操作:

gkectl update credentials ksa-signing-key status \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONIFG

如果金鑰輪替作業已完成,您會看到類似以下的訊息:

State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: True,
reason: KSASigningKeyRotationCompleted,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[2]}

如果 KSA 簽署金鑰輪替作業仍在進行中,您會看到類似下列訊息:

State of KSASigningKeyRotation with KSASigningKeyVersion 2 is -
status: False,
reason: KSASigningKeyRotationProcessedReason,
message:{"tokenVersion":2,"privateKeyVersion":2,"publicKeyVersions":[1,2]}