0

我想在我的系统中引入密钥轮换,但需要重新加密。对某些事件、触发器等进行反应性操作会很好,但我在谷歌文档中找不到类似的东西。

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

任何想法,如何实现这个目标?

4

2 回答 2

3

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

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

于 2019-03-20T13:56:44.217 回答
2

当您轮换加密密钥(或对密钥启用计划轮换)时,Cloud KMS 不会自动删除旧的密钥版本材料。除非您手动禁用/销毁该密钥版本,否则您仍然可以解密以前使用旧密钥加密的数据。您可以在Cloud KMS 密钥轮换文档中详细了解此内容。

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

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

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

使用云调度程序

编写连接到定期调用的Cloud Scheduler的Cloud Function 。例如,如果您的密钥每 72 小时轮换一次,您可以安排云功能每 24 小时运行一次。如果有帮助,很高兴提供一些示例代码,但 OP 并没有特别要求提供代码。

长轮询

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

于 2019-03-20T15:04:59.777 回答