jenkins配置角色访问
本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理。
由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Strategy Plugin,介绍页面:https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin
一、配置插件
安装插件后,进入系统设置页面,配置如下:

官网上安全域设置为Servlet容器代理,实际操作发现Jenkins专有用户数据库也是可以的。
二、配置权限
在系统管理页面点击Manage and Assign Roles进入角色管理页面:


1、管理角色(Manage Roles)
选择该项可以创建全局角色、项目角色,并可以为角色分配权限。

如上图,分别创建了admin、anonymous两个全局角色,Online Program、test两个项目角色。
项目角色与全局角色的区别就是,项目角色只能管理项目,没有管理jenkins的权限配置。
添加项目角色时,需要制定匹配项目的模式,如上图中的Pattern,官方文档介绍该选项支持正则表达式,如“Roger-.”表示所有以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目并且不区分大小写,如以ABC开头的项目可以配置为“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多个项目。
2、创建用户
在分配角色之前需要先创建用户。
在系统管理页面,点击管理用户:


点击新建使用者可以创建新用户,如果之前有项目与scm版本管理系统(如svn、git等)连接并获取源码构建过,jenkins会从svn中读取到一些用户信息,可以在查看用户菜单中看到这些用户:


点击用户id或名称都可以修改用户信息。
3、分配角色(Assign Roles)

选择Assign Roles可以为用户分配所属角色,可以分配全局角色和项目角色。

如上图,将不同的用户分别分配给不同的角色,这样用户就可以具有角色所拥有的权限。
三、深入了解
该插件从2011年10月发布1.1.2版本后就不再维护了,因此会有一些小问题,但不影响使用,比如在分配角色后点击保存按钮时有可能会发生异常,浏览器点击后退按钮后重新提交就可以操作成功。
另外如果配置失败导致不能登录,可以通过修改配置文件恢复初始设置。
首先了解一下配置文件。
进入jenkins安装目录,用户配置信息和角色配置信息都以配置文件的形式存储。

上图中users目录存放了各个用户的配置信息,每个用户都会创建与用户名相同的文件夹,文件夹中包含config.xml文件,配置示例如下:


<?xml version='1.0' encoding='UTF-8'?>
<user>
<fullName>admin</fullName>
<properties>
<jenkins.security.ApiTokenProperty>
<apiToken>EfowsOP9H5arYxMmuFrbPjjITgu/fjtvHib5okFJ9DmPTu/088cvHxlE9RHwVv+S</apiToken>
</jenkins.security.ApiTokenProperty>
<hudson.model.MyViewsProperty>
<views>
<hudson.model.AllView>
<owner class="hudson.model.MyViewsProperty" reference="http://www.cnblogs.com/.."/>
<name>All</name>
<filterExecutors>false</filterExecutors>
<filterQueue>false</filterQueue>
<properties class="hudson.model.View$PropertyList"/>
</hudson.model.AllView>
</views>
</hudson.model.MyViewsProperty>
<hudson.search.UserSearchProperty>
<insensitiveSearch>false</insensitiveSearch>
</hudson.search.UserSearchProperty>
<hudson.security.HudsonPrivateSecurityRealm_-Details>
<passwordHash>uAEYii:02e0cd0d78abf90e42b28e7d3d4fe64776ae8fa9500e379f2598cc65e1b0fb70</passwordHash>
</hudson.security.HudsonPrivateSecurityRealm_-Details>
<hudson.tasks.Mailer_-UserProperty>
<emailAddress>gaoliang@esrichina.com.cn</emailAddress>
</hudson.tasks.Mailer_-UserProperty>
</properties> </user>


角色配置在$Jenkins_home/config.xml文件中,示例如下:


