Jenkins 权限设置实操指南
一 前置准备
- 进入路径:Manage Jenkins → Configure Global Security,勾选 Enable security 开启安全。
- 选择 Security Realm(身份认证):
- Jenkins’ own user database:使用内置用户库,可勾选 Allow users to sign up 开启注册。
- LDAP:对接企业目录,需在“LDAP Server”等项中配置服务器、用户搜索基准等。
- 建议同时准备启用 HTTPS,避免明文传输凭据。
二 内置授权策略与快速配置
| 策略 |
位置 |
适用场景 |
关键要点 |
| 任何用户可做任何事 |
Configure Global Security → Authorization |
仅本地测试 |
不安全,生产禁用 |
| 登录用户可做任何事 |
Configure Global Security → Authorization |
小型团队快速启用 |
可勾选 Allow anonymous read access 开放匿名只读 |
| 安全矩阵 Global Matrix |
Configure Global Security → Authorization |
需要细粒度到全局资源的团队 |
在表格里为用户/组勾选 Overall/Job/View/… 权限 |
| 项目矩阵 Project Matrix |
Configure Global Security → Authorization |
需要按项目设置权限的团队 |
与 Global 矩阵类似,但可在每个 Job 配置页 → 项目安全 中再次细化 |
| 遗留模式 Legacy |
Configure Global Security → Authorization |
兼容极老版本 |
不推荐 |
- 快速示例(内置矩阵)
- 选择 Matrix-based security;在 User/group to add 输入 admin 并添加;为 admin 勾选全部权限。
- 如需开放匿名只读,给 anonymous 勾选 Overall/Read。
- 保存后右上角出现 Sign up,注册 admin 并自动登录。
- 其他用户注册后,回到矩阵为相应用户/组勾选所需权限(遵循最小权限原则)。
三 使用 Role-based Authorization Strategy 插件(推荐)
- 安装:进入 Manage Jenkins → Manage Plugins,搜索并安装 Role-based Authorization Strategy。
- 配置路径:Manage Jenkins → Manage and Assign Roles,包含 Manage Roles / Assign Roles / Role Strategy Macros。
- 角色设计建议:
- Global roles(全局角色):如 admin(全权)、read-only(仅 Overall/Read)。
- Project roles(项目角色):按项目命名空间分配,使用 Pattern 正则 匹配项目名,例如:
- 角色 dev 匹配 dev-.|feature/.;
- 角色 test 匹配 test-.|release/.。
- Slave roles(节点角色):限制/授权对 Agent/节点 的操作。
- 分配示例:在 Assign Roles 中为用户/组分配上述角色,实现“开发只能构建与查看自己项目、测试可部署测试环境、运维可管理节点”的隔离。
四 项目级权限与常见权限要点
- 项目级授权:在 Job → Configure → 项目安全(Project-based Matrix Authorization Strategy) 可为单个项目单独授权,适合跨团队协作时按项目隔离权限。
- 关键权限说明:
- Overall/Administer:最高权限,谨慎授予。
- Overall/Read:基础可见性权限,缺失会导致页面空白或无法导航。
- Job/Read vs Job/Discover:Discover 级别低于 Read;若用户仅有 Discover,访问具体 Job 链接可能被重定向到登录页。
- 常用操作权限:Job/Build、Job/Cancel、Job/Workspace、Job/Configure 等按需勾选。
五 安全加固与故障恢复
- 安全加固
- 禁用或限制 匿名访问;生产环境使用 强口令/口令策略;开启 CSRF 保护;通过反向代理启用 HTTPS;定期升级 Jenkins 与插件。
- 忘记管理员或误配导致无法登录
- 临时方案(修改 JENKINS_HOME/config.xml):在
<authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy"> 内临时加入
<permission>hudson.model.Hudson.Administer:anonymous</permission>(或改用 GlobalMatrix 并给 anonymous 管理员权限),重启后登录恢复,再修正为最小权限并移除匿名管理员权限。
- 定位 JENKINS_HOME:可通过
ps -ef | grep jenkins 查看启动参数中的 -DJENKINS_HOME= 路径。