【问题标题】:Where should I put the credentials: application.properties vs system env variables我应该把凭据放在哪里:application.properties vs system env variables
【发布时间】:2018-10-14 08:49:37
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 如果您不使用像 spring vault 这样的云库,那么放入环境变量会更安全。

标签: java spring


【解决方案1】:

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

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

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

veracode blog

【讨论】:

  • 哦,太好了。所以可以使用外部属性文件而不是项目中的一个。
  • API 调用的外部、内部、结果 - 看 l
猜你喜欢
  • 2020-09-30
  • 2016-08-25
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 2017-11-30
  • 2016-12-21
相关资源
最近更新 更多