【问题标题】:Mask Password Plugin is still displaying password in console output掩码密码插件仍在控制台输出中显示密码
【发布时间】:2018-08-14 06:53:27
【问题描述】:

我们需要从管道作业中屏蔽密码,我们使用了屏蔽密码 2.10.1、凭据和凭据绑定插件。但我们仍然看到密码在作业控制台输出中暴露。

代码:

node {
{
    withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'c6989249-6a8d-4618-9fd7-012720791e12', usernameVariable: 'artifact_id', passwordVariable: 'artifact_pwd']]){
                echo "password masking"
                sh "echo $artifact_id $artifact_pwd "
}}

输出:

[Pipeline] {
[Pipeline] withCredentials
[Pipeline] {
[Pipeline] echo
password masking
[Pipeline] sh
[workspace] Running shell script
+ echo **** 'Test!123'
**** Test!123
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

请帮忙解决这个问题

【问题讨论】:

  • 您使用的是什么版本的 Jenkins 和插件?他们在积压的文件中有很多关于屏蔽密码的提及。这些都在慢慢修复。
  • Jenkins 是 2.89.3,插件是 Mask Password 2.10,凭据插件 2.1.16,凭据绑定插件 1.15
  • 顺便说一句,您检查了吗:stackoverflow.com/questions/51834768/…?
  • 有点奇怪,$​​artifact_id 被屏蔽了,但 $artifact_pwd 没有屏蔽。如果 jenkins 或插件有问题,两者都应该被屏蔽或取消屏蔽。请仔细检查您在整个管道脚本的某处将 artifact_pwd 定义为 Groovy 变量。或者把sh 'echo $artifact_id $artifact_pwd'上的"改成'看看会输出什么,

标签: jenkins passwords jenkins-pipeline credentials masking


【解决方案1】:

在管道运行期间,应该在整个管道脚本中定义/创建一个 Groovy 变量 artifact_pwd

另外,您使用" 将字符串包装成一行:sh "echo $artifact_id $artifact_pwd ",这将导致Groovy 首先进行变量替换,因此$artifact_pwd 将被替换为同名Groovy 变量的值。

如果您不希望对字符串进行变量替换,您可以使用'''' 来包装字符串,如下所示:

sh 'echo $artifact_id $artifact_pwd' 
//or 
sh '''echo $artifact_id $artifact_pwd'''

您可以将sh "echo $artifact_id $artifact_pwd" 替换为sh 'echo $artifact_id $artifact_pwd',然后再次运行,看看会输出什么。

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 2021-04-04
    • 2012-05-22
    • 2014-12-28
    • 2019-09-14
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多