持续集成CI实施指南四--jenkins用户权限管理
jenkins默认的权限管理不支持用户分组或者按项目划分权限,所以如果团队有这种需求,需要安装插件。下面将介绍使用插件来实现用户角色的管理。
一、使用插件
1.1 安装插件
安装Role-based Authorization Strategy插件
1.2 启用插件
进入“系统管理”的“Configure Global Security”界面,配置如下:
- 启动安全
- 使用Jenkins专有用户数据库
- 取消勾选“允许用户注册”,一般由管理员分配
- 使用“Role-Based Strategy”策略
【注意】:使用Role-Based Strategy策略后,先不要注销管理员账号,否则会由于后续角色权限没配置而无法登陆,如果遇到这种问题,参考第三章
二、配置权限
正确安装了插件后,就能在“系统管理”中看到“Manage and Assign Roles”
2.1 角色管理
进入“Manage Roles”
根据需要编辑Global roles
- 这里创建两个全局角色
- admin有所有权限
- project用于分配给项目组,这里只开放只读权限
根据需要编辑Project roles
- 这里通过编写表达式让角色拥有对应项目的权限
- 如果要匹配前缀是“Dent”的项目,表达式为“Dent.*”,和一般通配符表达式不同的是,星号前面还有一个点,不要忘记了
需要注意Project roles和Global roles配置的project不同,在2.3章节中会进一步解释。
2.2 用户管理
创建用户的步骤非常简单,如下所示:
进入“系统管理”的“管理用户”
左边栏“新建用户”,按内容填写
2.3 分配角色
编辑好角色和用户后,现在把它们关联起来,让权限生效:
同样进入“系统管理”的“Manage and Assign Roles”,点击“Assign Roles”
参考下面的配置
- 在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
2docker stop myjenkins
docker start myjenkins
上面的操作可以清空权限系统,用管理员登录后重新配置即可。
jenkins四期介绍到此就结束了,然而jenkins在实际项目中的应用功能还远远不止如此,pipline,运维监控等高级玩法,jenkins+交通灯、报警器的搞怪玩法,以后有机会再整理分享出来。
持续集成CI实施指南四--jenkins用户权限管理