我将提到的第二个示例 here 用于客户端字段级加密,并且它按预期工作。我创建了一个 Mongo 客户端 bean 并一直使用它,直到我的应用程序停止。
我想知道是否有更好的方法来做以下事情并且几乎没有怀疑:
BsonBinary dataKeyId = clientEncryption.createDataKey("local", new DataKeyOptions());
这每次都会生成一个新密钥并插入我的密钥保管库集合中。我很好奇是否有办法通过获取旧密钥来优化空间来使用旧密钥本身。这两种方法在安全性方面有什么优势吗?
如果我使用 AWS KMS,我的 mongo 客户端是否会为每次获取/更新调用调用密钥库收集和 KMS?
如果我启用 AWS KMS 密钥轮换,密钥轮换会在解密旧数据时导致问题吗?
提前致谢。
答案 0 :(得分:0)
Ruby 驱动程序提供了可能有用的示例here。
生成本地密钥后,您可以使用任何您希望的机制存储它,并在以后重复使用。密钥不应存储在数据库中(因为加密是在客户端完成的)因此驱动程序不提供存储它的设施,这取决于您。
通常的用法大概是:
这样您的应用程序将根本无法访问主密钥(因此将无法任意生成本地密钥)。