Azure Kubernetes Service (AKS) 中憑證管理與輪換概覽

Azure Kubernetes Service (AKS) 叢集使用憑證來進行各種元件間的認證,包括 AKS 管理控制平面元件與資料平面元件。 本文概述了 AKS 中的憑證管理與輪替。

重要事項

自 2027 年 4 月 1 日起,Azure Kubernetes Service (AKS) 不再支援aks-disable-kubelet-serving-certificate-rotation=true用來停用 Kubelet 服務憑證輪換(KSCR)的節點池標籤。 你可以用這個標籤建立新的節點池,但 AKS 不會尊重它。 此行為表示節點池會在啟用 KSCR 的情況下建立。 對於現有的節點池,KSCR 將在下一次重映像操作時自動啟用。 在此日期之前,你可以用 az aks nodepool update 帶有 aks-disable-kubelet-serving-certificate-rotation=true 標籤的指令更新你的節點池。 為了準備移除,你應該更新你的工作負載,並確保使用正確的憑證路徑。 欲了解更多資訊,請參閱 退休 GitHub 議題。 想隨時掌握公告與更新,請參考 AKS 發布公告。

附註

對於啟用 Kubernetes RBAC 的叢集,節點用戶端憑證與服務憑證的自動輪換預設會啟用。

  • 2019 年 5 月前建立的 AKS 叢集擁有叢集 CA 憑證,且憑證會在兩年後過期。
  • 2019 年 5 月後建立的 AKS 叢集擁有 30 年後失效的叢集 CA 憑證。

什麼是憑證輪替?

憑證輪替是指以新的憑證取代數位憑證以維持安全性並防止中斷的過程。 這是一項關鍵的安全措施,用以替換過期憑證、降低金鑰外洩風險,並因應新的安全需求。 此過程可能包括自動續約憑證或手動替換。 通常,複雜的更換作業需要預先規劃的維護時段,尤其是在涉及根憑證時。

AKS 中的憑證、憑證授權機構與服務帳戶憑證

AKS 產生並使用以下憑證、憑證授權中心(CA)及服務帳戶(SA)令牌:

Certificate 說明 旋轉法
叢集憑證授權單位 由 AKS 代表你建立,且是你叢集獨有的。 此 CA 憑證用於向在您的資料平面中執行的 kubelet 簽發用戶端與伺服器憑證,以及 API 伺服器所使用的憑證。 Manual
服務帳戶令牌 由叢集CA憑證簽署的JSON網路令牌(JWT)。 運行在代理節點上的 kubelet 會自動請求並續訂這些 token。 欲了解更多資訊,請參閱 「使用服務帳戶代幣投影啟動Pod」。 自動刷新,作為手動叢集 CA 輪替的一部分
API 伺服器憑證 由叢集 CA 憑證簽署並發出。 此憑證用於建立基於 TLS 的 API 伺服器連線時,例如與 kubectl。 自動刷新,作為手動叢集 CA 輪替的一部分
Kubelet 服務憑證 在允許 kubelet 服務憑證輪替的叢集中,叢集 CA 憑證會發出並簽署此憑證。 否則,代理節點會產生並自我簽署此憑證。 此憑證可用來與需要連線至任一 kubelet 提供服務端點的元件(例如 metrics-server)建立以 TLS 為基礎的連線。 已啟用 kubelet 服務憑證輪替的叢集會自動套用
Kubelet 用戶端憑證 由叢集 CA 憑證簽署並發出。 此憑證使用AKS專用的 TLS啟動協定 ,在Kubelet啟動前提供客戶端憑證及對應的kubeconfig。 AKS TLS 協定僅在 Kubernetes 叢集版本 1.32 或更高版本上啟用。 預設會使用標準 TLS 啟動程序自動更新,並作為手動叢集 CA 輪替的一部分
kubectl 用戶端憑證 用於與 API 伺服器的憑證式驗證。 在手動輪替叢集 CA 後,再手動輪替

附註

AKS 不會管理任何為客戶工作負載建立或專屬於客戶工作負載的憑證。

AKS 中的憑證自動輪替

AKS 會自動輪替以下憑證:

  • 2022 年 3 月後建立且啟用 Kubernetes RBAC 的叢集,預設會啟用 Kubelet 客戶端憑證自動旋轉功能。

附註

你可能需要定期手動輪換這些憑證,出於安全或政策考量。 例如,您可能有原則每隔 90 天輪替所有憑證。 預設情況下,kubelet 客戶端憑證自動旋轉是手動進行的。

憑證自動輪替的限制

下列限制適用於憑證自動輪替:

  • 叢集必須使用原版 TLS 啟動或 AKS 安全 TLS 啟動,這套系統預設會推廣到所有 Azure 區域。
  • 對於現有叢集,你需要升級叢集才能啟用憑證自動輪替。

AKS 中的手動證書輪替

您必須手動輪替下列憑證:

當您輪換叢集 CA 憑證時,以下子憑證也會被更新:

  • 服務帳戶(SA)令牌
  • API 伺服器憑證
  • Kubelet 用戶端憑證
  • Kubelet 伺服器憑證(如果叢集啟用 kubelet 提供憑證輪替)

在輪換叢集 CA 憑證後,你也必須手動輪換 kubectl 用戶端憑證,以確保能持續存取 API 伺服器。

Kubelet 用戶端憑證的 TLS 啟動

Kubelet 採用 AKS 專用的 TLS 啟動協定,並依賴節點在 Entra ID 中的身份。 此身份在 kubelet 啟動前提供客戶端憑證及對應的 kubeconfig。 此變更旨在加強 AKS 節點的安全態勢,消除 kubelet 對靜態啟動令牌秘密的依賴,以向 API 伺服器註冊自身。 如果安全 TLS 啟動協定因任何原因失敗,kubelet 仍可透過啟動令牌向 API 伺服器註冊,節點最終會準備好。 你會看到 aksService (而非 system:bootstrap:<>)作為由協定建立的憑證簽署請求(CSR)物件上的請求欄位。

Kubelet 用戶端憑證仍位於 Linux 節點的 /var/lib/kubelet/pki/kubelet-client-current.pem 中,Windows 節點則是 C:\k\pki\kubelet-client-current.pem 中。 bootstrap-kubeconfig 仍然位於同一個位置。 AKS 持續自動輪替此憑證,作為憑證輪替流程的一部分。

Kubelet 服務憑證輪替

Kubelet 提供憑證輪替使 AKS 能使用 kubelet server TLS bootstrapping 來執行及輪替叢集 CA 簽署的服務憑證。

欲了解更多資訊,請參閱 Azure Kubernetes Service (AKS) 中的管理與輪換憑證。

Kubelet 服務憑證輪替限制

  • 支援 Kubernetes 版本 1.27 及以上。
  • 當節點集區使用以早於 202501.12.0 的任何節點映像為基礎的節點集區快照集時不支援。
  • 你無法手動啟用這個功能。 現有節點集區在第一次升級至 Kubernetes 1.27 或更新版本之後,預設會啟用 kubelet 服務憑證輪替。 Kubernetes 1.27 或更高版本的新節點池預設啟用 kubelet 服務憑證輪替。 若想知道您所在地區是否啟用 kubelet 服務憑證輪替,請參閱 AKS 版本。
  • Kubernetes RBAC 必須在叢集上啟用,才能啟用 kubelet 提供憑證輪替。 如果你已有叢集,必須升級該叢集以啟用 Kubernetes RBAC。

後續步驟