首页 > 解决方案 > 我应该把凭据放在哪里:application.properties vs system env variables

问题描述

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

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

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

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

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

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

标签: javaspring

解决方案


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

典型的基于 Sping 的部署会遇到配置被硬编码到代码存储库的应用程序属性文件中的问题。这对于模块化您的代码库非常有用,因此可以将其传输到多个环境。但是,它确保您的代码还具有明文密码、api 密钥和其他不应在 VCS 存储库中或以任何方式分发的数据。

为了锁定代码库本身的安全性,我们决定将代码库中的所有密码、api 密钥和其他机密数据外部化。Spring 非常容易做到这一点,它提供了在启动时将配置指定为环境变量的选项,或者将外部应用程序属性文件指定给 init 脚本或 CLI 调用。

验证码博客


推荐阅读