springboot的配置加密(二)之属性替换法

背景

承接上文 springboot的配置加密(一)之druid

分析

druid的方案虽然不错 不过仅仅只能对与db进行配置

【而且限定了只能对于密码进行加密】对于我们想要加密需求比较多的似乎不太合适~

那么有没有什么其他办法呢???

当然是有的~ 其实springboot作为一个配置可插拔的系统来说是相当棒的~

参考 SpringBoot之神奇的properties&覆盖顺序

如果我们在生产环境的时候通过运维同学完成部署 将对应的用户名密码等等甚至连接url都可以通过java启动参数传递进去

方案

启动脚本中增加对应的用户名和密码

比如如下

1
nohup java  -Xms1g -Xmx1g -Xmn512m -server -jar -XX:PermSize=128m -XX:NewRatio=3 -XX:MaxPermSize=256m -Dspring.datasource.username=app_print -Dspring.d    atasource.password=XXXX -Ddubbo.port=$dubboPort -Dserver.port=$port -Dspring.profiles.active=$env $serverDir/$project.jar > $serverDir/springbo    ot.log 2>&1 &

这样很容易就完成了属性的覆盖~而开发却完全不需要关心~

弊端

这种方案 对于可以访问到web服务端来说基本没有任何防范。

对于拥有web权限的运维很容易通过命令行将密码输出 同时某些监控软件【比如zabbix】如果定期发送系统中进程描述也将暴露密码

40478c5884ec0b0f82bc64c745253f80235.jpg