使用spring-cloud-vault访问Vault秘密,并在application.properties中使用它

问题描述 投票:4回答:1

我在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访问机密?

spring spring-boot parameter-passing hashicorp-vault application.properties
1个回答
0
投票

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集成尚未运行,因此那时您看不到这些库提供的属性。因此,引导程序上下文和实际应用程序上下文之间存在分歧。

© www.soinside.com 2019 - 2024. All rights reserved.