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权限设置完成,在工作中需要根据实际情况给相关人员分配对应的权限。 - 用户