【发布时间】:2021-03-03 19:04:08
【问题描述】:
我正在编写的一些函数需要在某处存储和共享一组加密密钥 (
- 它在函数之间和同一函数的实例内共享
- 在功能部署后维护
根据密钥是否已过期或是否需要创建新密钥,每 4 小时左右修改(和写入)密钥。
现在,我将密钥作为加密二进制文件存储在云存储桶中,访问权限仅限于该功能。它可以工作,只是速度很慢(更新密钥时所需的读/写约为 500 毫秒)。
我已经考虑了一些其他的解决方案:
- Redis:速度快,但考虑到存储单个值所需的价格(每月 40 美元),这太过分了
- Cloud SQL:函数已连接到云实例,因此不会产生更多成本
- 删除所有内容并使用 KMS。不幸的是,它不符合我的要求。
我在函数中使用的库是可用的here。
有没有更好的方法来为云功能(以及可能的其他工具,如 GKE)存储一小块数据?
编辑
我最终使用的解决方案是在应用程序已连接到的数据库中使用单个表。它也比使用存储桶(
故事的寓意是使用已配置的任何东西来存储密钥。如果存储密钥是一个问题,那么使用组合 KMS + 云功能进行如下所述的旋转似乎是一个不错的选择。
所有代码+更多详细信息都可以在here.
【问题讨论】:
-
如果云存储性能有问题,几乎任何其他解决方案都会变慢。 KMS、Secrets Manager、Firestore 等服务将其秘密存储在持久存储中,并且在大多数情况下使用更复杂的存储方案。
标签: google-cloud-platform google-cloud-functions