Jenkins篇:Jenkins 基于项目角色的权限控制
01 前言
最近,由于Jenkins使用频率逐渐升高,一进入Jenkins首页构建任务密密麻麻一堆,且目前开发、测试未明确权限划分,使用时会存在以下困惑:
jenkins自身的权限管理,无法实现用户指定显示视图或者视图中指定的jobs,之前分配的jenkins帐号是拥有所有权限的,因为担心故意或者误删job的情况, 我们使用jenkins自身的权限控制,而实现的效果用户只能构建,不能查看修改配置和删除job。虽然避免了故意或者失误删除job的情况,但是有时候开发需要修改配置,比如说更改构建的分支,或者想查看构建的参数,这时候就需要向测试要回账号,对于开发来说,比较麻烦。
基于此问题以下将记录如何基于项目角色(开发、测试、项目管理)的Jenkins权限控制方案。
02 解决办法
第一步:安装角色策略插件
为jenkins安装角色策略插件,通过配置角色策略可以解决上面问题。插件名称:role-strategy.hpi
每个项目分配两个账号:
一个账号可以查看并修改job配置,修改配置,可新建job –(对应开发)
另外一个账号只有构建权限,无法修改 job配置 –(对应测试)
不同项目组账号登录之后,jenkins视图只显示自己项目组的job。
第二步:准备项目测试账号
规划两个项目组,如内部工单系统、账户管理系统,分别以BPS、AMS简称。
每个项目组设置两个账号,如:BPS_DEV 代表BPS开发人员账号、BPS_SIT 代表BPS测试人员账号
账户管理系统也按如下设置:AMS_DEV 代表AMS开发人员账号、AMS_SIT 代表AMS测试人员账号

第三步:启用角色控制权限
管理Jenkins——Configure Global Security,勾选以下两项:

第四步:创建角色
管理Jenkins——Manage and Assign Roles——Manage Roles,见下面两张图片

创建一个全局角色
这里简单说明以下,全局角色和项目角色的区别
全局角色即拥有Jenkins全部访问权限
项目角色即拥有指定项目的访问权限。
这里先创建一个全局角色:zhouyou ,这里勾选Overall的read权限

创建项目角色
分别创建两个项目的角色,按照规划的分配权限,Pattern用于给项目匹配 job,使用正则表达式
正则表达式
这里的正则表达式和脚本里的正则表达式有点不太一样,简单介绍一下规则
AMS.* 表示所有以AMS开头的项目
(?!)AMS. * 表示所有以AMS-开头的项目,并且不区分大小写
AMS|BPS.* 表示所有以AMS或BPS开头的项目
创建项目的角色及权限划分如下:

第五步:给用户分配角色
系统管理——Manage and Assign Roles——Assign Roles

第六步:创建视图
以账户管理系统AMS为例


依葫芦画瓢,创建BPS系统的视图,这里补在重复。
第七步:创建构建任务
用有创建job的账号创建4个构建任务(仅仅是做演示)
比如:AMS_SIT、AMS_UAT、BPS_SIT、BPS_UAT

03 切换账号验证
任务创建好了,再次我们分别以AMS_DEV 、AMS_SIT两个账号登录验证视图和权限的配置情况。
先看AMS_DEV账号
可以看出,该账号只能浏览AMS视图下的构建任务,且无构建权限

再看看AMS_SIT账号
可以看出,该账号只能浏览AMS视图下的构建任务,且有构建权限

至此,基于项目角色的权限控制就已设置好了,各团队可依据此进行配置与改造。