0

我一直在浏览 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)中。现在我的目标是确保密码安全(因此是转换器类),但其余数据不安全。

是否可以将实体数据存储在 DB 中,同时将敏感数据存储在 Vault 中(在其后面的任何存储中)?因此,当我加载实体时,实体数据将从数据库加载,敏感数据从保险柜加载。

还是正确(也是唯一可行的)方法是仅使用 Vault 中的加密/解密转换器并将其存储在同一个数据库中?并通过 Vault 进行身份验证来限制这一点。

在这种情况下,如果 Vault 通常只用于静态机密,我只是感到困惑。

4

2 回答 2

1

我会说,这取决于你/企业。

您可以将整个实体(对象)存储到保险库中或仅存储一个字符串。

看看这是否有帮助: https ://www.baeldung.com/spring-vault

于 2020-05-05T08:15:17.443 回答
0

不要将所有内容存储为秘密,您可以存储密码,但我不建议一般用户(在您的情况下实体似乎是应用程序用户)。使用他们的传输秘密引擎并加密数据并存储在任何数据库中,您可以通过保险库身份验证来支持数据库访问。

如果您想将密码存储在秘密引擎中,您可以这样做,但您需要一个服务类,该服务类将在执行任何操作之前从保险库中获取密码。

于 2020-05-06T07:29:44.093 回答