一、场景描述
在使用Jenkins进行构建、部署和SSH远程到服务器执行一些
一种可行的方法是使用Jenkins提供的Credentials Binding插件。该插件可以在运行时从Jenkins Credential Store中获取凭据,并将其注入到作业或流水线中。通过这种方式,敏感数据不会被暴露在前端UI和控制台日志输出中,提高了服务访问的安全性。
同时,还有一些其他的最佳实践可以帮助保护敏感信息,例如:将敏感信息存储在Jenkins Credential Store中,以确保安全存储和管理;使用加密通信协议(例如SSL/TLS)来保证数据传输的安全性;定期更改敏感信息(例如密码)以防止泄露等。
二、UI界面隐藏
对Jenkins构建Job任务的UI界面上隐藏一些关键性的参数,例如:密码,在Jenkins的参数化构建中默认有个密码参数,这个参数可以对UI中输入的内容进行隐藏,设置如下:
三、控制台隐藏
- 上面的方式只可以隐藏Job UI上的一些参数,但是无法隐藏控制台日志中输出的一些关键信息,这个时候我们就需要使用到插件
Mask Passwords
- 插件介绍:https://plugins.jenkins.io/mask-passwords/
1、启用Mask Password
2、Job任务中选择密码参数
3、Pipeline中实现方法
#!groovy
@Library('jenkinslib') _
def tool = new org.devops.tool()
pipeline {
agent {
any
}
stages {
stage('Checkout') {
steps {
script {
tool.PrintMes("========Check Out========",'green')
}
}
}
stage('TEST Passwd') {
steps{
script {
tool.PrintMes("========TEST Passwd========",'green')
}
//控制台日志中将打印Passwd参数的值替换为****;注意Passwd是与上面参数化构建中我们选择密码参数时定义的Name名称保持一致
wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'Passwd', password: Passwd]], varMaskRegexes: []]) {
sh '''
echo ${Passwd}
'''
}
}
}
}
post {
success {
script {
tool.PrintMes("========流水线执行成功========",'green')
}
}
failure {
script {
tool.PrintMes("========流水线执行失败========",'red')
}
}
}
}
- 执行任务查看效果
文章来源(Source):https://www.dqzboy.com ,如下图所示,控制台输出的日志中展示的密码被隐藏了,这就达到了我们所要的效果了。
好久没过来了,过来学习下,支持博主