我在Openshift中托管了一个保管库服务器,我必须将保管库中的秘密访问到我的spring应用程序中。我的bootstrap.yml看起来像这样:
spring:
application:
name: application-name
profiles: dev
cloud:
vault:
fail-fast: true
host: HOST
port: 443
scheme: https
token: MY_TOKEN
authentication: TOKEN
kv:
enabled: true
backend: secret
profile-separator: '/'
application-name: application-name
我检查了保管库日志,并能够从Spring应用程序连接到保管库。
我可以使用Value Property Source访问机密。但是,我想将秘密的值填充到application.properties中以更新诸如spring.datasource.username和spring.datasource.password之类的属性。
有没有办法直接从application.properties访问机密?
TL; DR:是,您可以在application.(properties|yml)
中使用保管箱属性。不建议在bootstrap.(properties.yml)
中使用它们。
Spring Cloud带有Bootstrap上下文,在该上下文中初始化了配置库(例如Spring Cloud Consul,Spring Cloud Config和Spring Cloud Vault)。这些集成获取配置,并将其作为应用程序的父PropertySource
提供。当在属性绑定期间以及使用PropertySource
解析属性值时,Spring Boot会考虑这些(您可以选择以最高/最低优先级使用这些Environment
。)>
[引导应用程序时,通常发生的第一件事之一是@ConfigurationProperties
对象中的属性绑定。加载bootstrap.(properties|yml)
时,通常Spring Cloud Config集成尚未运行,因此那时您看不到这些库提供的属性。因此,引导程序上下文和实际应用程序上下文之间存在分歧。