【问题标题】:Encrypting application properties in Spring Boot在 Spring Boot 中加密应用程序属性
【发布时间】:2018-03-23 08:31:23
【问题描述】:

所以我做了一些谷歌搜索并阅读了一些关于 Spring Cloud 的文档,但为了真正惩罚自己,我正在努力了解究竟如何使用“{cipher}”加密敏感的应用程序属性作品。

例如在 application.yml...

Spring.datasource.password: '{cipher} abdjdbdjfb15168gddbdk3900289'

我的理解是,将其提交到 repo 是安全的,并且 spring boot 使用 bootstrap.yml 中的 encrypt.key 以便在需要时对其进行解密。

我不明白为什么将 encrypt.key 提交到 repo 是安全的?如果你不这样做,那我应该如何利用它?

我还在 heroku 文档上找到了一个链接,您可能将其设置为服务器中的配置变量?

归根结底,我有很多问题,最重要的是,我什至不确定我需要问什么问题。所以我希望知道他们在做什么的人可以为我指出一些正确的方向,比如一些阅读链接等,让我继续前进?

提前致谢!

【问题讨论】:

  • 向 repo 提交任何密钥绝对不安全。您还需要确保使用正确的密码,因为您仍然容易受到暴力破解。
  • gitter.im/spring-cloud/spring-cloud 是与 Spring Cloud 团队取得联系的好地方。

标签: java spring-boot spring-cloud web-config-encryption


【解决方案1】:

首先,查看 Spring Cloud Config 中关于 encryption 的参考文档,其中解释了配置支持的可能性。

如果您无法控制对该存储库的访问,您应该绝不将敏感数据(例如密钥)提交到源代码存储库。不仅是常规访问,还有物理访问、备份……。

如何处理密钥的首选方法是将密钥存储在尽可能少的地方,理想情况下只在发生解密的服务器端。您可以选择使用引导配置、系统属性或环境变量作为将密钥传递给运行时的机制。

您可能想查看HashiCorp Vault support,因为 Vault 解决了密钥管理的鸡蛋问题。相反,您可以获取一个 Vault 令牌(从您的客户端应用程序内部,或在服务器上配置一个令牌),然后 Vault 将为您处理加密/解密。

【讨论】:

  • 如果我将我的“secret.key”存储在我的 bootstrap.yml 文件中,将该文件添加到我的 .gitignore,然后当我将我的 api 部署到 PaaS 时,这基本上是你的建议吗?感谢您的链接!这基本上就是我想要的:)
  • 让敏感数据尽可能远离任何 SCM 存储库。通过这样做,您可以积极防止意外披露。尝试使用 PaaS 为您提供的安全功能。
猜你喜欢
  • 2020-06-11
  • 2018-12-13
  • 2019-12-08
  • 2018-07-25
  • 1970-01-01
  • 2018-08-03
  • 2020-09-07
  • 1970-01-01
  • 2015-11-21
相关资源
最近更新 更多