在 spring 引导中定义重要凭据的最佳方式
Best way define important credentials in spring boot
使用Spring启动应用程序时,我们根据不同的环境使用不同的application.properties
文件。
我们放置了重要的凭据,例如:数据库配置、服务器 IP、管理员 username/password 等等。
我担心如果有人获得我们的应用程序属性并获得所有重要细节会发生什么。
有没有什么好的方法可以将重要的凭据放在某个地方并在我们的 Spring 基于环境的启动应用程序中获取它们?
您应该使用 spring 云配置。因为它最适合使用 git 存储库或任何类似的方式在中心位置管理配置。
一种解决方案是在应用程序属性中使用环境变量和 属性 占位符。比方说,您想存储数据库的密码。创建环境变量:
setx DEV_DB_PASS <your_dev_database_password>
现在,在应用程序属性文件中,您可以访问此值:
spring.datasource.password = ${DEV_DB_PASS}
很多技巧
使用令牌替换(maven replacor)
application.properties spring.datasource.password=#MY_DB_PASSWORD#
tokens.properties #MY_DB_PASSWORD#=SECRET_PASSWORD
其中 tokens.properties 具有访问保护
使用环境变量
mvn spring-boot:run -Dspring.datasource.password=SECRET_PASSWORD
或者干脆
spring.datasource.password=${myDbPasswordEnv}
使用Jaspyt加密您的财产
请不要认为环境变量是隐藏的 - proc entry env 拥有这些由进程所有者拥有。默默无闻的安全性无济于事。
# ls -asl /proc/6475/environ
0 -r-------- 1 karl karl 0 Sep 22 13:58 /proc/6475/environ
使用Spring启动应用程序时,我们根据不同的环境使用不同的application.properties
文件。
我们放置了重要的凭据,例如:数据库配置、服务器 IP、管理员 username/password 等等。
我担心如果有人获得我们的应用程序属性并获得所有重要细节会发生什么。
有没有什么好的方法可以将重要的凭据放在某个地方并在我们的 Spring 基于环境的启动应用程序中获取它们?
您应该使用 spring 云配置。因为它最适合使用 git 存储库或任何类似的方式在中心位置管理配置。
一种解决方案是在应用程序属性中使用环境变量和 属性 占位符。比方说,您想存储数据库的密码。创建环境变量:
setx DEV_DB_PASS <your_dev_database_password>
现在,在应用程序属性文件中,您可以访问此值:
spring.datasource.password = ${DEV_DB_PASS}
很多技巧
使用令牌替换(maven replacor)
application.properties
spring.datasource.password=#MY_DB_PASSWORD#
tokens.properties#MY_DB_PASSWORD#=SECRET_PASSWORD
其中 tokens.properties 具有访问保护
使用环境变量
mvn spring-boot:run -Dspring.datasource.password=SECRET_PASSWORD
或者干脆
spring.datasource.password=${myDbPasswordEnv}
使用Jaspyt加密您的财产
请不要认为环境变量是隐藏的 - proc entry env 拥有这些由进程所有者拥有。默默无闻的安全性无济于事。
# ls -asl /proc/6475/environ
0 -r-------- 1 karl karl 0 Sep 22 13:58 /proc/6475/environ