旋转根密钥
最好是定期轮换根密钥 (即,创建新版本的密钥)。 定期轮换减少了被称为密钥的 "cryptoperiod",也可用于人员更替,流程故障或检测安全问题等特定情况下。
如果您怀疑某个密钥已泄露,请尽快将其禁用。 请查看 禁用根密钥 以获取更多信息。
请注意,根密钥不仅仅用于创建数据加密密钥 (DEK),它们还与主密钥 (由 IBM 使用硬件安全模块保护) 结合使用,以创建 DEK 的“包装”。 生成的“打包数据加密密钥”(WDEK) 保护用于加密数据的 DEK。 如果用户具有要使用的 DEK,那么可以在使用 wrap
调用创建 WDEK 时传递该密钥。 如果未指定 DEK,那么 Key Protect 将为您创建 DEK。
旋转到新版本的根密钥不会立即创建新的 WDEK,但这确实意味着在用户发起的下一次合并和重新合并时,将使用新的根密钥来创建新的 WDEK。 注意,新的 WDEK 也可以解包,用来读取用旧版 DEK 加密的数据,旧版 WDEK 仍然可以解包获得 DEK。
每次轮换都会创建密钥的新“版本”,并且将按密钥版本向您的 IBM Cloud 帐户收费。 请查看 定价 以获取更多信息。
手动或自动旋转
只能使用 Key Protect来旋转根密钥。 不能轮换标准密钥。
根密钥可以手动旋转,也可以按密钥所有者设置的调度进行旋转。 您选择的选项取决于您的首选项和用例需求。
-
制定轮换政策
最简单的密钥轮换选项 (设置 自动轮换时间间隔 ) 意味着将更新根密钥,而无需用户进一步执行操作。 这些轮换可以设置为 30 天间隔 (换言之,每 30 天,60 天,90 天,最多 12 个月,或 720 天)。 可以在 UI 中或通过使用 Key Protect API 来管理此策略。 有关如何设置轮换策略的更多信息,请查看 设置轮换策略。 此过程也可以使用 CLI 进行设置。要旋转最初导入到服务中的密钥,每次旋转都必须为密钥生成和提供新的密钥材料。 因此,对于已导入密钥资料的密钥,自动轮换策略不可用。 因此,必须手动轮换导入的根密钥。 请注意,在轮换密钥时,导入的密钥 (例如密钥标识) 的元数据不会更改,就像使用 Key Protect生成的密钥一样。
-
手动旋转密钥
作为安全管理员,你可能希望对根密钥的轮换频率有更多控制权。 如果不想为密钥设置自动轮换策略,可以手动创建一个新密钥来替换现有密钥,并随后更新应用程序以使其引用该新密钥。要简化此过程,您可以使用 Key Protect 随时轮换根密钥。 在此场景中,Key Protect 会代表您为每个轮换请求创建密钥并进行替换。 密钥的元数据和密钥标识不会更改。 有关手动旋转密钥的更多信息,请查看 手动旋转密钥。
手动旋转根密钥不会干扰当前可能存在的密钥的任何轮换策略。 因此,一个好的选项是设置常规轮换策略,然后根据需要更频繁地手动更新密钥。
应该旋转密钥的频率?
在 Key Protect中生成根密钥后,决定其旋转频率。 最佳实践是定期轮换密钥。
轮换类型 | 频率 | 描述 |
---|---|---|
基于策略的密钥轮换 | 30 天的时间间隔 (换言之,每 30 天,60 天或 90 天等) | 根据您的安全需求,为根密钥选择 1 至 12 个月的轮换间隔。 为根密钥设置轮转策略后,时钟会根据密钥的初始创建日期立即开始计时。 如果您随时选择手动轮换此密钥,那么轮换周期将根据该轮换进行重置。 |
手动密钥轮换 | 最多每小时轮换一次 | Key Protect 允许每个密钥每小时不超过一次旋转。 |
可以使用 API 中提供的 lastRotateDate
字段 (例如,getkey
,getkeymetadata
) 来了解最近一次轮换密钥的日期。和 getkeys
。
密钥轮换的工作原理
在根密钥轮换期间,密钥保持处于 活动 状态。 但是,旧版本已取消激活,可以视为“已作废”。 然后,此最新版本的根密钥将用于所有未来操作。 虽然仍可以使用 WDEK (使用较旧版本的根密钥生成) 进行解包,但使用最新版本的根密钥进行解包和重新打包。 请注意,先前的密钥版本只能用于解包和访问使用该特定密钥版本或更低版本加密的数据。 根密钥的旧版本不能用于创建新的 DEK 或包装 DEK 并创建 WDEK。 有关更多信息,请查看 管理已撤销的密钥版本。
有关密钥轮换工作方式的更多信息,请查看 了解密钥轮换过程。
要为 IBM Cloud 数据服务启用密钥旋转选项,数据服务必须与 Key Protect 集成。 请参阅 IBM Cloud 数据服务的文档,或 查看我们的集成服务列表了解更多信息。
监视密钥轮换
轮换根密钥后,Key Protect 会通知使用该密钥保护数据的 IBM Cloud 数据服务。 此通知会触发这些服务中的操作,以使用最新密钥版本重新打包密钥的关联数据加密密钥 (DEK)。
Key Protect 收到这些服务的确认后,所有相关的 DEK 都会被重新包装,这时你会在 IBM Cloud Logs UI 中收到一个事件,显示轮换已完成。
管理已引退的密钥版本
Key Protect 使用每个轮换请求创建新版本的根密钥。 服务将撤销旧密钥版本并保留这些版本,直到删除密钥为止。 已退役的密钥版本不能再用于封装密钥,但仍可用于解除封装操作。
如果 Key Protect 检测到你正在使用已退役的根密钥版本来解包 DEK,该服务会提供一个基于最新密钥版本的新包装 DEK。
旋转密钥后重新包装数据
由于已作废的密钥版本只能用于访问较旧的 DEK,因此为了保护包络加密工作流程,请在轮换密钥后 重新打包 DEK,以便静态数据受最新密钥保护。
或者,如果 Key Protect 检测到您正在使用已撤销的密钥版本来解包 DEK,那么服务会自动重新加密 DEK 并返回基于最新根密钥的打包数据加密密钥 (WDEK)。
将新的 WDEK 存储并用于将来的解包操作,以便使用最新的密钥版本来保护 DEK。
要了解如何使用 Key Protect API 来重新打包数据加密密钥,请参阅 重新打包密钥。
了解密钥轮换过程
Key Protect API 在后台驱动密钥轮换过程。 要了解如何使用 Key Protect API 旋转 按键,请参阅旋转按键。
下图显示了如何旋转键的上下文视图。
对于每个轮换请求,Key Protect 通过将新密钥材料与密钥关联来创建新的根密钥版本。
密钥不会在创建密钥的同一时间精确轮换。 即,如果最初在 8 a.m. 创建密钥,那么在调度旋转的日期,不一定会在 8 a.m. 进行旋转。 相反,旋转可以在 24 小时窗口内的任何时刻发生。