• -------------------------------------------------------------
  • ====================================

Jenkins2.32用户和权限管理策略

生活 dewbay 5年前 (2019-04-12) 2342次浏览 已收录 0个评论 扫描二维码

前言

在使用 jenkins 的过程中,需要为不同的角色分配相应的权限,如果 jenkins 的用户数据能和公司现在的帐号系统结合起来那会更好。

关于如何为用户分组,我推荐使用 role based authorization strategy 这个插件

我的环境如下:

版本:Jenkins ver. 2.32.3

系统:windows 7 x64

进入用户管理

如果使用的是 jenkins 内置的用户数据库,操作方法如下:

1.使用管理员帐号登录,选择 Configure Global Security  就可以打开用户管理界面

admin 没有 overall/Read 权限

在授权策略中选择安全矩阵之后,并没有为 amdin 勾选 overall 的权限

Jenkins2.32用户和权限管理策略

刷新或者点其它操作就会出现 admin 没有 overall/Read 权限

Jenkins2.32用户和权限管理策略

解决办法:

1. 在 jenkins 的安装目录下找到 config.xml,备份一份,并打开

2. 找到 <authorizationStrategy> 节点 ,修改内容如下(两个配置可选)

<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
这个权限对应“任何用户可以做任何事(没有任何限制)”
 
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
这个权限对应“登录用户可以做任何事”

3. 重启 jenkins 的服务

内置用户和权限管理

推荐这篇博客讲解 jenkins 内置的用户管理比较详细

Jenkins 学习七:Jenkins 的授权和访问控制 

用户管理插件

在插件库搜索到的安装量较高的用户管理有两个:

Role-based Authorization Strategy:https://plugins.jenkins.io/role-strategy

安装量:20931

介绍:网上相关的文档资料较多(推荐使用)

Matrix Authorization Strategy:https://plugins.jenkins.io/matrix-auth

安装量:131937

介绍:文档较少,未使用。

Role-based Authorization Strategy

这个章节讲解这个插件的使用笔记,插件地址:https://plugins.jenkins.io/role-strategy

安装完 role based authorization strategy 之后,在系统管理的菜单项中会多出一项 “Manager and Assign Roles

创建用户组

1. 选择 系统管理 – Manager and Assign Roles 中的 mangage Roles 进行创建用户组

2. 记住要为所有用户组勾选overallread权限

Jenkins2.32用户和权限管理策略

我的测试可以只勾选 Global roles,而无需在 project roles 中创建

为用户分配组

1. 选择 系统管理 – Manager and Assign Roles 中的 Assign Roles 可以为用户分组

Jenkins2.32用户和权限管理策略

我也只在 Global roles 为用户分配权限,并没有为特定的项目分配。

使用通配符

Manager and Assign Roles  – Project roles 中可以添加通配符,为不同组指定可以打包那些项,通配符是匹配创建的 job 名字

Jenkins2.32用户和权限管理策略

我的试验

1. 在 Manage Roles 中在 Global roles 创建用户组

2. 在 Assign Roles 中为具体的用户分配组,只在 global roles 下为具体用户分配组

3 . 如上图所示,在 project roles 中并没有给 qingqing_zhao 没有分配权限,但 global roles 中分配了 job_ops 权限,所以 qingqing_zhao 这个用户拥有 job_ops 组的权限

4. 而在 anonymous 分配在 job_read 组,这样无需登录也可以项目信息,但仅仅可查看 job 信息,而无权进行任何操作

global roles 和 project roles

global roles 全局角色(全局角色可以对 jenkins 系统进行设置与项目的操作)

project roles 项目角色(项目角色只能对项目进行操作)

上述我的试验中,对 qingqing_zhao 这个用户分配了全局角色权限,所以他也拥有项目的权限,golbal role 的权限大于 project roles。

不同用户的视图

按照上面的测试,我对用户分了三个组:admin ,ops ,readonly,下面是这三个组进入 jenkins 的视图。

admin 组视图

最高权限组,包括系统和 job 的管理权限

Jenkins2.32用户和权限管理策略

ops 组图

仅仅可对 job(项目)进行操作,包括 build ,cancel

Jenkins2.32用户和权限管理策略

readonly 组

只可对 job(项目)进行只读

Jenkins2.32用户和权限管理策略

不同用户组不同 job

总结来说就是在建立 job 有一定的命名规范,在分配 project roles 时利用 pattern 进行过滤(例如:build.*  。表示 build 开头号的 job 都可以访问)

参考: https://my.oschina.net/boltwu/blog/404893

TODO

利用公司已有帐号系统

Jenkins 使用公司帐号体系或已有帐号进行登录,利用 ldap,不同公司的配置数据不一样。

我使用的 2.32.3 版本自带 ldap 插件

参考:

用户权限管理

Jenkins的用户组管理中的 pattern (正规表达式)部分的使用

其他

通过Jenkins copy job 创建新的 job 之后不能立即构建

小技巧

web 页 url 操作 jenkins

在 web 页就可以重启或关闭 jenkins,操作如下:如果当前登录的帐号俱备管理员权限,在网址后面加上 /restart就可


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Jenkins2.32用户和权限管理策略
喜欢 (1)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址