【问题标题】:Vault Spring client keeps its connectivity to vaultVault Spring 客户端保持与 Vault 的连接
【发布时间】:2019-04-04 02:12:43
【问题描述】:

我有一个使用 vault 来保密的 spring-boot 应用程序。 与保险库的连接是通过带有 @VaultPropertySource 注释的专用类进行的。连接配置在 bootstrap.yaml 文件中。 我只需要在应用程序启动时连接来读取所有机密,但我看到 spring 在整个应用程序生命周期中不断检查连接性,所以如果我关闭保险库,我的应用程序会因为连接丢失而崩溃。 所以我的问题是,如何配置 spring 在应用程序启动后不保持连接。

注意:我知道快速失败的配置,但这是非常通用的配置。我希望如果启动时没有连接来读取机密,我的应用程序将失败,但我不想在整个应用程序生命周期中都依赖保险库。

【问题讨论】:

    标签: java spring-boot hashicorp-vault spring-vault


    【解决方案1】:

    这就是我们在设置中使用 spring config server 进行配置的方式:

    在 pom.xml 中添加客户端的依赖信息

    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-vault-config</artifactId>
         <version>1.1.0.RELEASE</version>
    </dependency>
    

    在 bootstrap.yml 中添加 Vault 配置

    spring:
      cloud:
        config:
          uri: ${CONFIG_SERVER_URI}
          username: ****
          password: ****
        vault:
          uri: ${VAULT_URI}
          authentication: token
          token: ${SPRING_CLOUD_VAULT_TOKEN}
      application:
        name: APP-NAME
    

    在运行 jar 时提供所需的参数

    exec java $JAVA_OPTS -jar -Drun.arguments=--spring.cloud.config.uri=${CONFIG_SERVER_URI} \
         -Drun.arguments=--spring.cloud.vault.uri=${VAULT_URI} \
         -Dspring.cloud.vault.token=${SPRING_CLOUD_VAULT_TOKEN} \
         APP-NAME.jar
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。现在,如果您的保管库正在关闭,您是否在应用程序中看到任何错误?
    • 不,它没有依赖关系,因为所有必需的秘密都是在应用程序启动期间从 Vault 中获取的。
    • 谢谢。实际上配置与 application.properties 文件中的配置部分相似。我认为我的问题是从我的应用程序本身提出的。也许我的保险库属性类是在应用程序生命周期内一次又一次地创建的。
    猜你喜欢
    • 2019-08-03
    • 2021-02-02
    • 2020-11-23
    • 2018-04-27
    • 2018-04-25
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多