spring-cloud-vault-config-databases对接Spring Boot 2.4.0 Config Data API属性绑定失败
核心结论
当前使用的spring-cloud-vault-config-databases 3.0.x版本原生不支持Spring Boot 2.4+ Config Data API下的动态数据库凭证映射能力,仅遗留bootstrap模式支持该特性。
spring-cloud-vault-config-databases运行逻辑说明
该组件核心作用为对接Vault数据库密钥引擎,自动生成临时数据库访问凭证,并按配置映射到指定数据源属性中,分为两种运行模式:
- 遗留bootstrap模式(需手动开启
spring.cloud.bootstrap.enabled=true):
组件会在Spring上下文启动的bootstrap阶段,主动调用Vault数据库引擎的凭证生成接口,根据配置的username-property和password-property参数,将生成的用户名、密码直接注入对应配置属性,对应场景下配置可正常生效。 - Spring Boot 2.4+ Config Data API模式:
3.0.x版本未适配该模式的扩展逻辑,Spring Cloud Vault的Config Data实现只会将spring.config.import中配置的vault路径作为静态KV密钥读取,不会触发数据库引擎的动态凭证生成逻辑,也不会处理spring.cloud.vault.database下的属性映射配置,因此无法获取到对应用户名和密码,导致数据源连接失败。
可用适配方案
可根据技术栈要求选择任意一种方案解决:
- 继续使用遗留bootstrap模式,现有配置无需修改,Spring Cloud 2020.0.x版本完全兼容该运行模式
- 升级组件版本:将Spring Cloud版本升级至2021.0.x及以上,对应
spring-cloud-vault-config-databases3.1.x及以上版本,该版本开始原生支持Config Data API下的数据库动态凭证自动映射,仅需微调import配置即可正常使用 - 手动扩展实现:如果必须保留当前版本且要使用Config Data API,可自定义ConfigDataLoader扩展逻辑,主动调用VaultTemplate请求数据库引擎生成凭证,手动映射到
spring.datasource.username和spring.datasource.password属性中
内容的提问来源于stack exchange,提问作者pdesprez
相关产品推荐
相关产品推荐

