2009-11-22 88 views
1

我有多个开发人员正在开发的项目。我们都使用同一个git仓库。如何将加密信息存储在公共DVCS存储库中?

目前,我不将生产服务器配置存储在存储库中,因为配置文件包含数据库凭证。

我想开始将这些配置存储在存储库中,所以我在考虑在将配置文件保存在DVCS中之前对其进行加密。

  1. 你们认为这个想法是什么?
  2. 怎么会这样做呢?
+0

不完全确定这个过程,但它肯定会涉及合并管理器在某些时候处理这​​些加密(不可合并)的文件。请参阅http://stackoverflow.com/questions/1288480 – VonC 2009-11-22 19:43:07

+0

为什么要加密它们?你不相信你的开发者? – liori 2009-11-22 19:55:03

+0

我与来自世界各地的开发人员合作。我个人相信他们,但我不愿意被证明是错误的。如果我被证明是错误的,它会在至少幸运的时间发生,并有可能产生最可怕的后果。我宁愿管理自己的不确定性,也不希望相信没有事情会发生。 – 2009-11-22 19:58:23

回答

5

为什么这些秘密需要存储在公共存储库中?

我会使用完全不同的机制来分发这些秘密,只有那些需要访问它们的管理员才能访问这些秘密。

+0

像什么?..... – 2009-11-22 20:31:19

+1

就像一个单独的回购,只有管理员只访问整个回购的秘密配置文件。或其他任何系统管理员使用的东西。想到Puppet和它的软件配置的弟兄们。不过,这在系统管理员领域比编程领域更多。 – ndim 2009-11-22 20:40:17

+0

这可能是一个实际的解决方案,因为那时我可以版本控制设置,但是它们将与源代码分开版本化,这是一个问题。 – 2009-11-22 20:47:02

2

我们对配置文件中的密码进行了加密,应用程序使用在运行时交互输入的密钥对它们进行解密。由于我们使用的配置系统,只有配置解析器需要修改;应用程序代码本身不需要更改。

其主要缺点是我们使用公钥算法,以便任何人都可以为配置文件加密一个值,但只有授权用户才能解密它们。这使得加密值变得更大(我们使用2048位RSA密钥,并使用Base-64进行编码),并且在配置文件中有一些丑陋之处。

我们总是小心地将元数据与加密值一起编码。这标识了加密密钥,使用的算法以及算法所需的参数。这样,我们可以优雅地更改键或算法,并在一段时间内进行迁移。