共用方式為


Azure Arc 所啟用 AKS 中的憑證管理概觀

適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

Azure Arc 所啟用的 AKS 會使用憑證和令牌型驗證的組合,以保護負責平臺內不同作業的服務(或代理程式)之間的通訊。 憑證式驗證會使用數位證書來識別實體(代理程式、計算機、使用者或裝置),再授與資源的存取權。

雲端代理程式

當您部署由 Arc 啟用的 AKS 時,AKS 會安裝用來在叢集內執行各種功能的代理程式。 這些代理程式包括:

  • 雲端代理程式:負責基礎平台協調流程的服務。
  • 節點代理程式:位於執行虛擬機建立、刪除等實際工作的每個節點上的服務。
  • 金鑰管理系統 (KMS) Pod:負責金鑰管理的服務。
  • 其他服務:雲端操作員、憑證管理員等。

AKS 中的雲端代理程式服務負責協調基礎結構元件的建立、讀取、更新和刪除作業,例如叢集中的 虛擬機器(VM)、虛擬網絡 介面(VNIC)和 虛擬網絡(VNET)。

若要與雲端代理程序通訊,用戶端需要布建憑證,以確保此通訊的安全。 每個用戶端都需要與其建立關聯的身分識別,這會定義與客戶端相關聯的角色型 存取控制 (RBAC) 規則。 每個身分識別都包含兩個實體:

  • 令牌,用於初始驗證,其會傳回憑證,以及
  • 憑證,從上述登入程式取得,並用於任何通訊中的驗證。

每個實體在特定期間有效(預設值為90天),其到期時間結束。 若要繼續存取雲端代理程式,每個用戶端都需要更新憑證並輪替令牌。

憑證類型

Arc 啟用的 AKS 中,有兩種類型的憑證:

  • 雲端代理程式 CA 憑證:用來簽署/驗證客戶端憑證的憑證。 此憑證有效期為 365 天 (1 年)。
  • 用戶端憑證:雲端代理程式 CA 憑證所簽發的憑證,可讓用戶端向雲端代理程序進行驗證。 這些憑證通常有效 90 天。

Microsoft建議您在新版本的 60 天內更新叢集,不僅為了確保內部憑證和令牌保持最新狀態,也確保您能夠存取新功能、錯誤修正,以及隨時掌握重要的安全性修補程式。 在這些每月更新期間,更新程式會輪替叢集正常作業期間無法自動輪替的任何令牌。 憑證和令牌有效性會重設為從叢集更新日期起的預設 90 天。

在 Arc 所啟用的 AKS 中保護與憑證的安全通訊

憑證可用來建置叢集內元件之間的安全通訊。 AKS 提供內建 Kubernetes 元件的零接觸、現成布建和管理憑證。 在本文中,您將瞭解如何在 Arc 啟用的 AKS 中布建和管理憑證。

憑證和 CA

AKS 會產生並使用下列證書頒發機構單位 (CA) 和憑證。

叢集 CA

  • API 伺服器具有叢集 CA,它會簽署憑證,以便從 API 伺服器到 kubelet的單向通訊。
  • 每個憑證 kubelet 簽署要求也會建立叢集 CA 所簽署的憑證簽署要求,以便從 kubelet 與 API 伺服器進行通訊。
  • etcd 金鑰值存放區具有叢集 CA 簽署的憑證,以便從 etcd 與 API 伺服器進行通訊。

etcd CA

etcd 金鑰值存放區具有 etcd CA,可簽署憑證,以在叢集中的 etcd 複本之間驗證和授權數據復寫。

Front Proxy CA

Front Proxy CA 可保護 API 伺服器與擴充 API 伺服器之間的通訊。

憑證佈建

的憑證布建 kubelet 是使用 TLS 啟動載入來完成。 針對所有其他憑證,請使用 YAML 型金鑰和憑證建立。

  • 憑證會儲存在 /etc/kubernetes/pki 中。
  • 密鑰為 RSA 4096、EcdsaCurve:P384

注意

跟證書的有效期限為 10 年。 所有其他非跟證書都是短期憑證,且有效期為四天。

憑證更新和管理

非跟證書會自動更新。 除了下列憑證之外,Kubernetes 的所有控制平面憑證都會受到管理:

  • Kubelet 伺服器證書
  • Kubeconfig 客戶端憑證

作為安全性最佳做法,您應該使用 Active Directory 單一登錄 進行用戶驗證。

憑證撤銷

證書吊銷應該很少見,而且應該在憑證更新時完成。

擁有您想要撤銷的憑證序號之後,請使用 Kubernetes 自定義資源來定義及保存撤銷資訊。 每個撤銷物件都可以由一或多個撤銷項目組成。

若要執行撤銷,請使用下列其中一項:

  • 序號
  • 群組
  • DNS 名稱
  • IP 位址

您可以指定一 notBefore 個時間,只撤銷在特定時間戳之前發出的憑證。 notBefore如果未指定時間,則會撤銷符合撤銷的所有現有和未來憑證。

注意

目前無法使用伺服器證書的撤銷 kubelet

如果您在執行撤銷時使用序號,您可以使用 Repair-AksHciClusterCerts 下面所述的PowerShell命令,讓您的叢集進入工作狀態。 如果您使用稍早所列的任何其他欄位,請務必指定時間 notBefore

apiVersion: certificates.microsoft.com/v1 
kind: RenewRevocation 
metadata: 
  name: my-renew-revocation 
  namespace: kube-system 
spec: 
  description: My list of renew revocations 
  revocations: 
  - description: Revoked certificates by serial number 
    kind: serialnumber 
    notBefore: "2020-04-17T17:22:05Z" 
    serialNumber: 77fdf4b1033b387aaace6ce1c18710c2 
  - description: Revoked certificates by group 
    group: system:nodes 
    kind: Group 
  - description: Revoked certificates by DNS 
    dns: kubernetes.default.svc. 
    kind: DNS 
  - description: Revoked certificates by DNS Suffix 
    dns: .cluster.local 
    kind: DNS 
  - description: Revoked certificates by IP 
    ip: 170.63.128.124 
    kind: IP 

下一步