如何在Jenkins管道项目中屏蔽密码字段?

如何在Jenkins管道项目中屏蔽密码字段?,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,在文件中定义密码属性时: 属性([ 参数([ 密码(名称:“密钥”,说明:“加密密钥”) ]) ]) Jenkins每次执行管道时都会提示用户提供其值: 我希望屏蔽此参数,以便echo${KEY}不会打印用户传递的实际值。但是,在回显时,它会逐字打印提供的值: 属性([ 参数([ 密码(名称:“密钥”,说明:“加密密钥”) ]) ]) 节点{ 阶段(“阶段1”){ #将逐字打印键的实际值 sh“echo${KEY}” } } 另外,掩码密码插件似乎不适用于Jenkins管道,因此使用它不是

文件中定义密码属性时

属性([
参数([
密码(名称:“密钥”,说明:“加密密钥”)
])
])
Jenkins每次执行管道时都会提示用户提供其值:

我希望屏蔽此参数,以便
echo${KEY}
不会打印用户传递的实际值。但是,在回显时,它会逐字打印提供的值:

属性([
参数([
密码(名称:“密钥”,说明:“加密密钥”)
])
])
节点{
阶段(“阶段1”){
#将逐字打印键的实际值
sh“echo${KEY}”
}
}
另外,掩码密码插件似乎不适用于Jenkins管道,因此使用它不是一个选项

有没有办法在生成日志中屏蔽这些密码类型的参数?

您可以使用。使用此插件,您可以创建一个ID为的凭证,以便在管道中使用:

守则如下:

withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
     echo "My password is '${password1}'!"
}
在您的用户案例中:

node {
    stage('Echo') {
        withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
            echo "'${password1}'!"
        }
    }
}
注意:密码将仅在withCredentials块中屏蔽

您将要使用。下面是一个取自的
Jenkinsfile
示例


除了现有的关于使用凭据的
的建议之外,没有什么可补充的。但是,如果您通过模板自动生成作业并设置默认密码,然后,您可能需要使用
hudson.util.Secret
来保护模板。

在我的示例中,如何将
withCredentials
连接到名为
KEY
的密码参数?请您完成回答,并将
KEY
参数连接到
withCredentials
子句?@Behrang the密码将仅在withCredentials块中屏蔽,因此您不能拥有像代码一样的全局参数。你可以在jenkins中有一个“全局参数”,但是每次你想使用这个变量时,你都需要包含withCredentials块。如果可以,请提供一个工作的
Jenkinsfile
:1-提示用户输入关键参数,2-在日志中屏蔽它。谢谢。使用凭证插件,您必须已经创建凭证。这里的问题是屏蔽作为参数接收的密码。它对声明性文件代码有效吗?请你可以分享codeDownvoting,因为屏蔽密码插件只是一个愚蠢的想法。它给人一种虚假的安全感。你可以简单地做
echo${KEY}base64
没有你所说的“愚蠢的想法”。无论您使用的是掩码密码、凭据插件还是withCredentials步骤,它们都会做同样的事情,并遭受虐待者的过滤。唯一真正的解决方案是临时凭证,如在AWS或hashicorp vault中承担角色。任何具有开发访问权限的开发人员都可以使用他们自己的定制maven插件或选择的构建工具进行过滤。如果你不想被视为一个混蛋,你应该谦虚你的措辞。
properties([
    parameters([
        password(name: 'KEY', description: 'Encryption key')
    ])  
])  

node {
    stage('Stage 1') {
       // Will print the masked value of the KEY, replaced with ****
       wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'KEY', password: KEY]], varMaskRegexes: []]) {
            sh "echo ${KEY}"
        }   
    }   
}