身份与凭据插件的权限边界

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

本篇聚焦 Matrix Authorization Strategy 与 Credentials Binding。SSO 插件的具体选择取决于企业身份提供方,但无论使用 OIDC 还是 SAML,都要先验证组映射和紧急管理入口,再切换生产身份域。完整角色设计与绑定示例见用户、权限和凭据。

1. Matrix Authorization:理解继承和可配置权#

Matrix Authorization 可以在全局、项目和 Agent 级别授予权限。项目授权默认可能继承全局与父 Folder 的权限;给某人 Job/Configure 或 Agent/Configure 后,还要检查他能否借配置权扩大该对象上的能力。插件说明

身份 应验证的边界
普通开发者 只读/构建自己的测试 Folder,不能配置发布 Job 或生产 Agent
发布审批人 能看到待审批任务并按策略批准,不能修改发布脚本或凭据
平台管理员 管理全局权限、插件和恢复入口;人数与操作审计受控

在预生产用各组的真实测试账号逐项验证:能否读其他 Folder、配置发布 Job、Replay、使用 Script Console、修改 Agent、访问凭据。修改父 Folder 后再跑一次,因为继承变化可能影响所有子项。不要只看权限矩阵截图;测试实际 HTTP/UI 与构建行为。

现有初始化 JCasC 样本只给 bootstrap 管理员授权。接入企业身份后,可在隔离实例用下面的片段替换 authorizationStrategy;组名必须是身份提供方实际返回的稳定组名,不能照抄示例。这里故意只给开发组全局读取,Folder 中的构建权由受控配置单独授予;不要在全局给 Job/Configure。

jenkins:
  authorizationStrategy:
    globalMatrix:
      entries:
        - group:
            name: platform-admins
            permissions:
              - Overall/Administer
        - group:
            name: developers
            permissions:
              - Overall/Read
        - group:
            name: release-managers
            permissions:
              - Overall/Read

重新加载前保留已验证的管理员会话及应急恢复入口;用三个测试账号实际登录。随后在测试 Folder 授 developers 的 Job/Read、Job/Build,在发布 Folder 只授需要的读取与审批路径。若使用项目矩阵,核对父 Folder 权限继承;Job/Configure 用户可以改变 Job 行为,不能把它当普通编辑权。Matrix Authorization 插件说明

2. Credentials Binding:绑定范围不等于安全边界#

Credentials Binding 的 withCredentials 在步骤执行期间把秘密提供给环境变量或临时文件。绑定范围应尽量短,并限定在可信 Job 与专用 Agent;日志遮罩只防意外显示,恶意脚本仍可编码或向外发送秘密。插件说明

可信发布 Job 中仅在调用外部服务的步骤绑定凭据,示例中的 shell 使用单引号避免 Groovy 先插值,关闭命令回显,且不把变量传给整个流水线:

withCredentials([string(credentialsId: 'staging-api-token', variable: 'API_TOKEN')]) {
  sh '''#!/usr/bin/env bash
set -euo pipefail
set +x
printf 'header = "Authorization: Bearer %s"\n' "$API_TOKEN" |
  curl --config - --fail --silent --show-error https://api.staging.example.com/healthz
'''
}

审查一个使用凭据的 Job 时,沿着以下路径追踪:谁能修改 Jenkinsfile/共享库/Job 配置 → Job 能读取哪个 Folder 的凭据 → 实际落在哪台 Agent → Agent 能访问哪些网络和云身份。只要其中一段由不可信提交者控制,就不能把生产秘密绑定给该 Job。凭据文件绑定也要检查临时文件的位置与 workspace 可见性;不要把秘密文件归档为构建制品。

验收:普通 PR 修改 Jenkinsfile 试图调用生产凭据 ID,应在权限或任务隔离处失败;运行成功的受信 Job 日志、制品和工作目录不能留下明文秘密。轮换测试凭据后,新值生效且旧值在签发方失效。已有 Agent 云会话须另行撤销;撤销 Jenkins 登录令牌不会自动终止它。

3. 选择和升级时的停止点#

授权插件切换、SSO 插件切换和凭据存储迁移都可能锁死管理员或让旧权限意外继承。先在隔离恢复副本用真实组声明与测试凭据演练,保留已验证的应急管理通道;没有完成拒绝测试时不要把候选配置晋级生产。插件版本与 JCasC 字段按插件生命周期一起验证。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