天天看点

[Jenkins权限]-多团队如何共用一个Jekins

一、背景

需求是Job/Item隔离。即各个团队可以创建自己的job/item,别人无法看到。

ps:我全文用了Job一词,在Jenkins中其实是Item

ps:自己研究了几天,从一开始以为Jenkins权限支持的不好,到 Role-based Authorization Strategy插件,再到LDAP、组权限等,其实发现最简单的就在眼皮下。

二、步骤

  1. 安装插件 Matrix Authorization Strategy Plugin
  2. 进入 Configure Global Security (全局安全配置) > 在Authorization模块下 > 选择“项目矩阵授权策略”
    [Jenkins权限]-多团队如何共用一个Jekins
  3. 将登录用户的Job查看、创建权限加上。

    第一行是匿名用户,也就是没登录的用户的权限,第二行是授权用户,就是登录的用户。这样配置后,用户登录之后就可以看到自己有权限的job,也可以创建。

    下图是我用admin账号进行的全局操作,也就是下面的权限会追加到所有job中,类似与统一授权,谨慎使用。

    [Jenkins权限]-多团队如何共用一个Jekins
    假设我们有一个团队A的用户qq,它是所在团队的管理员,那么它就可以创建自己需要的job,例如job-a。那么job-a的配置页中也会出现一个权限配置页面,并默认的把自己添加进去,如下图。
    [Jenkins权限]-多团队如何共用一个Jekins
    此时,job-a只有admin和用户qq可以看到,同时qq可以自己拉人进来。

三、关于group、组。

  1. 添加人员的时候“Add user or group”,我们会想,是不是可以按组添加,答案是肯定的,可以。那这个group来自哪里呢?
  2. 其实,这个group是对应账号体系的,我文中选择的是Jenkins自有的账号体系。你也可以选择LDAP或者GItlab体系,这些里面都有组。
  3. 选择GItlab体系,配置插件,让jenkins登录时直接打开gitlab登录页,实现单点。那么这时候,组就是gitlab中的group。
  4. 选择LDAP,那么你可以在LDAP中添加组,在组中添加成员。在jenkins的ldap配置时,可以选择组成员的搜索方法:一是从group里加成员,二是从用户属性里配置。
    [Jenkins权限]-多团队如何共用一个Jekins

四、Gitlab单点

Gitlab和Jenkins可以通过配置插件,实现使用Gitlab账号单点登录。效果是:登录Gitlab后,打开Jenkins已经登录,没登录直接打开Jenkins会跳转到Gitlab登录页,输入账号密码,跳转会Jenkins

五、Role-based Authorization Strategy

这个插件也是基于上述的安全矩阵进行权限控制的,这个ACL(访问控制列表)是Jenkins权限控制的基础。

插件的优点是可以基于角色控制、可以通过正则表达式对一批Job进行权限管理。

插件的缺点是只能由admin来管理,不能让团队自己管理,且团队创建的Job必须符合表达式,否则创建之后也看不到。

2020.8.11更新

团队协作,还需要凭证的隔离,请看我的这篇文章:

[Jenkins权限]-多团队如何隔离凭证,隐藏凭证,不让别人看到

继续阅读