我应该在哪里放置凭据:application.properties与系统环境变量

时间:2018-10-14 00:21:13

标签: java spring

在我的Spring Boot项目中,应该将凭据放在哪里以使用其他服务,例如数据库或消息队列的用户名/密码或JWT密钥?

我应该将其放入系统环境变量中吗?或在application.properties中?哪一个更安全?考虑到两者都是纯文本的?

对于JWT令牌,我在操作系统中使用以下命令在启动服务器之前更新值:

export MONEYLIZER_JWT_SECRET_KEY=$(echo -n "somevalue" | openssl sha512 -hmac "somekey")

因此它并不总是恒定的。 application.properties并没有给我这种灵活性。

商业服务通常做什么?我应该在哪里保存凭据和设置?

1 个答案:

答案 0 :(得分:2)

环境变量绝对比application.properties中的纯文本安全

  

典型的基于Sping的部署难以配置   编码到代码存储库的应用程序属性文件中。   这非常适合模块化您的代码库,因此可以进行传输   到多个环境。但是,这可以确保您的代码也清晰   文本密码,API密钥以及不应包含在VCS中的其他数据   回购或以任何方式分发。

     

为了锁定代码库本身的安全性,我们决定   外部化所有密码,API密钥和其他机密数据   从我们的代码库中。 Spring使执行此操作非常容易,   提供将配置指定为环境的选项   在启动时指定变量或将外部应用程序属性文件指定给   初始化脚本或CLI调用。

veracode blog