Bea*_*ker 1 database encryption
我们决定(出于一长串技术原因)在将数据写入数据库之前对数据进行应用程序级加密。
这工作得很好,但在某些时候我们想轮换加密密钥。这意味着重写数据库中的每条记录。如果您的数据库有 500 亿条记录怎么办?
我不知道有任何数据库技术可以在合理的时间内重写 500 亿条记录而不会给数据库带来压力。也许某些分布式数据库可以,但如果您用大量更新来覆盖它们,它们往往会遇到压缩问题。
那么人们通常如何在大型数据库上轮换密钥呢?他们是否投入了大量硬件?或者他们只是等待几个月才能完成?他们从不轮换加密密钥吗?或者还有其他更好的解决方案吗?
我不会命名我们的数据库品牌,因为我愿意使用任何可以在不到一周内更新 500 亿条记录而无需使用大量硬件的数据库品牌。建立一个比我们处理重新加密流量峰值所需的大 1000 倍的庞大数据库实在是太浪费了。
谢谢!
事实上,重新加密所有记录会很麻烦。您可以从 aws https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html获取灵感
您可以创建 2 层加密 - 使用自己的随机密钥加密每个记录,并使用主密钥加密记录密钥。当轮换主密钥时,您只需要重新加密记录密钥,这也可能要求很高,但如果必须这样做,它一定比重新加密所有数据更好。