Jenkins 用户权限管理 -Role-based Authorization Strategy 插件
系统管理-->插件管理-->可选插件
输入插件名称?Role-based Authorization Strategy

如果你已经安装过该插件,则在已安装一栏中可以看到该插件

二、配置全局安全策略
==========
系统管理-->全局安全配置(Configure Global Security)
授权策略选择?Role-Based Strategy

三、管理和分配角色
=========
3.1 配置 Manage Roles
==================
系统管理-->Manage and Assign Roles-->Manage Roles

3.1.1 创建全局角色并授权
===============
新增两个全局角色 RD(开发)、OP(运维)并授予全局的 Read 权限,这里如果没有授权的话,普通用户登录到 jenkins 则会提示:用户没有 Ove
rall/read 权限

3.1.2 创建项目角色并授权
===============
新增两个项目角色 project_a_maneger、project_b_manager,并授权。
Role to add:项目角色名称
Pattern:项目角色对应的项目,这里可以用正则匹配一类项目任务。

新增项目角色后授权
我这里对两个角色授予管理对应项目的所有权限

保存
==
2.3 配置 Assign Roles
==================
系统管理-->Manage and Assign Roles-->Assign Roles
在 2.2 已经配置好了角色和权限,那这一步就是给用户分配角色,或者说是让上面的配置生效

首先在 Global roles 里面添加之前创建的用户

添加完成后给用户分配角色,张三为开发人员即 RD,李四为运维人员即 OP

保存
==
这样就将张三李四两个人员与 2.2 里面设置的全局角色关联了起来,现在两者都有?全部/read?权限,可以正常登陆 jenkins 了,登陆测试一下吧

登陆成功没有问题。你也可以测试一下将 2.2 中的 Global roles 设置里的全剧角色 RD 对应的 Read 权限去掉,?保存一下?,修改配置记得保存

现在再去尝试使用张三用户登录,就会报错了

由于没有全局读权限,不会显示任何内容。
测试结束,记得将全局角色 RD 的读权限恢复,?保存?,接下来接着配置?Assign Roles?的?Item roles
在 Item roles 中添加之前创建的两个角色张三、李四

添加完成后给用户分配角色,张三分配?project_a_manager?的角色 ,李四分配?project_b_manage?的角色

这样我们就将张三李四分别和两个项目角色关联起来了,关联后项目角色的权限就自动对应到了用户上面,即 project_a_manager 这个项目角色能管理项目 project_a,而张三有了这个角色后也能管理项目 project_a 了。?保存?配置然后测试一下。
四、 测试
=====
使用张三用户登录

张三只能看到项目 project_a
使用李四用户登录

李四只能看到项目 project_b
这样我们就实现了,不同用户管理不同项目的目的。
总结一下,用户权限的控制其实是依赖于项目角色的权限控制,也就是项目角色才是核心,项目角色将用户和项目关联起来,在项目角色上配置对于项目的权限。
进阶
==
为了更加明确项目角色权限,用户权限的概念我们再来创建一个项目角色和一个用户,并且来测试一下正则表达式定义项目角色的?Pattern
新建用户王五,让王五对于 project_a、project_b 两个项目都只有只读权限
新建用户王五

管理角色
系统管理-->Manage and Assign Roles-->Manage Roles
新建一个项目角色 lingdao,并使用正则表示该用户可以管理?project_?为开头的项目
Role to add: lingdao
Pattern: project_.*

评论