首页 > 其他分享 >Jenkins实践指南-08-Jenkins 凭证管理

Jenkins实践指南-08-Jenkins 凭证管理

时间:2022-12-21 00:11:20浏览次数:63  
标签:pipeline 凭证 08 如下 Surpassme 所示 Jenkins

4. Jenkins 凭证管理

    [作者:Surpassme]随着网络环境的变化,如果在Jenkins中使用明文密码会造成一些安全隐患。为此Jenkins也提供凭证管理功能,本章节来系统学习一下。

4.1 凭证定义

    [作者:Surpassme]凭证(Credentials)是Jenkins在进行一些受限操作时的钥匙。例如SSH登录时的密码、Gitlab相关账户信息等,这些重要信息是不能以明文形式配置在Jenkins中,因此需要对这些凭证进行统一管理和使用。

    为了最大限度的提高安全性,在Jenkins master节点上对凭证进行加密存储,然后通过凭证ID在pipeline中使用。

4.2 创建凭证

    [作者:Surpassme]因为Jenkins本身也有一定的权限控制,因此在创建凭证时,请确保使用的账户具有创建凭证的权限。其创建凭证的操作步骤如下所示:

  • 1.Manage Jenkins -> Manage Credentials ,如下所示:

  • 2.Credentials -> System -> Global credentials(unrestricted) -> Add credentials,如下所示

    1. 进入创建凭证后的界面如下所示:

    其主要参数如下所示:

  • 类型:创建凭证的类型

  • 范围:凭证的作用域,主要有两种
    Global: 全局作用域。若要在pipeline中使用,则使用该类型作用域
    System: 如果凭证用于Jenkins本身系统管理,则使用该类型作用域

  • ID:使用该凭证的唯一标识,如果创建时,不填写则由Jenkins自动生成。

  • 描述: 对该凭证的声明式描述,建议填写,方便区分和查找凭证

原文地址:作者:Surpassme:https://www.cnblogs.com/surpassme/p/16995400.html

4.3 常用凭证

    [作者:Surpassme]在pipeline中使用凭证时,需要检查插件Credentials Binding Plugin(https://plugins.jenkins.io/credentials-binding/)是否安装。

4.3.1 Username with password

    Username with password 是比较常用的凭证,是指用户和密码凭证,添加方法如下所示:

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    stages{
        stage("credential demo"){
            steps{
                withCredentials([
                    usernamePassword(
                        credentialsId:"surpass-123",
                        usernameVariable:"username",
                        passwordVariable:"passwd"
                        )
                    ]){
                        echo "username is ${username} \n password is ${passwd}"
                    }
            }
        }
    }
}

4.3.2 Secret file

    [作者:Surpassme]Secret file 是指需要保密的文件,添加方法如下所示:

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    stages{
        stage("credential demo"){
            steps{
                withCredentials([
                    file(credentialsId:"secret-file-123",variable:"secretContent")]){
                        echo "secret contetn is: ${secretContent}"
                    }
            }
        }
    }
}

4.3.3 Secret text

    [作者:Surpassme]Secret text 是一串需要加密的文件,例如各种token信息等,添加方法如下所示:

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    stages{
        stage("credential demo"){
            steps{
                withCredentials([
                    string(credentialsId:"secret-text-123",variable:"secretText")]){
                        echo "secret text is: ${secretText}"
                    }
            }
        }
    }
}

4.3.4 SSH Username with private key

    [作者:Surpassme]SSH Username with private key是指一对SSH用户名和密钥,添加方法如下所示:

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    stages{
        stage("credential demo"){
            steps{
                withCredentials([
                    sshUserPrivateKey(
                        credentialsId:"ssh-username-key-123",
                        usernameVariable:"username",
                        keyFileVariable:"keyFile"
                        )
                    ]){
                          echo "username is ${username}\nkey is: ${keyFile}"
                    }
            }
        }
    }
}

