旋转密钥和反应性重新加密数据

Rotating keys and reactive reencypt data

我想在我的系统中引入密钥轮换,但为此需要重新加密。对某些事件、触发器等做出反应会很好,但我在 google 文档中找不到类似的东西。

旋转事件后,我想用新密钥重新加密数据并销毁旧密钥。

有什么想法,如何实现这个目标?

截至目前,您能做的最好的事情就是编写一些定期轮询 GetCryptoKey 的东西,检查主要版本是否已更改,然后解密并重新加密(如果有)。

我们完全理解基于关键生命周期变化的事件的需求,我们一直在思考未来实现这一目标的最佳方式。不过,我们还没有任何计划要分享。

轮换加密密钥时(或启用密钥的计划轮换时),Cloud KMS 不会自动删除旧密钥版本 material。您仍然可以解密以前使用旧密钥加密的数据,除非您手动 disable/destroy 该密钥版本。您可以在 Cloud KMS Key rotation documentation.

中详细了解此内容

虽然您可能有业务需求,但 Cloud KMS 并不要求您使用新密钥版本重新加密旧数据 material。

  • 新数据将使用新密钥加密
  • 旧数据将用旧密钥解密

在撰写本文时,Cloud KMS 不会在轮换密钥时发布事件。如果您有使用新密钥重新加密所有现有数据的业务需求,您可以执行以下操作之一:

使用 Cloud Scheduler

写一个定期调用的Cloud Function connected to Cloud Scheduler。例如,如果您的密钥每 72 小时轮换一次,您可以将云函数安排为每 24 小时 运行。如果有帮助,很乐意提供一些示例代码,但 OP 没有特别要求提供代码。

长轮询

写一个 long-运行ning 函数轮询 KMS API 以检查主加密密钥是否已更改,并在检测到更改时触发重新加密。