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

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

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

雲端代理程式

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

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

AKS 中的雲端代理程式服務負責協調基礎結構元件的建立、讀取、更新和刪除 (CRUD) 作業,例如 虛擬機器 (VM) 、虛擬網路 介面 (VNIC) ,以及叢集中 (VNET) (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 建立憑證簽署要求, (CSR) ,由叢集 CA 簽署,以便從 kubelet 到 API 伺服器進行通訊。
  • Etcd 金鑰值存放區具有叢集 CA 簽署的憑證,可進行從 etcd 至 API 伺服器的通訊。

etcd CA

Etcd 金鑰值存放區具有 etcd CA,可簽署憑證來驗證和授權叢集中 etcd 複本之間的資料複寫。

前端 Proxy CA

前端 Proxy CA 可保護 API 伺服器與擴充功能 API 伺服器之間的通訊。

憑證佈建

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

  • 憑證會儲存在 /etc/kubernetes/pki 中。
  • 這些金鑰是 RSA 4096、EcdsaCurve:P384

注意

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

憑證更新和管理

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

  • Kubelet 伺服器憑證
  • Kubeconfig 用戶端憑證

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

憑證撤銷

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

取得想要撤銷的憑證序號後,請使用 Kubernetes 自訂資源來定義和保存撤銷資訊。 每個撤銷物件都可以包含一或多個撤銷項目。

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

  • 序號
  • Group
  • 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 

下一步