【05】Jenkins:用户权限管理

写在前面的话

 

在一个企业研发部门内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个 Jenkins 的不同用户。那么我们就希望实现一个需求,能够不同的用户登录 Jenkins 以后看到不同的项目。Jenkins 提供了简单的权限管理,我们可以在 系统管理 --> 全局安全配置 看到:

但是这里的权限配置太过简略,显然无法满足我们复制的需求,所以在这个时候引入了 Jenkins 的一个插件:Role-based Authorization Strategy

 

 

插件:Role-based Authorization Strategy

 

打开插件中心,我们可以搜索:

重启 Jenkins 以后,再度打开:系统管理 --> 全局安全配置 会发现多了我们刚刚插件的选项

我们选择该配置,同时在 系统管理 中出现了新的选项:

 

准备工作:

1. 将我们的项目复制成如下用于测试:

 

2. 新建 3 个测试用户:test / develop / product

打开:系统管理 --> 管理用户

最终用户格式:

 

配置权限:

打开:系统管理 --> Manage and Assign Roles

我们主要使用上面两种。一个用户想要进行操作必须要有两种角色,一种是全局,一种是 Project:

1. 创建角色:Manage Roles

2. 分配角色:Assign Roles

说明:我们这三个用户其实代表着三个不同的属性,为了区分我给他定义了三种不同角色。这样以后就可以给每个角色授权不一样的权限。

当然,我们这里就给了一个全部的只读权限,用户可以登录,并且修改自己的东西。

 

3. 创建项目角色:Manage Roles

 

4. 给用户分配项目权限:Assign Roles

说明:我们给用户分配不同的项目和权限,便于测试对比。

 

5. 查看权限效果:

test 用户登录后项目:

test 用户项目权限:

test 用户权限说明:test 用户登录后能看到 TEST 开头的项目,包括文件夹,但是对于项目,test 用户都只具有执行权限,而没有修改和配置的权限。

 

develop 用户登录后项目:

develop 用户项目权限:

develop 用户权限说明:可以看到,因为我们多配置了 Config 权限的原因,develop 相比于 test 用户对于分配给自己权限的项目多了修改配置权限。

 

product 用户登录后项目:

product 用户对于 TEST 项目权限:

product 用户对于 PRODUCT 项目权限:

product 用户授权说明:我们可以看到,PROCUDT 项目由于授权了 config 权限,所以用户能够修改,TEST 项目没用 config 权限,虽然同样是授权给了 product 用户,但是也是只有执行权限而已。

至此,基本的权限管理大致完成!

 

 

特别注意

 

在我们设置用户权限的时候,默认已经包含了管理员角色:

如果我们一不小心把这个勾去掉了,然后就炸了!

最终的解决办法是:

1. 停止 Jenkins。

2. 备份 /data/jenkins/jenkins-data/config.xml 配置文件。

3. 修改配置:

<useSecurity>true</useSecurity>

# 改为
<useSecurity>false</useSecurity>

4. 删除权限配置:建议文件拿来了使用 nodepad++ 类似的工具修改

删除:<authorizationStrategy> 标签及其内部内容。

删除:<securityRealm> 标签及其内部内容。

5. 启动 jenkins,此时不需要用户名密码,查看设置:

默认没有启动安全,我们需要重新配置我们之前的东西!

 

 

小结

 

Role 插件相比于系统的虽然完善了不少,但是仍然在很多时候显得不那么只能,而且前端似乎并不友好。但没办法,这东西没得挑。

posted @ 2019-07-17 17:40  Dy1an  阅读(10212)  评论(0编辑  收藏  举报