带密码租约/续订的Spring Boot JDBC(如Vault中所示)

时间:2016-07-26 00:03:20

标签: spring-boot spring-jdbc

Hashicorp的Vault可以设置为按需提供数据库密码;每个密码都可以用于某个"租赁"更新前的期间(比如1小时),可以设置最长使用期限,之后必须删除密码并获取新密码。

在Spring Boot中,JDBC连接在应用程序启动时配置,并假设JDBC密码在application.properties文件中编码(或者,在应用程序引导时通过Spring Cloud Config获得或等效)永远使用。

问题:当连接尝试因密码过期而失败时,如何通过访问Vault来实现Spring Boot中重置JDBC密码的方法?

有没有办法设置某种处理程序在连接因旧密码而失败时调用,并将其重置为新值?

1 个答案:

答案 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设置读取超时(以毫秒为单位)