在自动部署节点中保护数据库凭证

部署节点(例如amazon ec2)的情况下,build议的最佳实践是如何将证书等信息保护到其他资源? 如果不解决规模问题,我们可能会手动input密码到configuration文件中,并将ssh密钥放置到位等等。

当我们试图通过引入自动化通过构build脚本和/或工具来启动新的EC2节点等来解决规模问题时,我们遇到了各种各样的麻烦(当然,有些可能是不必要的)。

这是我们的优先事项

  • 自动部署新节点(需要ssh密钥)
  • 应用程序代码的自动化部署(利用数据库凭证等)
  • 不在版本控制中存储任何凭据(我不信任版本控制安全性)
  • 因为很less有人可以获得生产证书,甚至开发人员(他们有自己的资源访问凭证)

我特别提到数据库凭证,但是从版本控制到ssh密钥的任何凭证都是相关的。

我们已经提出了一些解决scheme,每个解决scheme都有自己的利弊,但是这个问题肯定已经被几个人解决了。 我们是否在解决问题?

如果相关,这里是一些关于我们的环境和工具的信息

  • Linux的
  • Capistrano的
  • 木偶
  • Java,ruby,PHP
  • 阿拉西娅的竹子
  • SSH密钥
  • mysql,postgres,activemq

如果您正在寻找一种安全的方式来存储这些数据(encryption?),而无需用户交互:没有!

您可以使用标准化的EC2映像来部署每个节点。 然后,您可以使用bashlogin并更改所有密码,然后将其保存在某处。