介绍一下企业实践中实用的jenkins权限管理策略。

权限限制的基本思路:按照团队进行权限划分,不同团队只能操作自己业务线对应的job,团队内成员对同一业务线job的操作权限也不同,根据团队内成员的角色来进行划分(例如测试员、测试经理)

公司的jenkins数据不方便拿出来,这里我用我本机的jenkins做一个示例。

一、下载jenkins插件

jenkins 管理员设置 jenkins用户权限_系统管理

 

二、进入系统管理-全局安全设置

jenkins 管理员设置 jenkins用户权限_用户权限_02

点击应用 以及保存

三、进入系统管理-Manage and Assign Roles,先选择manage roles

jenkins 管理员设置 jenkins用户权限_jenkins 管理员设置_03

①首先定义全局角色,就是定义各个角色在整个jenkins的权限。

jenkins 管理员设置 jenkins用户权限_jenkins 管理员设置_04

 

我这边定义了2个角色,分别是admin(管理员)、jobviewer(只读访客),全局角色其实两个就够了,大家可以往下看。

②定义项目角色

这里的项目角色是细分到job的,如果不理解,可以结合后面的示例看一下。

每个人员具体的权限不一样,一般涉及删除的权限需要严格把控,只有admin角色才有,其他动作可以根据实际的业务需要进行分配。

jenkins 管理员设置 jenkins用户权限_系统管理_05

请注意这里的pattern,表示该项目角色能操作的job范围,例如tester这个角色仅对所有SIT开头的job拥有构建、取消、查看等权限,develop这个角色仅对所有DEV开头的job有构建、取消、查看等权限。

角色设置到这里就算完成了,下面进行角色分配

四、进入系统管理-Manage and Assign Roles,选择Assign roles

jenkins 管理员设置 jenkins用户权限_用户权限_06

①给用户分配权限

首先分配全局权限

jenkins 管理员设置 jenkins用户权限_用户权限_07

其中Anonymous表示未登录的访问用户。

全局权限是必要的,每个用户都需要分配一个全局权限,除了admin之外,其他用户给全局的只读权限即可。

全局权限分配完之后分配项目权限:

jenkins 管理员设置 jenkins用户权限_jenkins_08

②校验不同团队间用户权限

目前我本地的jenkins只有三个JOB:

jenkins 管理员设置 jenkins用户权限_用户权限_09

使用devUser登录jenkins:

可以看到只对DEV的job有构建权限:

jenkins 管理员设置 jenkins用户权限_配置管理_10

至于SIT的job,devUser这个用户则不具有构建权限:

jenkins 管理员设置 jenkins用户权限_配置管理_11

②校验同一团队内不同用户权限

比如我们使用testUser这个普通测试员用户登录,可以看到这个用户只有构建SIT相关job的权限:

jenkins 管理员设置 jenkins用户权限_配置管理_12

然后再使用testmanagerUser这个测试经理的账号登录jenkins,可以看到该用户对于SIT相关job 具有构建和配置的权限

jenkins 管理员设置 jenkins用户权限_jenkins 管理员设置_13