Deployment 使用Puppet和Hiera保护SSL密钥(用于生产web应用程序)

Deployment 使用Puppet和Hiera保护SSL密钥(用于生产web应用程序),deployment,puppet,sysadmin,configuration-management,puppetlabs-apache,Deployment,Puppet,Sysadmin,Configuration Management,Puppetlabs Apache,我想知道为web应用程序保护SSL密钥和证书的最佳方法是什么。我正在使用角色/配置文件模式。以下是场景: 我有一个web应用程序。有一个Puppet模块用于设置应用程序。此模块还设置运行所需的SSL密钥和证书。这些文件在app/files目录下的相同repo(不安全)中提交,然后使用filetype将其放置在正确的位置 有一个概要文件清单,它将此应用程序的堆栈放在一起—安装和设置apache、安装和设置memcached、安装php,并使用上述模块设置应用程序 现在SSL密钥和证书在同一个r

我想知道为web应用程序保护SSL密钥和证书的最佳方法是什么。我正在使用角色/配置文件模式。以下是场景:

  • 我有一个web应用程序。有一个Puppet模块用于设置应用程序。此模块还设置运行所需的SSL密钥和证书。这些文件在app/files目录下的相同repo(不安全)中提交,然后使用
    file
    type将其放置在正确的位置
  • 有一个概要文件清单,它将此应用程序的堆栈放在一起—安装和设置apache、安装和设置memcached、安装php,并使用上述模块设置应用程序
现在SSL密钥和证书在同一个repo中进行检查,这可能不是最好的方法。我正在考虑使用hiera eyaml模块,然后将这些证书和密钥的加密版本放入hiera文件中


我只是想知道大多数人是不是这样做的?还是有更好的方法来处理这个问题?

我目前在项目中使用的是
hiera eyaml
。我们使用PKCS加密,为每个人提供公钥,以便他们可以进行修改,私钥只存在于puppet master和安全备份上。在我们进行了设置之后,它刚刚开始工作,每个人都很快习惯了使用该工具来加密值。

我相信您绘制的替代方案确实是常见的做法。您的加密数据必须保留在某个地方,Puppet需要一种方法对其进行解密。因此,这可能是最直接的方法。是的,听起来很合理。我唯一担心的是,当您加密SSL证书和密钥时,会得到一个非常大的加密字符串。当您在一个
eyaml
文件中放入多个证书/密钥时,该文件将变得太大而无法读取。这没什么大不了的,只是感觉这不是最好的方式。有什么想法吗?我们只有几把钥匙,所以这对我们来说不是什么大问题。我不确定这会有多好,但可以根据hiera层次结构将值拆分为多个文件。是的,没错。当查找失败时,Hiera将继续在层次结构中向下移动。