在Spring Boot中定义重要凭证的最佳方法

时间:2018-06-19 12:42:18

标签: java security spring-boot password-protection

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

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

我担心如果有人获得了我们的应用程序属性并获得了所有重要的细节,将会发生什么事情。

是否有什么好的方法可以将重要的凭据放在某个地方,然后根据环境在我们的Spring Boot应用程序中获取它们?

4 个答案:

答案 0 :(得分:4)

许多技巧

  • 使用令牌替换(Maven替换)

    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加密您的属性

答案 1 :(得分:1)

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

setx DEV_DB_PASS <your_dev_database_password>

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

spring.datasource.password = ${DEV_DB_PASS}

您可以参考official documentation.

答案 2 :(得分:0)

您应该使用spring cloud config。因为它最适合使用git仓库或任何类似的工具在中央位置管理配置。

答案 3 :(得分:0)

请永远不要认为环境变量是隐藏的-proc条目env由进程所有者拥有这些变量。默默无闻的安全性无济于事。

# ls -asl /proc/6475/environ 
0 -r-------- 1 karl karl 0 Sep 22 13:58 /proc/6475/environ