你有什么build议为configurationpipe理存储密码?

我见过许多build议来对configurationpipe理系统进行版本化。 你如何build议一个处理应用程序安全所需的密码? 版本化它们呢?

如果您正在configuration文件中编写密码,那么在将configuration文件检入到版本控制中时,保留这些密码当然更容易。 这样做当然不仅仅是将它们放在configuration文件中,而且只要将适当的访问控制应用于存储库(存储库上的权限以及存储库用于其后端的文件系统权限) )。 像这样存储的密码当然是脆弱的,但是往往你别无select。

无论何时您存储密码,最好确保它们将被encryption,并且对encryption的密码数据库的访问是有限的。 我通常不会使用版本控制系统,因为它具有一定的开销和复杂性,这只会增加攻击面。

很多人在电子表格和文档中存储pipe理密码。 不要像那些人一样,除非你喜欢被笔试者尴尬。

最好的解决scheme是使用encryption密码的软件,如果可能的话将它们存储在离线系统上。 存在大量的软件(其中一些可以根据需要主动更改密码,并保留历史密码的logging)。 日立ID Systems为此制作了一个企业级产品(披露:我曾经为他们工作); keepass和lastpass也想到了。

如果您只是需要安全地存储密码并偶尔检索它们,请尝试使用Secret Server等产品。

如果您希望将密码与部署文物捆绑在一起作为自动化的一部分,则可以find一个工具(如秘密服务器),该工具带有一个API,可以在您需要时查询密码,并将其保留在可能不太安全的位置版本控制库。

如果您正在使用Chef等configurationpipe理工具,则可以使用encryption的数据提包

http://docs.opscode.com/essentials_data_bags_encrypt.html

OTOH,对于因环境而异的事物,最好通过系统环境将它们传递给自动脚本。

http://www.12factor.net/config

任何CI或CD服务器产品都应允许您以encryptionforms存储值。 例如,这里是我工作的产品的文档。

http://www.thoughtworks-studios.com/docs/go/current/help/deploy_a_specific_build_to_an_environment.html#secure_variables_section