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

Fallback to local config if Spring Vault config is disabled

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

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.user 设置为 test

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

TL;DR

视情况而定。

说明

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

但是,有一个警告:

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

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

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

  1. 使用保险柜(解决敏感数据的实际问题)
  2. 使用不同的方法(例如 in-memory 数据库)首先消除对凭据的需求。