在我的Spring Boot项目中,应该将凭据放在哪里以使用其他服务,例如数据库或消息队列的用户名/密码或JWT密钥?
我应该将其放入系统环境变量中吗?或在application.properties中?哪一个更安全?考虑到两者都是纯文本的?
对于JWT令牌,我在操作系统中使用以下命令在启动服务器之前更新值:
export MONEYLIZER_JWT_SECRET_KEY=$(echo -n "somevalue" | openssl sha512 -hmac "somekey")
因此它并不总是恒定的。 application.properties
并没有给我这种灵活性。
商业服务通常做什么?我应该在哪里保存凭据和设置?
答案 0 :(得分:2)
环境变量绝对比application.properties中的纯文本安全
典型的基于Sping的部署难以配置 编码到代码存储库的应用程序属性文件中。 这非常适合模块化您的代码库,因此可以进行传输 到多个环境。但是,这可以确保您的代码也清晰 文本密码,API密钥以及不应包含在VCS中的其他数据 回购或以任何方式分发。
为了锁定代码库本身的安全性,我们决定 外部化所有密码,API密钥和其他机密数据 从我们的代码库中。 Spring使执行此操作非常容易, 提供将配置指定为环境的选项 在启动时指定变量或将外部应用程序属性文件指定给 初始化脚本或CLI调用。