【问题标题】:Is it possible to get Jenkins password in build job是否有可能在构建工作中获得 Jenkins 密码
【发布时间】:2014-10-10 23:27:44
【问题描述】:

我不确定这是否已经被问过/讨论过。

在我的 Jenkins 中,我已经设置了 LDAP 身份验证,并且在我的一项工作中需要该密码才能使用该密码远程登录到不同的服务器并在那里执行一些任务

假设远程任​​务是通过 sshexec 在需要用户名密码的 ant 任务中执行的。我不希望用户以构建参数的形式再次输入密码,有没有办法在构建作业中获取用于 Jenkins 身份验证的密码???

【问题讨论】:

    标签: jenkins jenkins-plugins cloudbees jenkins-cli jenkins-scriptler


    【解决方案1】:

    [我]有没有办法在构建作业中获取用于 Jenkins 身份验证的密码?

    并非如此。 Jenkins 不会在您登录后保留密码,它只是将密码传递给 LDAP 服务器足够长的时间以验证您是否应该通过身份验证。

    因此,您需要定义 Credentials 保存在 Jenkins 中,以便在构建期间使用。您可以使用Credentials Binding plugin 设置作业可以访问的固定用户名/密码。

    如果您的要求是可用于作业的任何构建的凭据,而是手动启动构建的用户必须提供它们(意味着计划或以其他方式触发的构建是不可能的),我认为从 1.1 版开始也支持这一点。为作业定义凭据类型的参数,以通过绑定中的变量扩展来使用。然后让用户在其用户配置页面 (/me/configure) 中定义这些凭据。然后,选择用参数构建时,他们应该看到自己的个人凭据并能够选择它们。用户需要该作业的 Credentials/UseOwn 权限。

    未来的另一个选择是用户名/密码凭据的子类型,它根本不存储密码(可能只是一个“盐渍”哈希,使用 jBCrypt),并以某种方式提示您在凭据之前输入密码被认为是有效的,可能会在几分钟后过期。此模式尚未实现,但对安全要求更严格的站点很有用。

    (常规凭据以加密方式存储,但默认的安全存储机制将主加密密钥保存在 $JENKINS_HOME 中——只要您不允许任何不是 Jenkins 管理员的人通过 shell 访问您的服务器,它就非常安全,当然,只要您将主计算机配置为具有零执行程序,这样人们就无法在其上运行构建,只能在从属计算机上运行。另一个 RFE 将是一种替代存储机制,允许通过其他方式注入主密钥。)

    【讨论】:

    • Credentials 插件形式的存储密码似乎不是最好的解决方案,因为如今企业的这些密码每月过期一次,因此存储的密码必须每月更改一次。我认为最好在将 Jenkins 登录密码发送到 LDAP 之前通过某种方式捕获它,以便它可以在作业中作为参数在下游使用?你有什么看法?
    • 对于那个环境,我认为你需要自定义实现 StandardUsernamePasswordCredentials 来保存临时密码;和一个修补的LDAPSecurityRealm 报告用于登录侦听器的密码。我以前没有听说过这个要求,所以我不确定这种需求到底有多广泛。
    【解决方案2】:

    最好的办法是允许远程服务器中的詹金斯用户获得权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2013-05-27
      相关资源
      最近更新 更多