在Spring Boot中加密应用程序属性

时间:2017-10-11 15:22:32

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

所以我做了一些谷歌搜索并阅读了一些关于Spring Cloud的文档,但为了真正惩罚自己,我试图准确理解如何使用&#加密敏感的应用程序属性34; {密码}"确实有效。

例如在application.yml ...

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

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

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

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

总的来说,我有很多问题,最重要的是,我甚至不确定我需要问什么问题。因此,我希望有人能够知道他们正在做什么可以指向一些正确的方向指向某些链接,以便让我一起去吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

如果无法控制对该存储库的访问,则永远不会将敏感数据(如密钥)提交到源代码存储库。不仅是常规访问,还包括物理访问,备份......,

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

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