DevOps / Jenkins

如何在Jenkins任务中安全地隐藏密码?

浅时光博客 · 8月2日 · 2021年 52554次已读

一、场景描述

在使用Jenkins进行构建、部署和SSH远程到服务器执行一些文章来源(Source):浅时光博客命令等操作时,通常都需要输入敏感信息,例如密码。而默认情况下,Jenkins会将这些信息以明文的形式展示在前端UI和控制台日志输出中,这可能会导致安全风险。因此,我们需要采取一些方法来隐藏这些敏感信息。

一种可行的方法是使用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/
文章来源(Source):浅时光博客

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,如下图所示,控制台输出的日志中展示的密码被隐藏了,这就达到了我们所要的效果了。

本文作者:浅时光博客
原文链接:https://www.dqzboy.com/7423.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站提供的内容仅限于个人学习和研究使用;禁止将内容用于商业或非法用途。下载后请在24小时内彻底删除,否则后果由用户承担。访问和下载本站内容即表示您已同意上述条款 。

1 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. Steve2021-8-2 · 16:15

    好久没过来了,过来学习下,支持博主