是否可以在生成作业中获取Jenkins密码

是否可以在生成作业中获取Jenkins密码,jenkins,jenkins-plugins,cloudbees,jenkins-cli,jenkins-scriptler,Jenkins,Jenkins Plugins,Cloudbees,Jenkins Cli,Jenkins Scriptler,我不确定以前是否已经问过/讨论过这个问题 在我的Jenkins中,我设置了LDAP身份验证,在我的一个作业中需要该密码才能使用该密码远程登录到不同的服务器并在那里执行一些任务 假设远程任务是通过需要用户名密码的ant任务中的sshexec执行的。我不希望用户以构建参数的形式再次输入密码,有没有办法在构建作业中获取用于Jenkins身份验证的密码 最好的方法是允许远程服务器中的jenkins用户拥有权限 [一] 有没有办法在构建作业中获取用于Jenkins身份验证的密码 并非如此。Jenkins在

我不确定以前是否已经问过/讨论过这个问题

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


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

最好的方法是允许远程服务器中的jenkins用户拥有权限

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

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

因此,您需要定义Jenkins中持久化的凭证,以便在构建过程中使用。您可以使用设置作业将有权访问的固定用户名/密码

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

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


(常规凭据是加密存储的,但默认的安全存储机制将主加密密钥保存在
$JENKINS_HOME
中-只要您不允许任何尚未成为JENKINS管理员的人访问您的服务器,当然,只要您将主计算机配置为没有执行器,那么主加密密钥就非常安全因此,人们不能在其上运行构建,只能在从机上运行。另一种RFE将是一种备用存储机制,允许通过其他方式注入主密钥。)

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