我一直在浏览Vault文档,但仍然不确定我是否正确理解采用哪种方法来解决问题。
想象一下,有一个名为Example的实体。它具有多个字段,例如名称,创建者等,并且在这些敏感字段之间,例如密码,secret_key。
@Entity
@Table(name = "example")
public class Example {
private String name;
private Date created;
...
@Convert(converter = SomeConverter.class)
private String password;
@Convert(converter = SomeConverter.class)
private String secretKey;
}
此实体存储在SQL数据库(例如PostgreSQL)中。现在,我的目标是确保密码安全(因此使用转换器类),但其余数据不安全。
是否可以将实体数据存储在数据库中,同时又将敏感数据存储在Vault中(位于其后面的任何存储中?因此,当我要加载实体时,两个实体数据都将从数据库加载,而敏感数据则从保险柜中加载。
或者正确(且唯一可行)的方法是仅使用Vault中的加密/解密转换器并将其存储在同一数据库中?并通过Vault进行身份验证来限制此设置。
如果在这种情况下一般仅将保管箱用于静态机密,我只是感到困惑。
不要将所有内容作为秘密存储在金库中,您可以存储密码,但是对于一般用户(在您的情况下,实体似乎是应用程序用户),我不建议这样做。使用他们的传输秘密引擎并加密数据并存储在任何数据库中,您可以使用保管库身份验证来支持对数据库的访问。