Jenkins用户权限

        说实在的jenkins的用户权限这块,真的不好理解,我看别人写的教程,看了几次都没有明白,没办法,自己设置一下,去看看另一个账号的变化,通过半天的自己摸索,才算是能基本入门使用了,希望此教程能给初入坑者带来帮助,下面先说概念性的东西。

1.安装插件(也可以在初始化的时候自定义插件选择Role-based Authorization Strategy ),下载插件名字叫  role-strategy

  插件中心地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

  插件下载地址: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/role-strategy/latest/role-strategy.hpi

2. Global roles 和 Project roles区别

    Global roles 全局角色

    Project roles 项目角色

    Slave roles 结点角色(这里用不到,反正也不会,所以略过)

    他们主要区别就是,全局角色(Global roles)的权限对所有项目进行设置,项目角色(Project roles)可以对某个项目设置,或是用正则匹配某些规则的项目.

    如果所有用户都是可以看到并访问所有项目,那么只设置全局角色(Global roles)即可。

    如果所有用户需要看到不同的项目,并且每个项目的权限也不相同,那么只需要项目角色(Project roles)即可,但是一定要设置一个全局角色,并赋予 Overall 的  Read权限(不设置这个权限,对应的用户登陆后看不到项目),其它的都不要在全局角色给权限即刻,全局与项目角色采取的是并集,也就是说全局没设置权限,但是项目设置了权限就可以使用,反之一样可以使用,取全局和并集的最大可用权限。

3.用户管理

  添加用户的方法: Manage Jenkins -> Manage Users -> 左侧 新建用户,就可以增加了 ,感觉这里也比较反人类,因为当你登陆之后就能看到一个用户列表的菜单,进去之后怎么都找不到增加用户的功能,还以为是权限的问题,找呀找,找呀找,就是死活找不到增加,所以这里感觉以人类,既然不能添加,为什么要显示一个用户列表呢?还能看到jenkins上的所有用户。不解。。。

角色设置

1.Manage Jenkins -> Configure Global Security  选择 Role-Based Strategy 然后应用保存

jenkins登录的cookie会失效吗 jenkins账号_Jenkins用户权限

当在次进入 Manage Jenkins 发现有如下提示,我也不知道是什么意思,反正点击 Dismiss 就可以,不影响使用。

jenkins登录的cookie会失效吗 jenkins账号_用户权限_02

 

2.Manage Jenkins -> Configure Global Security -> Manage and Assign Roles

Manage Roles

Global roles 下建立一个 test 角色,并且只给Read权限。

jenkins登录的cookie会失效吗 jenkins账号_Test_03

接下来,我说一下我理解的Global roles的其它权限,Overall这个Administer是最高的管理员权限,一般只给到admin,新建立的角色如果要配合下面的Project roles使用,则只给到Read就可以了。

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_04

这里保存这在Jenkins中配置的git svn或其它的用户名密码之类的都在这个里面,这里可以设置对应角色的权限.

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_05

这个是配置Jenkins结点的权限,反正现在用不到, 我也不会。

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_06

任务的,对应权限

jenkins登录的cookie会失效吗 jenkins账号_用户权限_07

这个不知道,反正问度娘无果

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_08

这个是视图权限,就是把某个项目关联到类于浏览器的选项卡上面的,项目多用的上,项目少基本就不用去分类

jenkins登录的cookie会失效吗 jenkins账号_用户权限_09

这个貌似是对git svn等部署设置定时部署任务的,也用不到,也没测试过

 

Project roles 下建立一个 名为 【测试项目】 Pattern 为 [.*Test]的项目角色

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_10

我们只给job的Build 和 Read权限,至此角色这块就算是配置完成了([.*Test]内意义是所有Test结尾的项目生效,最后要点击

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_11

用户权限设置

下面我们在设置用户权限之前,先设置以下项目

1.增加一个test的用户

jenkins登录的cookie会失效吗 jenkins账号_Jenkins用户权限_12

2.增加几个项目,结果如下

jenkins登录的cookie会失效吗 jenkins账号_Test_13

 

3.接下来设置test用户的权限: Manage and Assign Roles -> Manage and Assign Roles -> Assign Roles

jenkins登录的cookie会失效吗 jenkins账号_Jenkins用户权限_14

这里反人类的地方来了,自己新建立的用户在这里看不到,nnd 这里输入test点击add,把刚才建立的test用户增加进来。 并选择test角色。

jenkins登录的cookie会失效吗 jenkins账号_Jenkins用户权限_15

然后 应用保存

用test登陆看什么项目都没有。

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_16

 

 Assign Roles ->  Item roles

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_17

在次登陆test用户,便能看到Test结尾的项目了, 并且每个项目都只有Build Now权限

jenkins登录的cookie会失效吗 jenkins账号_Jenkins_18

 

这么反人类的  Role-based Authorization Strategy 权限就设置完了, 只能说够用了,如果用户很多的情况下,用这个插件应该是比较方便的,但如果用户少,用矩阵控制更方便(同样需要这个插件)。

jenkins登录的cookie会失效吗 jenkins账号_Test_19

 

jenkins登录的cookie会失效吗 jenkins账号_Jenkins用户权限_20

项目上也可以设置,这样应该就可以了,就不测试了