遵循 Kubernetes 安全性最佳做法,建議您加密 AKS Edge Essentials 叢集上的 Kubernetes 秘密存放區。 您可以啟用 AKS Edge Essentials 的金鑰管理服務(KMS)提供者來執行此加密,藉此為儲存在 etcd 索引鍵值存放區中的 機密資訊啟用靜態加密。 它藉由產生金鑰加密金鑰 (KEK) 並每隔 30 天自動輪替它,來啟用此加密。 KEK 會使用系統管理員認證來保護,而且只能供系統管理員存取。
如需使用 KMS 的詳細資訊,請參閱官方 KMS 提供者檔案。
本文說明如何啟用 AKS Edge Essentials 叢集的 KMS 提供者。
先決條件
開始於版本 1.10.868.0 及之後,KMS 提供者對所有 AKS Edge Essentials 叢集都受到支援。
注意
KMS 提供者只能用於單一節點叢集。 提供者無法與實驗性特性,例如多節點搭配使用。
啟用 KMS 提供者
在您的 aksedge-config.json 檔案中,於 [Init] 區段中,將 [Init.KmsPlugin.Enable] 設定為 [true] :
"Init": {
"KmsPlugin": {
"Enable": true
}
}
部署期間會顯示下列輸出,顯示已啟用 KMS 提供者:
Preparing to install kms-plugin as encryption provider...
如需部署指示,請參閱 單一電腦部署。
注意
您只能在建立新部署時啟用或停用 KMS 提供者。 設定旗標之後,就無法變更。
確認已啟用 KMS 提供者
若要確認已啟用 KMS 提供者,請執行下列命令,並確定 kms-providers 的健康情況狀態為 OK:
kubectl get --raw='/readyz?verbose'
[+]ping ok
[+]Log ok
[+]etcd ok
[+]kms-providers ok
[+]poststarthook/start-encryption-provider-config-automatic-reload ok
若要在 AKS Edge Essentials 叢集中建立秘密,請參閱 Kubernetes 檔中的 使用 kubectl 管理秘密。
如果您遇到錯誤,請參閱 疑難解答 一節。
如何在 KEK 輪換後更新您的密碼
KEK 每 30 天自動更新一次。 此時,每個密碼都會使用您建立時使用的 KEK 進行加密。 當您下次更新密碼時,會使用目前的 KEK 重新加密密碼。 如果您沒有定期更新秘密值作為常規流程的一部分,那麼無論如何,請考慮每 30 天重寫一次它們(使用相同的值)。 這可確保您遵循 Kubernetes 最佳實務 ,並且每個秘密都使用最新的 KEK 加密。 對於較大的叢集,請考慮依序更新每個命名空間的密碼,或開發指令碼或其他自動化來簡化程式:
kubectl get secrets --all-namespaces -o json | kubectl replace -f -
故障排除
如果 KMS 提供者發生錯誤,請遵循下列程序:
檢查 AKS 版本是否 1.10.868.0 或更新版本。 使用下列命令來檢查目前的 AKS Edge Essentials 版本:
Get-Command -Module AKSEdge | Format-Table Name, Version如果版本較舊,請升級至最新版本。 如需詳細資訊,請參閱 升級 AKS 叢集。
檢視
readyzAPI。 如果問題持續發生,請確認已啟用 KMS 提供者。 請參閱 確認已啟用 KMS 提供者 一節。如果您在 [] 字段之前收到 “
kms-providers”,請收集診斷記錄以進行偵錯。 如需詳細資訊,請參閱 從叢集節點取得 kubelet 記錄。如果仍有錯誤,執行 AKS Edge Essentials 叢集的計算機可能會暫停或關閉一段時間(超過 30 天)。 若要讓 KMS 回到狀況良好的狀態,您可以使用
Repair-Kms命令來還原任何必要的令牌:Repair-AksEdgeKms如果您仍然遇到錯誤,請聯絡 Microsoft 客戶支援,並 收集記錄。