我有一个在不同环境(dev,qa,prod)中运行的spring- boot应用程序。为了生成可以在所有环境上运行而无需进行任何修改的不可变构建,我将特定于环境的配置文件打包到生成的jar本身中。但这也带来了另一个问题,即也将生产数据库凭据公开给开发团队。我可以使用外部配置服务器,但对我而言这已经算是过高了。
我如何管理这些配置文件以避免此信息泄漏并具有不可变的构建以支持CI / CD?
对于数据泄漏,建议使用jasypt加密用户名/密码。
https://github.com/ulisesbocchio/jasypt-spring- boot
但是,用于解密的密码必须在机器上,因此应该已经在该机器上,并且已尽可能安全地保护它(例如,其他用户或https://github.com/certnanny/KeyNanny)
不过,我不会将配置放在jar文件中。它不是应用逻辑的一部分,而是部署过程的一部分,并且部署者应该能够轻松添加新计算机。当然,如果使用docker,则有所不同。