在春季启动中定义重要凭据的最佳方式

使用Spring Boot应用程序时,我们根据不同的环境使用不同的文件。application.properties

我们放置重要的凭据,例如:数据库配置,服务器IP,管理员用户名/密码等。

我担心如果有人获得我们的应用程序属性并获得所有重要详细信息会发生什么。

有没有好的方法可以将重要的凭据放在某个地方,并在基于环境的Spring Boot应用程序中获取它们?


答案 1

许多技术

  • 使用令牌替换(maven 替换器)

    应用程序.属性
    令牌.属性spring.datasource.password=#MY_DB_PASSWORD# #MY_DB_PASSWORD#=SECRET_PASSWORD

    其中 tokens.properties 具有访问保护

  • 使用环境变量
    mvn spring-boot:run -Dspring.datasource.password=SECRET_PASSWORD

    或简称
    spring.datasource.password=${myDbPasswordEnv}

  • 使用雅斯皮来加密您的财产


答案 2

一种解决方案是在应用程序属性中使用环境变量和属性占位符。假设您要存储数据库的密码。创建环境变量:

setx DEV_DB_PASS <your_dev_database_password>

现在,在应用程序属性文件中,您可以通过以下方式访问此值:

spring.datasource.password = ${DEV_DB_PASS}

您可以参考官方文档。