金鑰輪替
金鑰輪替是指變更金鑰加密金鑰 (KEK) 中包含的基礎加密編譯資料。這項作業可自動觸發 (排定輪替作業的一部分),或手動觸發 (通常是在金鑰可能遭盜用的安全事件後)。金鑰輪替只會替換金鑰中包含原始加密/解密金鑰資料的單一欄位。
自動輪替金鑰
AWS Key Management Service (KMS) 支援自動輪替 KMS 金鑰。啟用後,AWS 每年會自動為您的金鑰產生新的加密金鑰內容。您不需要手動採取任何行動。
金鑰輪替後,AWS 上的 GKE 會使用新金鑰加密每個新密鑰。先前建立的密鑰仍會使用原始金鑰解密。因此,AWS 會永久保留 CMK 的舊金鑰內容,以便在讀取舊密鑰時解密舊 DEK。
您可以使用下列指令,查看 KMS 金鑰是否已啟用自動輪替功能:
aws kms get-key-rotation --key-id KMS_KEY_ID
將 KMS_KEY_ID
替換為 AWS KMS 金鑰 ID。
執行下列指令即可啟用自動金鑰輪替:
aws kms enable-key-rotation --key-id KMS_KEY_ID
手動輪替金鑰
本節說明如何手動輪替控制層或節點集區設定金鑰。
控制層設定金鑰
如要手動輪替控制平面設定金鑰,請執行下列步驟:
建立新的 Cloud Key Management Service 金鑰。 儲存 KMS 金鑰 ARN 的值。您會在後續步驟中使用這項記錄。
確認與叢集相關聯的 IAM 角色具有使用新金鑰加密及解密的權限。
使用
gcloud container aws clusters update
指令更新加密金鑰。gcloud container aws clusters update CLUSTER_NAME \ --location=GOOGLE_CLOUD_LOCATION \ --config-encryption-kms-key-arn=CONFIG_ENCRYPTION_KMS_KEY_ARN
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
CONFIG_ENCRYPTION_KMS_KEY_ARN
:新的 KMS 金鑰 ARN
控制層根磁碟區
如要手動輪替控制平面根磁碟區金鑰,請執行下列步驟:
建立新的 Cloud Key Management Service 金鑰。 儲存 KMS 金鑰 ARN 的值。您會在後續步驟中使用這項記錄。
確認與叢集相關聯的 IAM 角色具有使用新金鑰加密及解密的權限。
使用
gcloud container aws clusters update
指令更新加密金鑰。gcloud container aws clusters update CLUSTER_NAME \ --location=GOOGLE_CLOUD_LOCATION \ --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的支援 Google Cloud 區域,例如us-west1
ROOT_VOLUME_KMS_KEY_ARN
:用於加密根磁碟區的 AWS KMS 金鑰 Amazon Resource Name (ARN)
節點集區設定金鑰
如要手動輪替節點集區設定金鑰,請執行下列步驟:
確認與叢集相關聯的 IAM 角色具有使用新金鑰加密及解密的權限。
更新使用的 KMS 別名:
aws kms update-alias --alias-name KEY_ALIAS \ --target-key-id CONFIG_ENCRYPTION_KMS_KEY_ARN
更改下列內容:
KEY_ALIAS
:現有金鑰的別名CONFIG_ENCRYPTION_KMS_KEY_ARN
:新的 KMS 金鑰 ARN
強制叢集使用新的加密金鑰重新加密所有叢集 Secret:
kubectl get secrets --all-namespaces -o json | \ kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
停用舊的 AWS KMS 金鑰。詳情請參閱啟用及停用金鑰。
節點集區根磁碟區
如要手動輪替節點集區根磁碟區金鑰,請執行下列步驟:
確認與叢集相關聯的 IAM 角色具有使用新金鑰加密及解密的權限。
更新使用的 KMS 別名:
aws kms update-alias --alias-name KEY_ALIAS \ --target-key-id ROOT_VOLUME_KMS_KEY_ARN
更改下列內容:
KEY_ALIAS
:現有金鑰的別名ROOT_ENCRYPTION_KMS_KEY_ARN
:新的 KMS 金鑰 ARN
更新節點集區:
gcloud container aws node-pools update NODE_POOL_NAME \ --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
更改下列內容:
NODE_POOL_NAME
:節點集區名稱ROOT_VOLUME_KMS_KEY_ARN
:用於加密根磁碟區的 AWS KMS 金鑰 Amazon Resource Name (ARN)
停用舊的 AWS KMS 金鑰。詳情請參閱啟用及停用金鑰。