通过 Jenkins 部署守护进程的最安全方法

通过 Jenkins 部署守护进程的最安全方法

我正在用 Java 开发一个系统服务,对于部署我想执行以下操作:

  1. 从构建中复制新的 Initd
  2. 停止正在部署的服务
  3. 覆盖/复制新的 JAR/配置示例
  4. 启动服务。

有没有一种方法可以在不授予詹金斯 root 访问权限的情况下执行此操作? [对于那些非 jenkins 人员:Jenkins 使用 SCP 和 SSH 进行复制和命令发送] 我担心的是,如果我授予 Jenkins root 访问权限,那么您不会限制所授予的权限。其范围是仅限制对该一项服务的更改。 (不依赖其他服务)

我愿意放宽第一个要求,因为这可能会使解决方案变得更加棘手。

答案1

有一个很少 问题该站点上已经介绍了如何让一个用户以 root 身份执行一个脚本(例如使用 sudo);基本上,您需要编写一个执行步骤 2-4 的脚本(例如service foo stop; cp -f ~jenkins/service.init /etc/init.d/; service foo start),并为 jenkins 用户授予该脚本的 NOPASSWD 权限/etc/sudoers

但从根本上来说,允许 Jenkins安装初始化脚本与给予 Jenkins(以及任何可以更改创建脚本并重新运行作业的输入的人)完全 root 访问权限相同,因为 init 脚本将在您重新启动时以 root 身份运行。

相关内容