Hashicorp的Vault可以设置为按需提供数据库密码;每个密码都可以用于某个"租赁"更新前的期间(比如1小时),可以设置最长使用期限,之后必须删除密码并获取新密码。
在Spring Boot中,JDBC连接在应用程序启动时配置,并假设JDBC密码在application.properties文件中编码(或者,在应用程序引导时通过Spring Cloud Config获得或等效)永远使用。
问题:当连接尝试因密码过期而失败时,如何通过访问Vault来实现Spring Boot中重置JDBC密码的方法?
有没有办法设置某种处理程序在连接因旧密码而失败时调用,并将其重置为新值?
答案 0 :(得分:1)
查看GitHub上提供的这个开源项目;我想这可能只是你在寻找的东西。注意:从它的外观来看,这是一个Spring Cloud Incubator项目(有可能在未来成为Spring官方认可的开源库),并且只有三个贡献者。你必须看看它是否足够可靠"以满足您的需求。
https://github.com/spring-cloud-incubator/spring-cloud-vault-config
---这里是有用信息的快速摘要---
将以下依赖项添加到pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-vault-starter-config</artifactId>
<version>x.y.z</version>
</dependency>
创建一个标准的Spring Boot应用程序 - 提供的示例只是一个主要的应用程序类:
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
当它运行时,它将从中获取外部配置 端口8200上的默认本地Vault服务器(如果它正在运行)。修改 您可以通过启动行为更改Vault服务器的位置 使用bootstrap.properties(比如application.properties但是用于 应用程序上下文的引导阶段),例如
bootstrap.yml:
spring.cloud.vault:
host: localhost
port: 8200
scheme: http
connection-timeout: 5000
read-timeout: 15000
host
设置Vault主机的主机名。主机名将用于SSL证书验证
port
设置Vault端口
scheme
将方案设置为http将使用纯HTTP。支持的方案是http和https。
connection-timeout
以毫秒为单位设置连接超时
read-timeout
设置读取超时(以毫秒为单位)