KMS 遷移

K E S C l i e n t K E S S e r v e r - K K M M S S 1 2

概念

KES 伺服器會連接到金鑰管理服務 (KMS)。KMS 作為持久且安全的金鑰儲存庫。KES 伺服器會將所有主金鑰儲存在 KMS 中。

遷移 KMS 實例

有些情況需要您從一個 KMS 實例移至另一個實例,例如從雲端服務移至內部部署解決方案。在這種情況下,您必須將部分或全部主金鑰遷移到新的 KMS 實例。

雖然可以使用特定於 KMS 的工具手動執行此操作,但我們不建議手動執行如此關鍵的金鑰遷移操作。手動遷移個別金鑰會增加暴露或遺失主金鑰的風險。

相反地,KES CLI 提供遷移命令 kes migrate

migrate 命令支援將主金鑰從一個 KMS 實例遷移到另一個 KMS 實例。例如,您可以使用此命令將 Hashicorp Vault 實例遷移到另一個 Hashicorp Vault 實例。或者,kes migrate 可以將 Hashicorp Vault 實例遷移到 AWS Secrets Manager KMS 或從其中遷移。KMS 實例不必是相同類型或提供者。

migrate 命令**必須**同時直接存取**兩個** KMS 實例。例如,如果來源 KMS 在 A 執行,而目標 KMS 在 B 執行,則從 C 執行 migrate 命令,其可以直接存取 AB

A K M S 1 C m i g r a t e B K M S 2

最佳實務

為了盡量減少遷移過程中發生錯誤的風險,請遵循下列最佳實務

  1. 確保來源和目標 KMS 都處於健全狀態。

  2. 驗證來源和目標 KMS 的有效 KES 設定

  3. 驗證每個 KES 伺服器都可以存取其 KMS 實例。特別是,檢查下列命令是否成功啟動 KES 伺服器

    kes server --config <your-config-file.yml>
    
  4. 如果您的使用者權限允許列出金鑰,或者您擁有 root 存取權,則可以透過下列方式列出應遷移的金鑰

    export KES_SERVER=https://<KES-endpoint>
    export KES_CLIENT_KEY=<your-private-key>
    export KES_CLIENT_CERT=<your-certificate>
    
    kes key list
    

    提示:您也可以透過指定連接至目標 KMS 的 KES 伺服器的環境變數來列出目標 KMS 中的金鑰。您可能已經在那裡有金鑰。

  5. 備妥來源和目標 KMS 實例的 KES 組態檔案。

遷移金鑰

遷移所有主金鑰

以下命令會將所有金鑰從來源伺服器遷移至目標伺服器。

kes migrate --from <source.yml> --target <target.yml>

遷移部分主金鑰

若要遷移所有主金鑰的子集,請指定一個模式。只有符合該模式的主金鑰才會被遷移。

kes migrate --from <source.yml> --target <target.yml> <pattern>

例如:

kes migrate --from source.yml --target target.yml my-key*

遷移單一金鑰

若要遷移單一主金鑰,請指定金鑰名稱。

kes migrate --from <source.yml> --target <target.yml> <key-name>

例如:

kes migrate --from source.yml --target target.yml my-master-key

行為

目標伺服器上已存在的金鑰

覆寫金鑰

預設情況下,migrate 命令不會覆寫目標 KMS 上已存在的金鑰。相反地,如果無法將金鑰從來源遷移到目標,該命令會報告錯誤。

使用 --force 旗標以在遷移過程中覆寫現有金鑰。

注意!
覆寫主金鑰會清除之前的金鑰!

合併金鑰

您也可以使用 --merge 旗標將來源 KMS 合併到目標 KMS,而不是覆寫目標 KMS 上已存在的金鑰。

--merge 只會遷移目標 KMS 上不存在的主金鑰。

如果來源和目標 KMS 各自擁有名稱相同但值不同的金鑰,--merge 不會遷移該金鑰。只有在重複嘗試遷移或使用模式分批執行遷移時,才使用 --merge

取得遷移協助

在執行即時遷移之前,請考慮尋求此重要程序的協助。

  1. 首先使用兩個本地 KES + FS 部署練習。
  2. [聯絡我們](mailto:hello@min.io?subj=KES migration)