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 命令,C 可以直接访问 AB

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

最佳实践

为了最大限度地降低迁移过程中出现错误的风险,请遵循以下最佳实践。

  1. 确保源 KMS 和目标 KMS 都处于健康状态。

  2. 验证源 KMS 和目标 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 实例和目标 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 和目标 KMS 都有名称相同但值不同的密钥,--merge **不会** 迁移该密钥。仅当重复迁移尝试或使用模式分批进行迁移时,才使用 --merge

获取迁移帮助

在执行实时迁移之前,请考虑为这个关键过程获得帮助。

  1. 首先使用两个本地 KES + FS 部署 进行练习。
  2. [联系我们](mailto:hello@min.io?subj=KES migration)