如何使用Spring Boot实施Hashicorp的保管库

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

我们已为Dev,QA,Prod实例启用了弹簧概要分析,并且这些实例正在AWS EC2上运行。我们有不同的属性文件,例如:application-dev.properties application-qa.properties application-prod.properties

并且我们已经在这些文件中配置了数据源,例如spring.datasource.username = testspring.datasource.password =测试

并且这些凭据对于每个实例都是不同的,并且在各自的属性文件中进行配置。

我已经通过链接:https://www.baeldung.com/spring-cloud-vault来使用Spring Boot实现Vault。但是,我没有像他们提到的bootstrap.yml文件那样完全理解它,但是我们只能在其中放置一个实例的凭据。任何人都可以帮助我解决如何在我们具有多个属性文件的情况下实现Vault和Sprint Profiling。以及如何使用Vault中的Java代码获取数据库凭据?

java spring-boot hashicorp-vault spring-cloud-vault-config spring-vault
1个回答
0
投票

我相信您的应用程序已与Spring Config服务器集成,以供参考check this您所指的博客正在谈论动态凭据生成,这是一个有点复杂的解决方案。因此,暂时,请按照以下步骤操作,并在以后进行相应的修改。

如果启用了弹簧配置服务器,则位于bootstrap.yamlcheck this for diff in bootstrap file and application.propertiessrc/main/resources/bootstrap.yml)看起来像这样:

spring:
  cloud:
    config:
      uri: CONFIG-SERVER-URL
      username: USERNAME
      password: PASSWORD
    vault:
      uri: VAULT_URI
      authentication: token
      token: VAULT_TOKEN
  application:
    name: demo-application

由于应用程序基于配置文件/环境从spring-config服务器读取配置]。

demo-application-dev.yml
demo-application-tst.yml
demo-application-prod.yml

以类似的方式,应用程序将基于配置文件读取在Vault中配置的秘密

enter image description here

因此每个配置文件应配置有各自的秘密

。因此,您在Vault中的dev配置应如下所示:
spring.datasource.username=dev
spring.datasource.password=dev

对于其他环境,例如demo/prod,请进行不同的配置:

spring.datasource.username=demo
spring.datasource.password=demo

enter image description here

注意:确保bootstrap.yaml中的配置的应用名称] 应与spring config服务器中的文件名相匹配

,例如demo-application-dev.yml,以及保管库中的秘密文件名secrets/secret/demo-application/dev] >

保管库配置

在pom.xml文件中添加依赖项

<dependency>
                     <groupId>org.springframework.cloud</groupId>
                     <artifactId>spring-cloud-starter-vault-config</artifactId>
                     <version>1.1.0.RELEASE</version>
         </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.