介绍一下企业实践中实用的jenkins权限管理策略。
权限限制的基本思路:按照团队进行权限划分,不同团队只能操作自己业务线对应的job,团队内成员对同一业务线job的操作权限也不同,根据团队内成员的角色来进行划分(例如测试员、测试经理)
公司的jenkins数据不方便拿出来,这里我用我本机的jenkins做一个示例。
一、下载jenkins插件
二、进入系统管理-全局安全设置
点击应用 以及保存
三、进入系统管理-Manage and Assign Roles,先选择manage roles
①首先定义全局角色,就是定义各个角色在整个jenkins的权限。
我这边定义了2个角色,分别是admin(管理员)、jobviewer(只读访客),全局角色其实两个就够了,大家可以往下看。
②定义项目角色
这里的项目角色是细分到job的,如果不理解,可以结合后面的示例看一下。
每个人员具体的权限不一样,一般涉及删除的权限需要严格把控,只有admin角色才有,其他动作可以根据实际的业务需要进行分配。
请注意这里的pattern,表示该项目角色能操作的job范围,例如tester这个角色仅对所有SIT开头的job拥有构建、取消、查看等权限,develop这个角色仅对所有DEV开头的job有构建、取消、查看等权限。
角色设置到这里就算完成了,下面进行角色分配
四、进入系统管理-Manage and Assign Roles,选择Assign roles
①给用户分配权限
首先分配全局权限
其中Anonymous表示未登录的访问用户。
全局权限是必要的,每个用户都需要分配一个全局权限,除了admin之外,其他用户给全局的只读权限即可。
全局权限分配完之后分配项目权限:
②校验不同团队间用户权限
目前我本地的jenkins只有三个JOB:
使用devUser登录jenkins:
可以看到只对DEV的job有构建权限:
至于SIT的job,devUser这个用户则不具有构建权限:
②校验同一团队内不同用户权限
比如我们使用testUser这个普通测试员用户登录,可以看到这个用户只有构建SIT相关job的权限:
然后再使用testmanagerUser这个测试经理的账号登录jenkins,可以看到该用户对于SIT相关job 具有构建和配置的权限。
以上这一套权限管理基本可以满足互联网公司的jenkins权限需求,如果大家有疑问,请留言交流~