在托管源代码控制中安全地存储秘密

时间:2013-01-29 20:13:09

标签: encryption version-control dvcs

我们公司最近采用了BitBucket在本地源控制系统上托管的私有存储库。除了源代码之外,每个存储库都具有构建,配置和部署(脚本等)所需的所有组件。这在大多数方面都很有效,但我对如何处理通常伴随我的构建和部署脚本的敏感密码,ftp配置等感到厌烦。

请参阅this similar post概述问题。

在我的例子中,xml配置代表了用于解析它们的代码,因此它们需要进行版本控制(无论如何都是模式)。

显然,将秘密存储在本地以外的任何地方会增加您的风险,但有哪些替代方案?存储它们加密?在构建期间使用花哨的配置部分替换,从外部系统提供配置值?

2 个答案:

答案 0 :(得分:2)

<强> GIT中

涂抹/清洁过滤器,用于双向KEYWORD&lt; - &gt;代码替换

<强>水银

MQ-patch(本地),用于恢复本地工作目录中的敏感数据,在推送和发布的仓库中丢失

答案 1 :(得分:0)

您可以在本地存储包含敏感数据的配置文件。您应该签署此文件,其中包含私钥或密钥。验证签名的公钥应存储在代码中。现在,您将在源存储库中加密的版本化配置存储起来。只有在应用程序在指定位置找到签名的解密密钥时,才能读取加密的配置。如果它找不到它,它将回退到普通的默认值进行测试。如果添加此附加技巧,请不要忘记添加正在使用的配置的日志记录。您可能还想在配置文件上签名或执行MAC计算。

这提供了多少安全性取决于系统的其余部分,但您可以在本地保留相对静态的数据,并仍然将配置数据放在版本控制系统中。请注意,许多版本控制系统都是文本,因此您可能希望对加密的配置文件进行base64编码,以确保这一点。

这当然是众多计划中的一种。