【问题标题】:Jenkins User's authorization to deployJenkins 用户授权部署
【发布时间】:2015-05-05 06:30:05
【问题描述】:

我想在 Jenkins 中为所有用户(甚至超级管理员)进行 2 因素身份验证,并且想知道,如果可能,如果可能,可能的方式是什么,或者我们是否需要一个插件。

另外,我们能否获得在 Jenkins 中安排部署的授权,如果可能,我们该如何做。

【问题讨论】:

  • 我仍然不确定您的问题是什么...您尝试了什么?什么不工作?
  • 嗨,斯拉夫,感谢您的回复!
  • 嗨斯拉夫!与詹金斯有关!!为了解释,我想在构建作业之前进行身份验证。您会知道我们是如何构建工作的,我希望系统在开始构建工作之前提示输入密码,这样,我们将能够验证我们的构建过程,并为我们的工作和构建运行添加一些安全性。我找到了一个插件“授权项目插件”,但不确定它是否有效。我试过在测试机器上安装,但没有任何区别。

标签: jenkins continuous-integration two-factor-authentication


【解决方案1】:

Jenkins授权在这里详细解释:
https://wiki.jenkins-ci.org/display/JENKINS/Standard+Security+Setup

“授权项目插件”不适合您的要求。

每次开始工作时都不会提示您输入密码。相反,您应该配置个人作业以授予个人访问权限。 Jenkins 允许这种粒度。

如果您真的想在每次作业执行时提示输入密码,则必须配置作业以创建新的密码参数,然后作为您的第一个构建步骤之一,验证输入的密码是否...是你想要的。但这意味着您的验证脚本可能会驻留在 Jenkins 本身上。

编辑:

  • 配置作业
  • 选择“此版本已参数化”
  • 添加“字符串”参数
  • 称它为“密码”
  • 如果在 *nix 环境中,为第一个构建步骤选择“执行 Shell”:

set +x if ! [[ "$password" == "mysecret" ]]; then echo "Bad password" exit 1 fi exit 0

  • 如果在 Windows 环境中,为第一个构建步骤选择“执行 Windows 批处理命令”:

@echo off if not "%password%" == "mysecret" ( echo "Bad password" exit /b 1 ) exit /b 0

  • 照常添加其他构建步骤。

现在,作业每次运行时都会提示输入“密码”,如果与字符串“mysecret”不匹配,作业就会失败。

重要提示:

  • 这将在 SCM 签出后运行。如果您想在 SCM 结帐前运行它,您需要 Pre-SCM build step 插件。
  • 具有“配置”访问权限或以上权限的任何人都可以看到纯文本的“mysecret”。您可以使用 EnvInject 插件来配置全局(或作业本地)密码并针对该变量进行验证,而不是“mysecret”
  • 任何直接/远程登录到 Jenkins 机器的人都可以看到带有“mysecret”的纯文本配置文件(除非使用上面的 EnvInject)。
  • 拥有足够权限的人可以修改或复制作业,并删除此验证。

我再次恳请您,正确的方法是通过默认的 Jenkins 安全/授权提供精细的每用户权限。使用“矩阵”授权为每个用户授予每个作业的权限。

【讨论】:

  • 嗨斯拉夫!感谢您的回复。所以你说我不需要任何插件,但我需要在詹金斯服务器本身上创建一个相同的脚本。
  • 您能否更详细地解释一下,我应该如何配置我的作业,以便在执行作业时向任何用户提示密码?感谢您的帮助。问候,卡鲁纳
  • 已更新,但再次强调,正确的方法是为每个用户提供每个作业的权限。
  • 我了解 Slav 您希望我遵循正确的方法,但我的客户要求不同,他们希望保护部署过程免受意外构建,因此需要再添加一个步骤。管理员也可能发生事故!是的,我已经了解了基于矩阵的权限并也在使用它。非常感谢斯拉夫对我的包容并在如此多的细节上帮助我。 :)
猜你喜欢
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2017-12-08
  • 2020-06-18
相关资源
最近更新 更多