Spring数据Mongodb - 使用转换器加密单个字段

时间:2018-04-19 10:27:38

标签: spring spring-data spring-data-mongodb

我有一个包含多个对象数组的集合。在其中一个子对象中有一个名为secret的字段,必须以加密格式存储,该字段的类型为String。

实现目标的最佳途径是什么?

我认为为整篇文档编写自定义编写器是不可行的。 如何编写一个仅适用于这个单一字段的String转换器?

1 个答案:

答案 0 :(得分:0)

这些问题有很多答案,不同的方法取决于你的实际要求。

您想问的第一个问题是,MongoDB是否是存储加密值的好地方,或者是否有更好的选项可以为您提供重新封装(重新加密),密钥轮换,审计日志记录等功能访问控制,密钥管理,......

另一件事就是解密:每次从MongoDB检索数据时,秘密都会被解密。此外,使用相同的密钥加密大量条目有助于进行密码分析,因此您需要确保定期进行密钥轮换。至少,但不是最后,你负责安全地存储加密密钥,并确保很难掌握它们。

使用专用数据类型可以非常方便地使用例如签名来编写。 Converter<Secret, String>Converter<Secret, Binary>,因为您可以完全控制序列化。

或者,看看https://github.com/bolcom/spring-data-mongodb-encrypt或HashiCorp Vault等外部加密工具。