如何防止和保护Jenkins中的生产部署作业免于意外触发?

时间:2014-03-07 13:17:25

标签: linux deployment ssh jenkins

我正在尝试使用Jenkins实现以下用户旅程:

  • 用户登录并选择“部署到生产”任务
  • 系统会提示用户输入密码并点击“构建”
  • 构建作业使用输入的密码解锁SSH私钥,然后授予其访问一个或多个生产主机的权限

这有两个目的:存储在构建主机上的SSH密钥受到保护,它还可以防止意外触发“部署”操作,否则该操作与任何其他Jenkins作业无法区分。似乎我没有使用密码短语将SSH私钥配置为Jenkins凭证,并且只在作业执行时提供它。 Jenkins实例在Linux上运行。

你会如何实现这个?一种可能的解决方案是使用pre / post-build shell脚本作为Jenkins作业执行的一部分启动新的ssh-agent,并将密钥加载到该代理中,然后在部署完成后停止它。看起来应该有更优雅的方式来做到这一点。

1 个答案:

答案 0 :(得分:1)

优雅的方法是使用Dev和Operations Jenkins系统并使用Build publish插件从一个发布到另一个。仅允许Operations访问Production jenkins系统以运行作业。

将构建和部署分离到单独的作业,而不是任务。然后,您可以使用Build Publish和Pipeline插件的组合将作业链接在一起,甚至跨越jenkins服务器。

这使得我们可以对我们的Prod jenkins进行非常严格的访问控制,而我们的Dev Jenkins仍然是“狂野的西部”而没有打开Dev团队。

如果你愿意,我可以直接回答你的问题,但审计数百个dev / qa / uat推送中的生产是一个噩梦。