持续集成CI实施指南四--jenkins用户权限管理

jenkins默认的权限管理不支持用户分组或者按项目划分权限,所以如果团队有这种需求,需要安装插件。下面将介绍使用插件来实现用户角色的管理。

一、使用插件

1.1 安装插件

安装Role-based Authorization Strategy插件

1

1.2 启用插件

进入“系统管理”的“Configure Global Security”界面,配置如下:

2

  • 启动安全
  • 使用Jenkins专有用户数据库
  • 取消勾选“允许用户注册”,一般由管理员分配
  • 使用“Role-Based Strategy”策略

【注意】:使用Role-Based Strategy策略后,先不要注销管理员账号,否则会由于后续角色权限没配置而无法登陆,如果遇到这种问题,参考第三章

二、配置权限

正确安装了插件后,就能在“系统管理”中看到“Manage and Assign Roles”

3

2.1 角色管理

  • 进入“Manage Roles”

    4

  • 根据需要编辑Global roles

    5

    • 这里创建两个全局角色
    • admin有所有权限
    • project用于分配给项目组,这里只开放只读权限
  • 根据需要编辑Project roles

    6

    • 这里通过编写表达式让角色拥有对应项目的权限
    • 如果要匹配前缀是“Dent”的项目,表达式为“Dent.*”,和一般通配符表达式不同的是,星号前面还有一个点,不要忘记了

需要注意Project roles和Global roles配置的project不同,在2.3章节中会进一步解释。

2.2 用户管理

创建用户的步骤非常简单,如下所示:

  • 进入“系统管理”的“管理用户”

    7

  • 左边栏“新建用户”,按内容填写

    8

2.3 分配角色

编辑好角色和用户后,现在把它们关联起来,让权限生效:

  • 同样进入“系统管理”的“Manage and Assign Roles”,点击“Assign Roles”

    9

  • 参考下面的配置

    10

    • 在Global roles中,添加所有的用户,然后分配对应的全局角色
    • 在Item roles中,也要添加所有的用户(管理员用户可以不用分配),分配对应的项目角色

    这里解释一下,所有的用户都分配了两个角色,Global roles和Item roles,很容易不理解或者容易犯错的是只给一般用户分配Item roles,也就是项目角色,这样分配后,用户登陆会提示没有Overall的Read权限,也就是说用户虽然有某个项目的权限,他可以通过某个项目的URL去访问,但没有总体预览权限,没法进入首页。所以必须给用户配置全局角色,以获得Overall权限。

三、权限问题

在配置权限时,如果因为配置不当,导致管理员账号不能登陆jenkins,可以按下面的方式操作:

  • 编辑config.xml

    • 你可以在宿主机的映射位置如“/var/lib/docker/volumes/jenkins/_data/”找到该文件
    • 或者在docker容器内的“/var/jenkins_home”找到
  • 修改useSecurity为false

    1
    <useSecurity>false</useSecurity>
  • 删除authorizationStrategy、securityRealm节点

  • 重启jenkins for docker

    1
    2
    docker stop myjenkins
    docker start myjenkins

上面的操作可以清空权限系统,用管理员登录后重新配置即可。

jenkins四期介绍到此就结束了,然而jenkins在实际项目中的应用功能还远远不止如此,pipline,运维监控等高级玩法,jenkins+交通灯、报警器的搞怪玩法,以后有机会再整理分享出来。

持续集成CI实施指南四--jenkins用户权限管理

https://wurang.net/jenkins04_role/

作者

Wu Rang

发布于

2017-11-18

更新于

2021-12-06

许可协议

评论