Jenkins权限配置详解:从用户创建到角色分配

一、创建用户账户

  1. 进入用户管理界面

    • 登录Jenkins控制台,点击左侧导航栏 Manage Jenkins(系统管理)

    • 选择 Security(安全)→ Manage Users(管理用户)

  2. 创建新用户

    • 点击 Create User(创建用户)

    • 填写以下信息(示例):

      Username: dev_john       # 登录用户名(必填)
      Password: **********      # 登录密码(建议8位以上)
      Confirm password: **********  
      Full name: John Developer # 用户全名(便于识别)
      Email address: [email protected] 
    • 点击 Create 完成用户创建


二、配置全局安全策略

1. 选择授权策略

  • 返回 Manage Jenkins → Security → Configure Global Security

  • 在 Authorization 部分选择策略:

    • Project-based Matrix:直接分配项目权限(适合简单场景)

    • Role-based Strategy:通过角色分配权限(推荐,需安装插件)

2. 安装Role-Based插件

  1. 进入 Manage Plugins(插件管理)

  2. 搜索 Role-based Authorization Strategy

  3. 勾选插件并点击 Install without restart

  4. 安装完成后重启Jenkins生效


三、基于角色的权限配置

1. 创建全局角色

  • 进入 Manage Jenkins → Security → Manage and Assign Roles

  • 点击 Manage Roles,配置全局角色:

    角色名 权限分配建议
    admin 勾选 Overall/Administer(全权限)
    developer 分配以下权限:
    • Overall/Read

    • Job/Build

    • Job/Cancel

    • Run/Update
      viewer | 仅勾选 Overall/Read(只读) |

2. 创建项目角色

  • 在 Project Roles 区域:

    Role Name: yunpan-admin        # 角色名需唯一
    Pattern:   yunpan-.*           # 使用正则匹配项目名(如yunpan-api、yunpan-web)
    • 权限分配:勾选 Job/ConfigureJob/Delete 等管理权限

  • 创建开发角色:

    Role Name: yunpan-developer
    Pattern:   yunpan-.*
    • 勾选 Job/BuildWorkspace/ViewSCM/Tag 等开发相关权限


四、分配角色给用户

  1. 进入角色分配界面

    • Manage and Assign Roles → Assign Roles

  2. 分配全局角色

    • 在 Global roles 区域添加用户:

      用户: dev_john
      分配角色: developer
  3. 分配项目角色

    • 在 Item roles 区域:

      用户: dev_john
      分配角色: yunpan-developer
    • 用户将获得对匹配 yunpan-.* 项目的开发权限


五、权限对照表(开发者示例)

权限分类 需勾选权限项 功能说明
Overall Read 查看Jenkins基础信息
Job Build, Read, Workspace 构建任务、查看日志、访问工作空间
Run Update 更新构建描述或参数
SCM Read 查看代码仓库配置
### 1. Overall(全局权限)
| 权限名称             | 说明                          |
|----------------------|-------------------------------|
| Administer           | 管理员权限,可执行所有操作      |
| Read                 | 基本读取权限,查看 Jenkins 信息 |
| RunScripts           | 运行 Groovy 脚本的权限          |
| UploadPlugins        | 上传插件的权限                 |
| ConfigureUpdateCenter| 配置更新中心的权限             |

### 2. Credentials(凭据权限)
| 权限名称     | 说明                 |
|--------------|----------------------|
| Create       | 创建凭据             |
| Delete       | 删除凭据             |
| ManageDomains| 管理凭据域           |
| Update       | 更新凭据             |
| View         | 查看凭据             |

### 3. Agent(节点权限)
| 权限名称   | 说明                 |
|------------|----------------------|
| Build      | 在特定节点上构建      |
| Configure  | 配置节点             |
| Connect    | 连接到节点           |
| Create     | 创建新节点           |
| Delete     | 删除节点             |
| Disconnect | 断开节点连接         |

### 4. Job(任务权限)
| 权限名称   | 说明                 |
|------------|----------------------|
| Build      | 启动构建             |
| Cancel     | 取消构建             |
| Configure  | 配置任务             |
| Create     | 创建新任务           |
| Delete     | 删除任务             |
| Discover   | 发现任务             |
| Read       | 查看任务             |
| Workspace  | 访问工作空间         |

### 5. Run(构建权限)
| 权限名称   | 说明                 |
|------------|----------------------|
| Delete     | 删除构建记录         |
| Update     | 更新构建信息         |
| Artifacts  | 访问构建产物         |
| Replay     | 重放构建             |

### 6. View(视图权限)
| 权限名称   | 说明                 |
|------------|----------------------|
| Configure  | 配置视图             |
| Create     | 创建新视图           |
| Delete     | 删除视图             |
| Read       | 查看视图             |

### 7. SCM(源码管理权限)
| 权限名称   | 说明                 |
|------------|----------------------|
| Tag        | 创建/删除标签        |
| Configure  | 配置源码管理         |
| Read       | 读取源码             |

六、注意事项

  1. 权限最小化原则:仅分配必要权限,避免过度授权

  2. 正则匹配:项目角色中的Pattern需准确匹配项目命名规则

  3. 测试验证:创建测试账号验证权限是否生效

  4. 备份配置:修改权限前建议备份 JENKINS_HOME 目录


延伸操作

  • 结合LDAP/AD实现企业级账号集成

  • 使用 Matrix Authorization Strategy 实现精细化权限控制

通过以上步骤,可快速搭建安全的Jenkins权限管理体系。建议定期审计权限分配,确保符合团队协作规范。


提示:实际界面选项可能随Jenkins版本变化,本文基于Jenkins 2.4xx版本编写。

你可能感兴趣的:(运维,jenkins,java,运维)