輪替根金鑰

本文說明如何輪替根金鑰。如果根金鑰遭到入侵,或是您選擇定期輪替根金鑰來提升安全性,可以使用 RotationJob 資源將金鑰輪替為新的根金鑰。

輪替根金鑰會建立新的根金鑰,並將其設為主要金鑰,然後包裝所有非根金鑰。您無法刪除根金鑰,只能透過輪替來取代。如要進一步瞭解根金鑰,請參閱「根金鑰類型」。

如要瞭解 KMS API 的詳細資料,請參閱 KMS API 總覽,並查看 Key Management Service KRM API 的完整 API 定義。

事前準備

請務必備妥下列資訊再繼續操作:

  • 設定為存取 Management API 伺服器的 kubectl 指令。如要執行這項操作,請使用 gdcloud 指令列介面 (CLI)取得 kubeconfig 檔案

  • KMS 輪替工作管理員角色。如要取得輪替金鑰所需的權限,請要求機構 IAM 管理員授予您 KMS 輪替作業管理員 (kms-rotationjob-admin) 角色。

輪替根金鑰

如要建立新的根金鑰並輪替金鑰,請完成下列步驟:

  1. 建立 YAML 檔案,並加入 RotationJob 資源和下列內容:

    apiVersion: "kms.gdc.goog/v1"
    kind: RotationJob
    metadata:
      name: ROTATION_NAME
    spec:
      rootKeyResourceName: ROOT_KEY_RESOURCE_NAME
    

    ROTATION_NAME 替換為輪替工作的名稱,例如:rotate-job1

    ROOT_KEY_RESOURCE_NAME 替換為表單 namespace/NAMESPACE/secrets/ROOT_KEY_NAME 中指定的根金鑰名稱

    例如 namespaces/kms-system/secrets/ctm-root

  2. 將 YAML 檔案的內容套用至 KMS:

    kubectl apply -f FILENAME.yaml
    

    FILENAME 換成 YAML 檔案的名稱。

    執行指令後,KMS 會建立新的根金鑰,並使用新的根金鑰輪替所有金鑰。

  3. 如要確認根金鑰輪替作業已完成,請執行下列指令:

    kubectl get rotationjobs ROTATION_NAME
    

    ROTATION_NAME 改為輪替作業的名稱。

    執行指令後,如果輪替作業成功,您會看到 Completed 狀態。

  4. 從根金鑰中移除 Done 註解。移除註解後,您就能多次輪替金鑰。基礎架構作業人員 (IO) 必須執行這個步驟。請 IO 執行下列指令:

    kubectl annotate secret kms-key-ROOT_KEY_NAME -n kms-system gdch.cluster.gke.io/rotation-status-