KMS 迁移
概念
KES服务器连接到密钥管理服务(KMS)。 KMS充当持久且安全的密钥存储。 KES服务器将所有主密钥存储在KMS中。
迁移KMS实例
在某些情况下,您需要从一个KMS实例迁移到另一个KMS实例,例如从云服务迁移到本地部署解决方案。 在这种情况下,您必须将部分或全部主密钥迁移到新的KMS实例。
虽然使用KMS专用工具手动执行此操作是可行的,但我们不建议将密钥迁移这样关键的操作手动完成。手动迁移单个密钥会增加主密钥暴露或丢失的风险。
相反,KES CLI 提供了一个迁移命令,kes migrate.
Themigrate该命令支持将主密钥从一个KMS实例迁移到另一个KMS实例。
例如,您可以使用该命令将Hashicorp Vault实例迁移到另一个Hashicorp Vault实例。
或者,kes migrate可以将 Hashicorp Vault 实例迁移到或从 AWS Secrets Manager KMS 迁移。
KMS 实例不需要是相同类型或提供商。
Themigrate命令必须可以直接访问两者同时的 KMS 实例。
例如,如果源 KMS 运行在A目标 KMS 运行在B然后运行migrate来自命令C可以直接访问两者的A和B:
最佳实践
为降低迁移过程中的错误风险,请遵循以下最佳实践:
-
确保源KMS和目标KMS都处于健康状态。
-
验证源和目标 KMS 的有效 KES 配置
-
验证每个 KES 服务器能否访问其 KMS 实例。 特别要检查以下命令能否成功启动 KES 服务器:
kes server --config <your-config-file.yml> -
如果您的用户权限允许列出键或者您有
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 中列出密钥。 那里可能已经存在密钥。
-
准备好源和目标 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覆盖现有键的标志,作为迁移的一部分。
合并键
除了覆盖目标 KMS 中的现有密钥外,您还可以使用以下方式将源 KMS 合并到目标 KMS 中--mergeflag.
--merge仅迁移目标 KMS 中不存在的主密钥。如果源KMS和目标KMS各自拥有名称相同但值不同的密钥,--mergedoes不迁移密钥。
仅使用--merge当重复迁移尝试或使用模式进行批量迁移时。
获取迁移帮助
在执行实时迁移之前,请考虑为这一关键流程寻求协助。
- 首先使用两个本地KES + FS 部署
- [联系我们](mailto:hello@min.io?subj=KES migration)