我不确定之前是否已经提出过这个问题。
在我的Jenkins中,我已经设置了LDAP身份验证,并且在我的一个作业中需要密码才能使用该密码远程登录到其他服务器并在那里执行某些任务
假设远程任务是通过ant任务中的sshexec执行的,该任务需要用户名密码。我不希望用户以构建参数的形式再次输入密码,有没有办法在构建作业中获取用于Jenkins身份验证的密码?
答案 0 :(得分:3)
[我]有办法在构建作业中获取用于Jenkins身份验证的密码吗?
不是这样的。登录后Jenkins不保留密码,它只是将其传递给LDAP服务器足够长的时间来验证您是否应该进行身份验证。
所以你需要的是定义Jenkins中持久化的 Credentials ,它们可以在构建期间使用。您可以使用Credentials Binding plugin设置作业可以访问的固定用户名/密码。
如果您的要求是 的凭据可用于任何作业构建,而是手动启动构建的用户必须提供它们(意味着已安排或以其他方式触发构建是不可能的),我认为从版本1.1开始也支持这一点。定义作业的凭证类型参数,以通过绑定中的变量扩展来使用。然后让用户在其用户配置页面(/me/configure
)中定义这些凭据。然后,当选择使用参数构建时,他们应该看到自己的个人凭据并能够选择它们。用户需要作业上的 Credentials / UseOwn 权限。
未来的另一个选择是用户名/密码凭证的子类型,它根本不存储密码(可能只是一个“盐渍”散列,使用jBCrypt),并以某种方式提示您在凭证之前输入密码被认为是有效的,可能在几分钟后到期。此模式尚未实施,但对于具有更严格安全要求的站点非常有用。
(常规凭据以加密方式存储,但默认的安全存储机制将主加密密钥保留在$JENKINS_HOME
- 只要您不允许shell访问您的服务器给任何不是Jenkins的人管理员,当然,只要你将主计算机配置为零执行程序,这样人们就无法在它上运行构建,只能在从服务器上运行。另一个RFE将是一种备用存储机制,允许通过其他方式注入主密钥。 )
答案 1 :(得分:0)
最好的方法是允许远程服务器中的jenkins用户权限。