Spring Boot:无需重新启动即可处理AWS RDS密码更改或轮换

Spring Boot:无需重新启动即可处理AWS RDS密码更改或轮换

时间:2020-11-8 作者:gykj

本文介绍如何在不重新启动Spring Boot应用程序的情况下处理AWS RDS密钥轮换。

我遇到了这个问题,其中无论何时为我的AWS RDS实例更新数据库密码时,都必须更新数据库连接。这可能是由于采用了每月密码轮换策略,或者是数据库凭据已被盗用,并且即使更改了数据库密码,您也希望所有正在运行的应用程序继续运行。

为了解决此类问题,AWS提供了一个库,该库将处理数据库连接的此更新,而无需重新启动Spring Boot应用程序。

AWS有一个名为AWS Secrets Manager JDBC的开源库,该库在应用程序运行并与RDS实例通信时处理数据库连接。

让我们看看它是如何工作的。

首先,在构建文件中添加以下依赖项。考虑到Maven,它将如下

XML格式

 


1个
<依存关系>
2
    < groupId > com.amazonaws.secretsmanager </ groupId >
3
    < artifactId > aws-secretsmanager-jdbc </ artifactId >
4
    <版本> 1.0.5 </版本>
5
</依赖>

接下来,使用方案jdbc-secretsmanager代替JDBC数据源URLjdbc

爪哇

 


1个
春天
2
  资料来源
3
    网址jdbc - secretsmanagermysql//数据库主机:3306 / rotate_db

接下来,您需要指定驱动程序类名称。对于本文,我们将坚持使用MySQL RDS实例。因此,它将是com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDrive

该库还需要特定于数据库的连接库。因此,您将需要添加MySQL连接器库,这通常是工件mysql-connector-java。这将用于与数据库建立实际连接。

如果您要处理其他数据库,则可以从此处的源代码中找到相应的驱动程序。

接下来,使用AWS Secrets Manager中的数据库凭证部分为RDS实例创建AWS Secret。

Spring Boot:无需重新启动即可处理AWS RDS密码更改或轮换Spring Boot:无需重新启动即可处理AWS RDS密码更改或轮换  Spring Boot:无需重新启动即可处理AWS RDS密码更改或轮换

接下来,在属性文件中application.yaml,将刚刚创建的机密名称指定为用户名,并且您不必指定任何密码,因为该密码现在存储在机密管理器中。

您的属性文件应如下所示。福州小程序开发公司

爪哇

 

1个
春天
2
  资料来源
3
    网址jdbc - secretsmanagermysql//数据库主机:3306 / rotate_db
4
    用户名秘密/轮换
5
    司机--的名字COMamazonaws秘密经理sqlAWSSecretsManagerMySQLDriver

现在,为了使应用程序与AWS通讯并获取秘密值,您将必须设置和配置AWS CLI。是它的链接。

完成此操作后,您的应用程序可以通过AWS_PROFILE在配置AWS配置时使用您设置的配置文件导出环境变量来连接到AWS 。

这样,您就完成了更改。

现在启动应用程序,它应该能够与AWS Secrets Manager进行通信以获取凭证并开始与AWS RDS实例进行通信。

您可以通过单击密码中的“旋转密码”选项进行测试,该选项将为数据库生成一个新密码并检查与数据库的通信。

这是我的实现的GitHub链接

奖金: 

如果已经安装了liquibase集成,这也将起作用。您只需在liquibase配置和数据库密码中指定与用户名相同的URL,即可使用liquibase设置。

爪哇

 


1个
春天
2
  资料来源
3
    网址jdbc - secretsmanagermysql//数据库主机:3306 / rotate_db
4
    用户名秘密/轮换
5
    司机--的名字COMamazonaws秘密经理sqlAWSSecretsManagerMySQLDriver
6

7
  liquibase
8
    网址jdbc - secretsmanagermysql//数据库主机:3306 / rotate_db
9
    用户秘密/轮换
版权所有:https://www.eraycloud.com 转载请注明出处