首页/开发/CI/CD 与发布速查/Jenkins 凭据管理
工具链要点63 条

Jenkins 凭据管理

集中管理凭据:用户名密码、SSH 私钥、Secret 文本与文件;流水线通过 credentials() 或 withCredentials 绑定使用。

CI/CD 与发布速查开发更新于 2026-10-13

凭据管理是什么

Jenkins 集中托管凭据:用户名密码、SSH 私钥、Secret 文本与文件(如 kubeconfig、证书)。流水线通过 environment 的 credentials() 或 withCredentials 绑定使用,日志对凭据值自动打码。凭据按作用域分系统级与文件夹级,多人共用实例时按团队文件夹隔离,避免全局暴露。

基本信息

类型usernamePassword、sshPrivateKey、secret text、secret file
绑定credentials('id') 或 withCredentials 代码块
作用域系统级(全局)与文件夹级
掩码日志自动打码,但不等于绝对安全
存储凭据存于 Jenkins 主目录,由实例密钥加密保护

典型使用场景

  • 镜像仓库登录:withCredentials 注入用户名密码
  • SSH 部署:私钥类凭据供远程发布使用
  • API 调用:token 以 Secret 文本管理
  • 文件类凭据:kubeconfig、证书以 Secret 文件绑定为临时路径
  • 团队隔离:文件夹级凭据只对文件夹内作业可见
  • 轮换:改动前先盘点引用点,确认影响面再替换

注册表登录

注册表登录
steps {
  withCredentials([usernamePassword(credentialsId: 'registry',
                   usernameVariable: 'REG_USER', passwordVariable: 'REG_PASS')]) {
    sh 'docker login -u "$REG_USER" -p "$REG_PASS" registry.example.com'   # 仅块内可见
  }
}
# 文件类凭据:withCredentials([file(credentialsId: 'kubeconfig', variable: 'KCFG')])

类型选择读法

类型适用注意
usernamePassword仓库、系统登录密码随凭据集中轮换
sshPrivateKey远程部署私钥不进流水线文本
secret texttoken、密钥串避免拼接后回显
secret filekubeconfig、证书绑定为临时文件路径
文件夹级多团队隔离权限跟随文件夹
凭据掩码不是绝对防护:避免回显与产出包含凭据的文件,按最小范围授权。
string 与 file 的差别:file 会落成临时文件、随用随清,适合 kubeconfig 这类整文件场景。
文件夹级凭据跟随文件夹权限:多人共用实例时按团队隔离,别把所有凭据都放系统级。

使用建议

  • 多环境凭据:预发与生产使用不同凭据 id,避免串环境
  • 创建先入库:先把值存进 Jenkins 再在流水线引用 id,值不落在配置文本里
  • 定期盘点:闲置凭据吊销、引用清单复核,持续收窄暴露面

易错点

  • 凭据 id 硬编码散落:轮换与迁移成本高
  • 作用域用错(系统级/文件夹级):流水线取不到值且报错含糊
  • 掩码有盲区:base64 或拼接后的值可能绕过打码,避免回显派生内容
  • 轮换后旧引用未盘点:吊销了仍在用的凭据导致流水线中断,先查引用再操作
  • 把凭据写进脚本文件提交仓库:凭据必须托管在 Jenkins,仓库里只留 id 引用
  • 同名凭据多份并存:不清楚哪份在用,删除前先检索引用并统一命名规则

数据来源与参考

  • Jenkins 手册《Using credentials》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