Jenkins用户授权管理
我们来详细介绍一下 Jenkins 的权限管理系统。这是一个非常核心的功能,用于控制不同用户或团队在 Jenkins 中能做什么和不能做什么。
一、权限介绍
Jenkins 的权限管理主要分为两个部分:认证(Authentication) 和 授权(Authorization)。
- 认证:解决"你是谁?"的问题,即用户登录验证身份。
 - 授权:解决"你能做什么?"的问题,即验证通过后,你拥有哪些操作的权限。
 
Jenkins系统中授权插件应用最广的是Role-based Authorization Strategy, 这是最强大、最灵活、也最常用的策略。它允许你创建不同的角色,并为角色分配精细的权限,然后将角色分配给用户或用户组。
权限的粒度(Permissions)
在"基于角色的策略"中,你可以分配非常精细的权限。主要分为以下几大类:
Overall(全局): Jenkins 系统本身的权限。
Administer:最高权限,可以管理整个 Jenkins。Read:读取系统的基本信息。
Credentials(凭据): 管理敏感信息(如密码、SSH密钥、API Token)的权限。
Create,Delete,ManageDomains,Update,View。
Agent(代理节点): 管理 Jenkins 代理节点(从节点)的权限。
Configure,Create,Delete,Disconnect,Connect。
Job(任务): 最常用的权限类别,控制对构建任务的操作。
Create:创建新任务。Delete:删除任务。Configure:修改任务的配置。Read:查看任务页面、构建历史和日志。Build:触发一次构建。Cancel:取消一个正在进行的构建。Move:移动任务(如从文件夹A到文件夹B)。Discover:只能看到任务的名字(如果没Read权限,无法进入任务页面)。
Run(构建): 控制对每次构建结果的操作。
Delete:删除某次构建的历史记录。Update:更新构建信息(如描述)。Replay:使用相同的参数重新运行构建。
View(视图): 控制视图(用于筛选和分类任务)的管理。
Create,Configure,Delete,Read。
SCM(源代码管理): 触发由 SCM 更改引起的构建(如 Git 的 Webhook)。
jenkins权限矩阵 通过"角色→权限→用户"的三级管理:每个用户只绑定1-2个角色,每个角色仅包含必要权限,操作记录可精确到人。

二、设置权限
1.安装插件:系统管理--->插件管理


2.安装完成后,返回"系统管理"→进入"全局安全配置",在"授权策略"中选择"Role-Based Strategy"

保存返回主界面之后在系统管理---->Manage and Assign Roles

三、最佳实践和配置示例
假设我们有一个团队,结构如下:
- 管理员 :
admin- 拥有所有权限。 - 开发团队A :用户 
dev-a1,dev-a2,他们只能管理以team-a-开头的任务。 - 开发团队B :用户 
dev-b1,dev-b2,他们只能管理以team-b-开头的任务。 - 运维团队 :用户 
ops,可以管理所有任务(查看、配置)和节点,但不能修改系统设置。 
创建用户



用户创建照此进行,或者开启允许注册用户:系统管理---->全局安全配置



配置步骤:
管理角色 :进入 "系统管理" > "Manage and Assign Roles"。
- 
a. 管理角色
全局角色:
admin-role:分配Overall/Administer。read-only-role:分配Overall/Read。

ops-role:分配Overall/Read,Agent/...,Job/Read,Job/Configure(不包含Create和Delete)。

项目角色:
- 
team-a-dev:Pattern填写team-a-.*,分配Job/Build,Job/Read,Job/Configure,Job/Cancel等。

 - 
team-b-dev:Pattern填写team-b-.*,权限同team-a-dev。

 
 - 
b. 分配角色
- 
全局角色分配:
- 
用户
admin-> 分配admin-role。 - 
用户
ops-> 分配ops-role和read-only-role。


 - 
所有已登录用户(
authenticated)-> 分配read-only-role(保证登录后至少能看到一些东西)。


 
 - 
 
 - 
 

- 
项目角色分配:
- 用户 
dev-a1,dev-a2-> 分配team-a-dev。



 - 用户 
dev-b1,dev-b2-> 分配team-b-dev。

 
测试
新建两个项目一个为team-a*开头的与team-b开头的项目测试dev-a1与dev-b1用户

首选登陆jack用户查看是否只有对全局拥有只读权限

登陆dev-a1用户查看

登陆dev-b1用户查看

登陆运维的ops用户查看

到此jenkins权限设置完成,在工作中需要根据实际情况给相关人员分配对应的权限。
 - 用户