2

对于开发环境,我已配置bootstrap.properties为禁用 Vault 配置。

spring.cloud.vault.enabled=false

如果它被禁用,那么应用程序应该从本地配置 application.properties 文件中读取属性。但是怎么做呢?

作为一种解决方法,我在application.properties下面定义了本地属性

xyz.db.user=${xyz.db.user.fromVault:test}
xyz.db.password=${xyz.db.password.fromVault:test}

因此应用程序首先检查是否xyz.db.user.fromVault在保险库中配置了属性。如果没有,则设置xyz.db.usertest

但这感觉不是一个正确的方法,因为我需要维护多个属性。有什么正确的方法吗?

4

1 回答 1

3

TL;博士

这取决于。

解释

为配置属性提供后备值通常是处理默认值的好方法。如果您只有其中的几个,那么您可以使用这种方法。

但是,有一个警告:

存储在 Vault 中的数据在某种程度上取决于环境,并且通常是敏感的(用户名、密码)。这些不是您想存储在代码甚至属性文件中的东西。

您可以有一个单独的属性文件(例如,由配置文件分隔),其中包含您的非 Vault 环境的值,但实际的问题是,您为什么要提供默认值?

如果您有一个需要凭据的远程数据库,您可能想问自己一个问题:如果这些凭据暴露给意外的第三方会有多大的伤害?如果您的答案是:不多,那么将这些凭据存储在配置文件绑定的属性文件中是可行的方法。如果它很痛,那么我会看到两种选择:

  1. 使用 Vault(解决敏感数据的实际问题)
  2. 使用一种不同的方法(例如内存数据库),首先消除对凭据的需求。
于 2018-02-21T09:26:12.530 回答