<useSecurity>true</useSecurity>
<authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
<roleMap type="globalRoles">
<role name="admin" pattern=".*">
<permissions>
<permission>hudson.model.Hudson.Read</permission>
<permission>hudson.model.Hudson.Administer</permission>
<permission>hudson.model.View.Delete</permission>
<permission>hudson.model.Computer.Create</permission>
<permission>hudson.model.Computer.Delete</permission>
<permission>hudson.model.Hudson.RunScripts</permission>
<permission>hudson.model.View.Read</permission>
<permission>hudson.model.Run.Update</permission>
<permission>hudson.model.Item.Workspace</permission>
<permission>hudson.model.Computer.Connect</permission>
<permission>hudson.model.Computer.Configure</permission>
<permission>hudson.model.Item.Cancel</permission>
<permission>hudson.model.Item.Configure</permission>
<permission>hudson.model.Item.Discover</permission>
<permission>hudson.model.Item.Create</permission>
<permission>hudson.model.View.Configure</permission>
<permission>hudson.model.Computer.Disconnect</permission>
<permission>hudson.model.Item.Delete</permission>
<permission>hudson.model.Item.Read</permission>
<permission>hudson.model.Item.Build</permission>
<permission>hudson.model.Run.Delete</permission>
<permission>hudson.model.View.Create</permission>
<permission>hudson.scm.SCM.Tag</permission>
</permissions>
<assignedSIDs>
<sid>admin</sid>
</assignedSIDs>
</role>
<role name="anonymous" pattern=".*">
<permissions>
<permission>hudson.model.Hudson.Read</permission>
</permissions>
<assignedSIDs>
<sid>anonymous</sid>
</assignedSIDs>
</role>
</roleMap>
<roleMap type="projectRoles">
<role name="Online Program" pattern="GeoQPortal|GeoQUserPortal">
<permissions>
<permission>hudson.model.Item.Read</permission>
<permission>hudson.model.Item.Build</permission>
<permission>hudson.model.Run.Delete</permission>
<permission>hudson.model.Item.Workspace</permission>
<permission>hudson.model.Run.Update</permission>
<permission>hudson.scm.SCM.Tag</permission>
<permission>hudson.model.Item.Cancel</permission>
<permission>hudson.model.Item.Discover</permission>
</permissions>
<assignedSIDs>
<sid>caox</sid>
<sid>wangwh</sid>
<sid>yuh</sid>
<sid>chenjj</sid>
<sid>lim</sid>
<sid>zhangy</sid>
</assignedSIDs>
</role>
<role name="test" pattern="Compress">
<permissions>
<permission>hudson.model.Item.Delete</permission>
<permission>hudson.model.Item.Read</permission>
<permission>hudson.model.Item.Build</permission>
<permission>hudson.model.Run.Delete</permission>
<permission>hudson.model.Item.Workspace</permission>
<permission>hudson.model.Run.Update</permission>
<permission>hudson.scm.SCM.Tag</permission>
<permission>hudson.model.Item.Cancel</permission>
<permission>hudson.model.Item.Configure</permission>
<permission>hudson.model.Item.Discover</permission>
</permissions>
<assignedSIDs>
<sid>wangwh</sid>
</assignedSIDs>
</role>
</roleMap>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>


如果发生用户不能登录的情况,可以尝试以下几种方法解决
1、方法1
- 删除用户相关的目录
- 修改$Jenkins_home/config.xml文件:<useSecurity>false</useSecurity>
- 删除authorizationStrategy、securityRealm节点
- 重新启动Jenkins
使用该方法将删除Jenkins的权限管理,恢复成为初始状态。
2、方法2
- 修改$Jenkins_home/config.xml文件,修改授权方式为系统自带的安全矩阵方式
authorizationStrategy节点class属性修改为hudson.security.GlobalMatrixAuthorizationStrategy
- 配置示例如下,该示例是分配给admin用户所有权限


<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
<permission>hudson.model.Computer.Configure:admin</permission>
<permission>hudson.model.Computer.Connect:admin</permission>
<permission>hudson.model.Computer.Create:admin</permission>
<permission>hudson.model.Computer.Delete:admin</permission>
<permission>hudson.model.Computer.Disconnect:admin</permission>
<permission>hudson.model.Hudson.Administer:admin</permission>
<permission>hudson.model.Hudson.Read:admin</permission>
<permission>hudson.model.Hudson.Read:anonymous</permission>
<permission>hudson.model.Hudson.RunScripts:admin</permission>
<permission>hudson.model.Item.Build:admin</permission>
<permission>hudson.model.Item.Cancel:admin</permission>
<permission>hudson.model.Item.Configure:admin</permission>
<permission>hudson.model.Item.Create:admin</permission>
<permission>hudson.model.Item.Delete:admin</permission>
<permission>hudson.model.Item.Discover:admin</permission>
<permission>hudson.model.Item.Read:admin</permission>
<permission>hudson.model.Item.Workspace:admin</permission>
<permission>hudson.model.Run.Delete:admin</permission>
<permission>hudson.model.Run.Update:admin</permission>
<permission>hudson.model.View.Configure:admin</permission>
<permission>hudson.model.View.Create:admin</permission>
<permission>hudson.model.View.Delete:admin</permission>
<permission>hudson.model.View.Read:admin</permission>
<permission>hudson.scm.SCM.Tag:admin</permission>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>

