如何避免在版本控制中存储密码?

Dom*_*chi 19 deployment passwords version-control password-protection

您使用什么策略来避免在版本控制中存储密码?

目前,我将开发/测试/生产密码保存在三个不同的文件中,并在部署期间使用相应的文件.所有这些都致力于版本控制,但我对此并不满意,因为并非所有开发人员都需要知道这些密码(特别是外包的密码,只有在他们的项目持续时才可以访问,这可能只有一个月).

在数据库中存储密码不是一个很好的选择:

  • 我在Spring上下文(Java app)的初始化期间需要大部分数据,我不想构建用于连接到单个数据库的脚手架,然后连接到其余的数据库并初始化其余的应用程序
  • 一些密码只与部署有关; 用于访问不同服务器,密钥库等的密码; 这些是应用程序启动后无法加载的东西,因为它根本不加载它

我正在考虑将部署配置从开发人员计算机移动到专用计算机,该计算机从版本控制中检出代码并运行构建/部署脚本,但我不确定最好的方法是什么.

我还需要说我不想要最终的安全性:我只是想避免在每个开发人员的磁盘上使用密码并使其变得太容易.

所以我要求你的经验/最佳实践.你怎么做呢?

cle*_*tus 9

特定于环境的配置属性我倾向于放入一个不在源代码控制中且不属于构建过程的属性文件.在设置新环境时,该设置的一部分是创建包含数据库地址,凭据和名称,相关远程主机名称等内容的属性文件.

在Spring中,您使用PropertyPlaceholderConfigurer加载属性文件.它只需要Spring可以找到,这通常只是意味着将它放在应用程序服务器下的适当目录中.

或者,您使用包装器来运行应用程序服务器,JVM启动选项包括将这些属性文件添加到类路径中,以便Spring可以找到它们.


rus*_*sau 7

我见过两种方法:

  • 将密码移动到开发人员无权访问的另一个源代码控制树中.
  • 不要将任何密码放入源代码管理中,并且每次部署完成时,专用构建管理员都需要输入密码.这是在一家银行,那里有一个全职人员在构建流程/合并/发布.