【问题标题】:How to implement Hashicorp's Vault with Spring Boot如何使用 Spring Boot 实现 Hashicorp 的 Vault
【发布时间】:2020-01-20 14:05:42
【问题描述】:

我们为 Dev、QA、Prod 实例启用了 spring 分析,这些实例在 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 Profiling 中实现 Vault 的方法我们有多个属性文件。
以及如何使用 Vault 中的 Java 代码获取数据库凭据?

【问题讨论】:

  • 最好的模式是让您的应用程序完全不了解 Vault。相反,让您的部署机制检索秘密并将它们注入您的应用程序(使用一个或多个模板文件或环境)。这在 K8S 中得到了很好的研究,甚至在 PCF 中也有效。让您的应用了解保险柜是最后的手段(除非您的应用专门是秘密管理应用)。

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


【解决方案1】:

我相信您的应用已与 Spring Config 服务器集成,供参考 check this您所指的博客正在讨论动态凭据生成,这是一个有点复杂的解决方案。所以,现在,您按照下面提到的过程并在以后进行相应的修改。

如果 spring config server 已启用bootstrap.yaml(check this for diff in bootstrap file and application.properties ) 位于 src/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 中配置的秘密

所以每个配置文件都应该配置有各自的秘密。因此,您在 Vault 中的 dev 配置应如下所示:

spring.datasource.username=dev
spring.datasource.password=dev

对于其他环境,如 demo/prod,配置不同:

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

注意:确保bootstrap.yaml 中的应用名称配置 应与spring config server中的文件名匹配,如demo-application-dev.yml,以及Vault 中的Vault secret文件名,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>

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2020-06-28
    • 2022-08-11
    • 2021-03-23
    • 2023-01-20
    • 2019-12-26
    相关资源
    最近更新 更多