生产部署的访问控制策略

我们有一个开发模式,每个开发者负责部署他/她负责的程序。

我们想要达到的是以下几点:

  1. 让所有开发人员能够将他们的应用程序部署到我们的生产环境中。
  2. 有很好的安全性
  3. 对谁做什么负责。
  4. 跟踪哪个应用程序使用哪些资源。

目前我们已经将所有的部署脚本编写在结构中 。

我们为每个应用程序设置了一个帐户。 该帐户的SSH密钥分发给负责部署该应用程序的开发人员。 此帐户也用于运行应用程序。

这实现了第1点,第4点和第2点,但不是3.它还有一个缺点,即服务器环境必须准备好,因为我们不想为应用程序帐户提供根访问权限(依赖项由root用户安装,目录创build)。

为了解决上述问题,我们应该如何制定我们的部署战略,而我们是否错过了战略的一些重要目标?

我们现在有一个类似的策略,我们正在摆脱它,正是因为你的观点3)。

程序员也负责发布的情况看起来非常好,简单,方便和快速,但是如果你关心系统的稳定性和问责性,它很快就会变成噩梦,因为它鼓励快速入侵(“没有人必须知道,在这里,我们迅速修复它,就像它从未发生过一样“),并劝阻正确的文档(”但每个人都知道“)。 同行评审? Fuhghehtaboutit;)

所有你会得到这样一个系统是一个系统pipe理员和程序员之间的永久的斗争,相信我,我在那里不久前。

稳定和有据可查的系统的唯一途径是,释放所需的所有步骤都要经过适当的logging,脚本化和尽可能经常testing,理想的情况是testing系统应该每天自动重build。 一旦你在这个阶段,任何人都可以运行脚本并发布, 而不应该是写这些脚本的人,因为他没有兴趣报告自己的遗漏。