如果禁用Spring Vault配置,则回退到本地配置

时间:2018-02-20 18:50:10

标签: java spring spring-boot spring-vault spring-cloud-vault-config

对于开发环境,我已配置bootstrap.properties以禁用保管库配置。

spring.cloud.vault.enabled=false

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

作为解决方法,我在application.properties中定义了本地属性,如下所示

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

因此,应用程序首先检查是否在Vault中配置了xyz.db.user.fromVault属性。如果没有,请将xyz.db.user设置为test

但这不是一种正确的方法,因为我需要维护多个属性。有没有正确的方法?

1 个答案:

答案 0 :(得分:1)

TL; DR

取决于。

解释

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

然而,有一点需要注意:

存储在Vault中的数据在某种程度上取决于环境,通常是敏感的(用户名,密码)。您希望将这些内容存储在代码中,甚至存储在属性文件中。

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

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

  1. 使用保险柜(解决了敏感数据的实际问题)
  2. 使用不同的方法(例如内存数据库),首先不需要凭据。