如何在Git for Puppet中安全地存储TLS / SSL密钥文件?

时间:2014-08-04 19:04:25

标签: git puppet

您如何安全地将HTTP的TLS / SSL密钥提交到源代码管理中,以便Puppet可以使用它们?您使用哪些工具和实践来加密/解密这些文件?特别是,哪些工具可以尽可能地使其易于自动化。

3 个答案:

答案 0 :(得分:4)

不是根据个人经验说话,但据我了解,这是常见的做法

  1. 在hiera和
  2. 中存储密钥和密码等数据
  3. 使用带hiera-eyaml后端
  4. 的eyaml保护它们

    它支持使用您选择的编辑器编辑解密值,假设您可以访问私钥。

    Puppet master还需要密钥访问权限,以便它可以将敏感信息转发给代理。

    就安全性而言,如果主机完全受损,这会让你失去所有秘密(但实际上,如果你遇到这种情况,你必须考虑所有你的机器和他们的机器无论如何,数据也要受到损害。

答案 1 :(得分:2)

您可以将证书存储在任何SCM中,包括Git,而无需担心。在SCM中存储私钥不是最佳做法;您需要找到一种方法来限制只有那些需要访问私钥的人(并且应该是少数人)。您有两个基本选项:

  1. 安全存储私钥;或者,
  2. 在每个客户端上重新生成密钥对。
  3. 它不被视为最佳做法,但您可以将私钥加密存储在PKCS-12存档中(使用只有需要访问私钥的用户才能知道的强密码进行保护),然后将其存放到存储中,如SCM或FS等。构建新服务时,构建过程的最后一步是系统管理员手动解密密钥库。

    最好为新服务实例重新生成密钥,但这需要在构建完成后将新服务的CSR提交给CA.

    这两种方案都需要手动完成设置过程。为了自动执行此过程,有些人在安装脚本中对PKCS-12密码进行编码 - 这不是最佳实践。

    这里的Puppet插件可以帮助完成这个过程:

    https://github.com/puppetlabs/puppetlabs-java_ks

答案 2 :(得分:0)

私钥适合自动分发。因为要使它们安全分发,所以必须进行高度加密,这需要手动干预才能进行解密。这确实否定了自动位。

它们也不应该存储在存储库中,因为这可能比您想象的更容易访问。如果您不小心,您的密钥可以end up on github。它可能比您想象的happens more often