- 重新启动Jenkins
使用该方法Jenkins将恢复为安全矩阵方式授权。
jenkins配置角色访问的更多相关文章
- jenkins配置基于角色的项目权限管理设置步骤
jenkins配置基于角色的项目权限管理设置步骤 本文链接:https://blog.csdn.net/russ44/article/details/52276222 由于jenkins默认的权限管理 ...
- centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
系统环境:centos7.7 (VMware中) 镜像image 版本:jenkins/jenkins (截止2020.01.10最新版) 参考文章:https://www.jianshu.com/p ...
- 使用jenkins配置.net mvc网站进行持续集成二
上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...
- jenkins配置.net mvc网站
jenkins配置.net mvc网站 上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. ...
- Jenkins 配置邮件通知步骤
Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...
- jenkins配置sonarqube
jenkins配置sonarqube 下载插件SonarQube Scanner for Jenkins 在系统管理系统设置中选择 SonarQube servers 配置服务器名称.访问URL地址, ...
- Jenkins配置自动化构建
转自: http://blog.sina.com.cn/s/articlelist_3053349671_14_1.html Jenkins 简介和安装(一) (2014-12-02 21:18:13 ...
- Gitlab+Jenkins学习之路(十)之Jenkins按角色授权和Pipeline
一.Jenkins按角色授权 当一个公司的开发分为多个组别,或者是多个项目等等.用于公司内部测试,让开发人员自行构建测试,此时不可能让所有的开发都在公用一个构建,这样变得很混乱,为了解决这一问题,je ...
- 【运维技术】Jenkins配置使用教程
Jenkins配置使用教程 单机jenkins启动 软件安装和启动,必须含有java环境 # 安装jdk,参考其他教程,创建文件目录 mkdir -p /app/jenkins cd /app/jen ...
随机推荐
- Maven使用笔记
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model), 一组标准插件(生命周期各阶段是绑定插件中的目标来完成项目构建工作) 一个项目生命周期(Proje ...
- Struts2-2.了解struts.xml的查找顺序
默认namespace的package <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...
- 简单的XML和JSON数据的处理
一.XML格式装换成json数据格式 using System; using System.Collections.Generic; using System.Linq; using System.W ...
- 苹果4S
港版.4S.白.非翻新机.16G.联通3G移动2G电信2G 1000 美版.4S.白.翻新.16G.联通3G移动2G电信3G 980
- Java 泛型 泛型代码和虚拟机
Java 泛型 泛型代码和虚拟机 @author ixenos 类型擦除.原始类型.给JVM的指令.桥方法.Java泛型转换的事实 l 类型擦除(type erasure) n Java泛型的处理 ...
- 2016弱校联盟十一专场10.2——Floyd-Warshall
题目链接:Floyd-Warshall 题意: 给你n个点,m条边,100>m-n>0,现在有q个询问,问你任意两点的最短距离,题目保证每条边都被连接,每条边的距离为1 题解: 首先我们可 ...
- Java 4
1.继承的问题 子类是父类的一个扩展,子类可以利用父类的属性与行为,这种情况子类会破坏父类的封装 为了保持父类良好的封装性,设计父类有以下规则: 如果要把某类设计为最终类则需要添加final修饰符,或 ...
- poj 1687 Buggy Sat 简单计算几何
暑期集训出的第一道一血 感觉自己萌萌哒…… 这道题本身并没有坑点 仅仅是翻译巨坑…… 解大腿在做B 安学长在做E 我闲着也没事 就一个词一个词翻译F…… 最后感觉…… 题干大多数都看不懂…… 也都没啥 ...
- SqlParameter关于Like的传参数无效问题
正确的写法(简洁版) private void GetHandleData(string strKeyWord1, string strKeyWord2, string strKeyWord3) { ...
- 笔记一:OOAD与UML
一.面向对象的概念与方法 1. 面向对象 1.1. 面向对象是一种系统建模技术 1.2. 面向对象编程是按照OO的方法学来开发程序的过程 1.3. 通过分析系统内对象的交互来描述或建模一个系统 1. ...