前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins凭证管理(上)

Jenkins凭证管理(上)

原创
作者头像
陈不成i
修改2021-06-03 18:03:56
3.2K1
修改2021-06-03 18:03:56
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

众所周知,在Jenkinsfile或部署脚本中使用明文密码会造成安全隐患。但是为什么还频繁出现明文密码被上传到GitHub上的情况呢?笔者认为有两个主要原因(当然,现实的原因可能更多)∶ 1.程序员或运维人员不知道如何保护密码。 2.管理者没有足够重视,否则会给更多的时间让程序员或运维人员想办法隐藏明文密码。

凭证( cridential )是Jenkins进行受限操作时的凭据。比如使用SSH登录远程机器时,用户名和密码或SSH key就是凭证。而这些凭证不可能以明文写在Jenkinsfile中。Jenkins凭证管理指的就是对这些凭证进行管理。

为了最大限度地提高安全性,在Jenkins master节点上对凭证进行加密存储(通过Jenkins实例ID加密),只有通过它们的凭证ID才能在pipeline中使用,并且限制了将证书从一个Jenkins实例复制到另一个Jenkins实例的能力。

也因为所有的凭证都被存储在Jenkins master上,所以在Jenkins master上最好不要执行任务,以免被pipeline非法读取出来,应该分配到Jenkis agent上执行

二.管理凭证

创建凭证,要先确保当前账号有这个权限,Jenkins首页-》凭据-》系统-》全局凭据-》添加凭据

选项:

  • Kind:选择凭证类型
  • Scope 凭证的作用域
  • Global,全局作用域。凭证用于pipeline,则使用此种作用域
  • System,如果凭证用于Jenkins本身的系统管理,例如电子邮件身份验证、代理连接等等,则使用此种作用域
  • ID 在pipeline使用凭证的唯一标识

Jenkins默认支持以下凭证类型:Secret text、Username with password、Secret file、SSH Username with private key、Certificate:PKCS#12、Docker Host Certificate Authentication credentials。

添加凭证后,安装Credentials Binding Plugin插件。通过其提供的withCredentials步骤就可以在pipeline中使用凭证了。

三.常用凭证

保密文本

是一串需要保密的文本,比如GitLab的API token。添加方法:

代码语言:javascript
复制
withCredentials([[string(credentialsId:'secretText', variable:'varName')]) {    echo "${varName}"}

账号密码

Username with password指用户和密码凭证。

代码语言:javascript
复制
withCredentials([usernamePassword(credentialsId:'gitlab-user', usernameVariable:'username', passwordVariable:'passwd')]) {    echo "${username}, ${password}"}

保密文件

Secret file指需要保密的文本文件。使用Secret file时,Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中。构建结束后,所复制的secret file会被删除

代码语言:javascript
复制
withCredentials([file(credentialsId:'ansible-pass', variable:'vault')]){    sh "ansible -i hosts playbook.yml --vault-password-file=${vault}"}

账号秘钥

ssh Usermame with private key指一对ssh用户名和秘钥

在使用此类凭证时,Jenkins会将ssh key复制到一个临时目录中,再将文件路径设置到一个变量中

代码语言:javascript
复制
withCredentials([sshUserPrivatekey(KeyFileVariable:"key",credentialsId:"private-key")]){    echo "${key}"}

sshUserPrivateKey函数还支持以下参数

  • usernameVariable:ssh用户名的变量名
  • passphraseVariable ssh key密码的变量名

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.管理凭证
  • 三.常用凭证
    • 保密文本
      • 账号密码
        • 保密文件
          • 账号秘钥
          相关产品与服务
          访问管理
          访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档