Jenkins 的权限设置主要通过 内置的“矩阵授权策略” 或 基于角色的插件(Role-Based Strategy) 来实现。下面按常见场景给你详细说明。
一、使用 Jenkins 内置权限(适合简单场景)
1️⃣ 开启安全配置
- 登录 Jenkins
- 进入:
Manage Jenkins → Security → Configure Global Security
- 勾选 Enable security
2️⃣ 选择授权策略
在 Authorization 中选择:
✅ 推荐:Matrix-based security(矩阵授权)
适合用户不多、权限不复杂的场景。
- 可以针对 用户 / 组 设置权限
- 权限包括:
- Overall(全局)
- Job(任务)
- View(视图)
- Credentials(凭据)
示例:
| 权限 |
admin |
dev |
test |
| Overall/Administer |
✅ |
❌ |
❌ |
| Job/Build |
✅ |
✅ |
✅ |
| Job/Configure |
✅ |
✅ |
❌ |
| Credential/View |
✅ |
❌ |
❌ |
二、使用 Role-Based Authorization Strategy(推荐 ✅)
企业/团队环境强烈推荐
1️⃣ 安装插件
- Manage Jenkins → Plugins
- 搜索并安装:
Role-based Authorization Strategy
2️⃣ 启用该策略
- Configure Global Security
- Authorization 选择:
✅ Role-Based Strategy
3️⃣ 配置角色(核心)
进入:
Manage Jenkins → Manage and Assign Roles
① Manage Roles(定义角色)
| 角色类型 |
说明 |
| Global roles |
全局权限(如 admin、user) |
| Project roles |
针对 Job(支持正则匹配) |
| Slave roles |
Agent 节点权限 |
示例:
admin:全部权限
dev:Job Build / Configure
readonly:只能查看
✅ Project roles 支持正则:
projectA-.*
projectB-.*
② Assign Roles(分配角色)
- 将 用户 / LDAP组 / GitHub组 绑定角色
- 一个用户可以拥有多个角色
示例:
| 用户 |
角色 |
| admin |
admin |
| zhangsan |
dev |
| testuser |
readonly |
三、常见权限示例
✅ 只允许某些人构建 Job
- 给 Job 所在项目角色:
- Job/Build ✅
- Job/Configure ❌
✅ 不同项目组隔离
- 项目 A:
projectA-.*
- 项目 B:
projectB-.*
- 不同用户分配不同 Project Role
四、与用户来源结合
Jenkins 支持多种用户源:
- Jenkins 自带用户数据库(简单)
- LDAP
- GitHub OAuth
- GitLab OAuth
使用 LDAP / OAuth 时,角色通常绑定 group 名
五、常见问题
❓ 设置后没生效?
- 确认 Authorization 已切换
- 用户是否真的被分配到角色
- 是否使用了正则但 Job 名不匹配
❓ 管理员被锁死?
- 停止 Jenkins
- 编辑:
$JENKINS_HOME/config.xml
- 修改:
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
- 重启 Jenkins
六、推荐组合(最佳实践 ✅)
✅ Role-Based Strategy + Project Roles + 正则匹配
适合:
- 多项目组
- 多环境(dev/test/prod)
- 企业级 Jenkins
如果你愿意,可以告诉我:
- Jenkins 版本
- 是否使用 LDAP / GitHub / GitLab
- 是单项目还是多团队
我可以帮你设计一套 具体的权限方案。