赞
踩
之前在项目的配置文件中看到关于数据库的配置,总觉得将数据库用户名和密码赤裸裸的展现他人面前非常不好。但是技术有限,见识有限,不知道该如何处理。同时所看到的项目都是这个样子的,所以觉得就这个样子吧。在集成 Druid
数据库连接池时,在官网文档中偶然发现可以在 SpringBoot 项目的配置文件中给数据库密码加密,正合心意。这次就记录一下整个实现过程。
ConfigFilter
的作用包括:
http
文件中读取配置前两个读取配置就直接贴原说明文档了,重点是数据库密码加密实践。
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="filters" value="config" />
<property name="connectionProperties" value="config.file=file:///home/admin/druid-pool.properties" />
</bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="filters" value="config" />
<property name="connectionProperties" value="config.file=http://127.0.0.1/druid-pool.properties" />
</bean>
这种配置方式,使得一个应用集群中,多个实例可以从同一个地方读取配置,集中配置,集中修改,部署更简单。
DruidDataSource
支持 jvm
启动参数配置 filters
,所以你可以:
java -Ddruid.filters=config ....
数据库密码直接写在配置中,对运维安全来说,是一个很大的挑战。
Druid
为此提供一种数据库密码加密的手段ConfigFilter
。
在命令行中执行如下命令:
java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools 你的数据库密码
要执行上述命令,首先需要下载 druid-1.1.9.jar
,我直接将 druid-1.1.9.jar
丢到了 C:Users\liyaf
文件夹下,打开 CMD
,贴上命令,回车运行即可(红框处是你的数据库密码,还有就是 Java 配置了系统环境变量)。我们可以得到公钥,私钥和加密后的密码。
Druid
数据源需要对数据库密码进行解密,有三种方式配置,SpringBoot 项目直接选择第一种:
my.properties
中指定 config.decrypt=true
DruidDataSource
的 ConnectionProperties
中指定config.decrypt=true
-Ddruid.config.decrypt=true
# JDBC配置:
# JDBC驱动程序的完全限定名。默认情况下基于URL自动检测
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库的JDBC URL
spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
# 数据库登录用户名
spring.datasource.druid.username=root
# 数据库登录密码(加密)
spring.datasource.druid.password=LWOFVDVOKzdH+PV/salzQTdpxApa7cXLNs07fvW/W7I4n1yZDndQz1FYQByzfr080tihAWRfY1bzy92EkvhxJg==
# 公钥
publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJX0QGFbKReek0aoC2fP7z/z808L/rvfvBV+c/3hU56TjGGAR+Ezsa9afZ1+BBZ52H0SQdVuir4GWNEHGLDwZZMCAwEAAQ==
# 配置 connection-properties,启用加密,配置公钥。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${publickey}
# 启动ConfigFilter
spring.datasource.druid.filter.config.enabled=true
我们重启项目正常,访问 Druid
监控页面正常。
整个流程实践下来还是很简单的。就两个步骤:密码加密和配置参数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。