在 JDBC 连接中更新自动更新的数据库密码 - Spring 引导
Updating auto renewed DB password in JDBC connection - Spring Boot
我有一个奇怪的用例 运行ning spring 启动微服务,这些服务位于 openshift 集群中,我面临的问题是由于数据库密码更新策略。
该应用程序使用 JDBC 连接来访问 oracle 数据库,并且在容器启动期间从本地保管库检索数据库密码。问题是密码每 90 天更改一次。
应用程序使用 JDBC 连接池与数据库通信,服务预计会收到大量流量,因此会增加会话数。我在会话中间,如果密码被更新,我们如何确保我们始终在 jdbc 连接池 中使用工作密码 运行 查询。
我们尝试了一些事情 运行 建立一个单独的服务来暂时检索密码,而需要密码的消费者服务将简单地使用来自数据库服务的最后一个成功的密码,这是一种丑陋的实施。
尝试使用多容器 pods 和一个 Auxillary pod 监听数据库变化,这也是一个蹩脚的想法。
核心问题是加载 JDBC 连接池,该连接池已经具有建立连接和与数据库通信的权限。那么在会话过程中我们如何更新密码呢?
有什么想法吗?
我想您正在使用秘密存储(例如:Vault, AWS Secrets Manager 等)来获取密码。如果是这样,我认为你已经完成了一半。
查看 @RefreshScope,您可以刷新 spring 上下文,这将获取新配置(密码)并重新创建一些 bean(数据源)。
我有一个奇怪的用例 运行ning spring 启动微服务,这些服务位于 openshift 集群中,我面临的问题是由于数据库密码更新策略。 该应用程序使用 JDBC 连接来访问 oracle 数据库,并且在容器启动期间从本地保管库检索数据库密码。问题是密码每 90 天更改一次。
应用程序使用 JDBC 连接池与数据库通信,服务预计会收到大量流量,因此会增加会话数。我在会话中间,如果密码被更新,我们如何确保我们始终在 jdbc 连接池 中使用工作密码 运行 查询。
我们尝试了一些事情 运行 建立一个单独的服务来暂时检索密码,而需要密码的消费者服务将简单地使用来自数据库服务的最后一个成功的密码,这是一种丑陋的实施。 尝试使用多容器 pods 和一个 Auxillary pod 监听数据库变化,这也是一个蹩脚的想法。
核心问题是加载 JDBC 连接池,该连接池已经具有建立连接和与数据库通信的权限。那么在会话过程中我们如何更新密码呢? 有什么想法吗?
我想您正在使用秘密存储(例如:Vault, AWS Secrets Manager 等)来获取密码。如果是这样,我认为你已经完成了一半。 查看 @RefreshScope,您可以刷新 spring 上下文,这将获取新配置(密码)并重新创建一些 bean(数据源)。