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

时间:2019-09-19 13:56:37

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

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

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

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

我已经通过链接:
https://www.baeldung.com/spring-cloud-vault
来使用Spring Boot实施Vault。但是,我不能像他们提到的bootstrap.yml文件那样完全理解它,但是我们只能在其中放置一个实例的凭据。

有人可以帮助我如何与Sprint一起实现Vault吗?在我们具有多个属性文件的位置进行性能分析。
以及如何使用Vault中的Java代码获取数据库凭据?

1 个答案:

答案 0 :(得分:0)

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

如果启用了 spring config服务器,则位于bootstrap.yaml的{​​{1}}( check this for diff in bootstrap file and application.properties )看起来像这样:< / p>

src/main/resources/bootstrap.yml

应用程序根据配置文件/环境从spring-config服务器读取配置

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

以类似的方式,应用程序将根据配置文件读取Vault中配置的机密

enter image description here

因此每个配置文件都应配置有各自的机密。因此,您在Vault中的demo-application-dev.yml demo-application-tst.yml demo-application-prod.yml 配置应如下所示:

dev

,对于spring.datasource.username=dev spring.datasource.password=dev 之类的其他环境,请进行不同的配置:

demo/prod

enter image description here

注意:确保在spring.datasource.username=demo spring.datasource.password=demo 中配置的应用名称 应与spring config服务器中的文件名相匹配,例如bootstrap.yaml,并在保管箱中的保管箱秘密文件名demo-application-dev.yml

  

保险柜配置

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

secrets/secret/demo-application/dev