如何安全地管理Spring Boot项目中的敏感配置信息

在开发Spring Boot应用时,我们经常需要处理一些敏感的配置信息,比如数据库密码、API密钥等。以下是一个最佳实践方案:

1. 创建配置文件

application.yml(版本控制)

yaml 复制代码
spring:
  datasource:
    url: ${MYSQL_URL:jdbc:mysql://localhost:3306/db_name}
    username: ${MYSQL_USERNAME:root}
    password: ${MYSQL_PASSWORD:}
  
  redis:
    host: ${REDIS_HOST:localhost}
    port: ${REDIS_PORT:6379}
    password: ${REDIS_PASSWORD:}

application-local.yml(本地开发,不进入版本控制)

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_local_db
    username: dev_user
    password: dev_password
  
  redis:
    host: localhost
    port: 6379
    password: local_redis_pass
  • 新创建application-local.yml,可能会自动加入git 管理,这里选择回滚为了保证这个文件不加入git 管理。

2. 配置.gitignore

将以下内容添加到.gitignore文件:

复制代码
# 忽略本地配置文件
application-local.yml

3. 最佳实践说明

  1. application.yml 作为默认配置文件:

    • 包含所有配置项的模板
    • 使用环境变量占位符
    • 提供默认值
    • 可以提交到版本控制系统
  2. application-local.yml 作为本地开发配置:

    • 包含实际的本地开发环境配置
    • 包含敏感信息
    • 添加到.gitignore,不提交到版本控制系统
  3. 在开发环境中:

    • 开发人员可以根据自己的本地环境创建和修改application-local.yml
    • 每个开发人员可以有自己的本地配置,互不影响
  4. 在生产环境中:

    • 使用环境变量或外部配置系统提供实际的配置值
    • 不需要application-local.yml文件

4. 使用方法

  1. 克隆项目后,复制application.yml为application-local.yml
  2. 在application-local.yml中填入本地开发环境的实际配置
  3. 确保application-local.yml已在.gitignore中
  4. 启动应用时,Spring Boot会自动合并这两个配置文件
相关推荐
武昌库里写JAVA7 分钟前
Java 设计模式在 Spring 框架中的实践:工厂模式与单例模式
java·vue.js·spring boot·sql·学习
千里码aicood14 分钟前
springboot+vue心理健康服务小程序(源码+文档+调试+基础修改+答疑)
数据库·vue.js·spring boot
每天进步一点_JL18 分钟前
深入理解 volatile
后端
李慕婉学姐26 分钟前
【开题答辩过程】以《基于SpringBoot+Vue的扶贫助农平台的设计与实现》为例,不会开题答辩的可以进来看看
vue.js·spring boot·后端
麦兜*27 分钟前
Redis高可用架构设计:主从复制、哨兵、Cluster集群模式深度对比
java·数据库·spring boot·redis·spring·spring cloud·缓存
王嘉俊92528 分钟前
Redis 入门:高效缓存与数据存储的利器
java·数据库·redis·后端·spring·缓存·springboot
知攻善防实验室28 分钟前
大洞,速修,Redis远程命令执行漏洞。
安全·网络安全·渗透测试
kangaroo.31 分钟前
基于EasyExcel、FastExcel封装spring boot starter
spring boot·easyexcel·fastexcel
王维31 分钟前
【shardingsphere-jdbc】分表实践
java·数据库
aricvvang37 分钟前
一行 Promise.all 争议:数据库查询并行真的没用?我和同事吵赢了!!!
javascript·后端·node.js