如何避免配置文件中的密码被泄露

如何避免配置文件中的密码被泄露

前言

我们一般都是直接把数据库密码之类的内容(springboot)写的到了配置文件 application.yml 中,例如:

spring:
	redis: 
		database: 0
		port: 6379
		password: 123456
		host: 127.0.0.1

这样直接把密码暴露配置文件很容易就被人盗走,比如说我们通常会把自己的代码开源,并且有多次提交的记录,当自己的代码打包放到生产环境去用的时候我们不得不改变配置文件中的密码配置,然后适应生产环境,如果后面我们直接把这次的修改进行提交,发到了远程仓库,那么别人就有可能通过版本回退拿到密码和主机,并且在职场中如果有检查漏洞可能会说:禁止把密码直接填写到项目的配置文件中。


方法

密码管理平台

密码是极度敏感的信息,比较常见的做法是保存到独立的 密码管理平台 或者是 有严格权限控制的配置中心,由运维、开发 owner 等角色来管理。然后我们的项目可以通过 API 调用的方式从这些地方动态获取到密码,再来初始化数据库、Redis 等客户端连接。

如何避免配置文件中的密码被泄露_第1张图片

但是 Spring Boot 项目不是只有在启动时才会读取 application.yml 来初始化客户端连接 Bean 么?我怎么控制它从密码管理平台拉取密码后,再去创建 Bean 呢?

虽然 Spring Boot 能帮你自动创建 Bean,但别忘了我们是可以自己定义 Bean 的,就像下面这段伪代码:

如何避免配置文件中的密码被泄露_第2张图片

配置中心

如果学了 SpringCloud 的小伙伴知道,微服务中有一个配置中心的东西,比如说 nacos 等,SpringCloud 在启动时会优先读取 bootstrap.yml 的配置来从远程加载其他的配置(比如密码),这样就不需要自己去创建 Bean 了。

把配置文件忽略

密码泄露可能是通过 git 仓库版本管理泄露的那么我能不能不把密码泄露呢,答案是可以的,我们可以用 .gitignore 忽略,这样不就可以啦,如果是团队的人需要,那你们直接内部把配置文件传给他就好了。

近期在自学 Java 做项目,加入了一个编程学习圈子,里面有编程学习路线和原创的项目教程,感觉非常不错。还可以 1 对 1 和大厂嘉宾交流答疑,也希望能对大家有帮助,扫 ⬇️ 二维码即可加入。
如何避免配置文件中的密码被泄露_第3张图片

也可以点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?

也可以加我QQ(2837468248)咨询说明来意!

你可能感兴趣的:(spring,boot,后端,密码泄露)