詹金斯管道脚本中的sudo

时间:2018-09-18 04:53:05

标签: jenkins groovy sudo

我们有以下设置:

  1. 我们只有几个UNIX机器。
  2. 有一些用户设置了这些框(例如: spande )。
  3. 这些用户具有有限的特权,但可以执行sudo提升权限(sudo用户: admin )。
  4. sudo发生时没有任何密码。

我们在Jenkins中有一个CICD工具,它使用这些Unix盒作为从服务器。我们具有 spande 凭据,可以通过Jenkins登录到此Unix服务器。

我们正在使用Jenkins管道脚本(常规)。一切都很好,但是我们希望Jenkins脚本以更高的特权运行,因此需要知道:

  1. 我们如何在Jenkins脚本中执行sudo? ( sudo su-admin
  2. 这是在脚本中进行sudo的最佳实践/好的方法吗?如果没有,我们还有什么其他选择? (由于组织政策的原因,我们的Unix服务器团队尚未准备好创建具有​​更高权限的启用密码的用户)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

通常来说,只要您没有授予超出您所需权限的权限,就可以将sudo用作脚本的一部分。与其运行su - admin,通常不如找出Jenkins需要在admin中运行 as 的命令,然后将其直接放入sudoers文件中。

假设您需要以用户admin的身份运行以下程序,作为Jenkins工作的一部分:

/usr/bin/execute
/home/admin/calculate
/opt/synergize

您的sudoers文件可能类似于以下内容(假设您的Jenkins用户为jenkins):

jenkins ALL = (admin) NOPASSWD: /usr/bin/execute, /home/admin/calculate, /opt/synergize

这将使jenkins用户无需密码即可运行以下命令:

sudo -u admin /usr/bin/execute
sudo -u admin /home/admin/calculate
sudo -u admin /opt/synergize

从安全角度来看,这比提供su - admin访问更为可取,因为这样jenkins可以做admin可以做的任何事情而没有任何实际限制。 sudoers文件为very flexible,您应该能够限制jenkins,同时仍然允许它执行所需的工作。