4.4 凭证使用扩展

    [作者:Surpassme]看到前面每次使用凭证比较麻烦,为此Jenkins也提供另外一种扩展方法来使用凭证,使用credentials hepler(仅允许在environment中使用)来简化凭证使用。而credentials hepler也仅支持Secret text、Username with password和Secret file三种凭证

4.4.1 Username with password

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    environment{
        GET_USERNAME_PASSWD=credentials("surpass-123")
    }
    stages{
        stage("credential demo"){
            steps{
               echo "username is ${GET_USERNAME_PASSWD_USR}\npassword is ${GET_USERNAME_PASSWD_PSW}"
            }
        }
    }
}

GET_USERNAME_PASSWD_USR的值是一个字符串,其格式为:<用户名>:<密码>

4.4.2 Secret file

    在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    environment{
        SECRET_FILE=credentials("secret-file-123")
    }
    stages{
        stage("credential demo"){
            steps{
               echo "secret file is ${SECRET_FILE}"
            }
        }
    }
}

4.4.3 Secret text

    [作者:Surpassme]在pipeline中的使用示例如下所示:

pipeline{
    agent any
    options{
        timestamps()
    }
    environment{
        SECRET_TEXT=credentials("secret-text-123")
    }
    stages{
        stage("credential demo"){
            steps{
               echo "secret text is ${SECRET_TEXT}"
            }
        }
    }
}

原文地址:https://www.jianshu.com/p/e99708a14aa0

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

标签:pipeline,凭证,08,如下,Surpassme,所示,Jenkins
From: https://www.cnblogs.com/surpassme/p/16995400.html

相关文章

  • 不背锅运维:云原生下的CICD-3件套快速搭建合集:jenkins+harbor+gitlab
    使用docker容器启动jenkinsdocker run -d -u root --name jenkins-ser01 --restart=always -p 80:8080 -p 50000:50000 -v /data:/var/jenkins_home -v ......
  • jenkins add node
    newnode......
  • jenkins脚本
    1.统计代码pipeline{agentanyparameters{choice(description:'你需要选择当前哪个分支进行统计?',name:'branchNow',......
  • 第08期:有关 MySQL 字符集的注意事项
    本文关键字:字符集、建库建表一、数据库和字符集1、建库时指定创建数据库时,显式指定字符集和排序规则,同时,当切换到当前数据库后,参数character_set_database,collation_databa......
  • 故障分析 | ClickHouse 物化视图插入时间变为“1970-01-01 08:00:00”问题复盘
    作者:大睿大睿,DBA,爱好减肥,瘦了30多斤,负责公司数据库集群的管理和维护。物化视图使用​​to​​的方式写入到存储表中,即如下:CREATEMATERIALIZEDVIEW[IFNOTEXISTS][db.]tab......
  • 第08问:我有表,你有数据么?
    问题:我已经有表结构,想造一些实验数据。除了用存储过程和自己写程序,还有什么快速的方法?实验:我们先建一个库,创建一张表,让表的列多一些,下载好我们需要的工具,现在我们就可以来......
  • 数据传输 | DTLE 3.20.08.0 来啦!
    开源数据传输组件DTLE3.20.08.0已于今日发布。#一、DTLE项目介绍爱可生开源社区的DTLE,自开源起一直定位于一款针对MySQL使用特点、支持多种使用场景的数据传输组件,......
  • Microsoft SQL Server 2008 R2 安装程序出错实例
    出现以下错误:''isnotavalidloginoryoudonothavepermission. 2-报错原因装这么多数据库,第一次遇到这种问题,于是开始上网查,报错原因是这样的:设置的电脑名......
  • JENKINS突然访问不了网页
    今天上午,JENKINS网站远程突然访问不了,只能本地使用,最后确定是防火墙的事。在JENKINS服务器上要将所有防火墙关闭:局域网和外网的,其它机器才能打开JENKINS网页。 IT工程......
  • Python__08--运算符
    1常用运算符1.1算数运算符加(+)、减(-)、乘(*)、除(/)、整除(//)取余(%)测试代码:print(-9//-4)print(9//4)print(9//-4)print(-9//4)#一正一负向下取整......