gpt4 book ai didi

linux - 如何防止和保护 Jenkins 中的生产部署作业不被意外触发?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:13 26 4
gpt4 key购买 nike

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

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

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

您将如何实现?一种可能的解决方案是使用构建前/构建后 shell 脚本启动新的 ssh-agent 作为 Jenkins 作业执行的一部分,并将 key 加载到其中,然后在部署完成后停止它。不过,似乎应该有一种更优雅的方式来做到这一点。

最佳答案

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

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

这使我们能够对我们的 Prod jenkins 进行非常非常严格的访问控制,而我们的 Dev Jenkins 仍然是“狂野的西部”,而不会打扰开发团队。

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

关于linux - 如何防止和保护 Jenkins 中的生产部署作业不被意外触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22251152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com