jenkins for AppJenkins 中文社区Jenkins/Gitlab/Sonarqube等

Jenkins篇:Jenkins 基于项目角色的权限控制

2019-11-12  本文已影响0人  walker86

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为例

创建视图1 创建视图2

依葫芦画瓢,创建BPS系统的视图,这里补在重复。

第七步:创建构建任务

用有创建job的账号创建4个构建任务(仅仅是做演示)

比如:AMS_SIT、AMS_UAT、BPS_SIT、BPS_UAT

创建任务

03 切换账号验证

任务创建好了,再次我们分别以AMS_DEV 、AMS_SIT两个账号登录验证视图和权限的配置情况。

先看AMS_DEV账号

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

AMS_DEV视图及权限

再看看AMS_SIT账号

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

AMS_DEV视图及权限

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

上一篇 下一篇

猜你喜欢

热点阅读