Jenkins系列-Jenkins用户权限和角色配置
由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,这边将使用Role Strategy Plugin,介绍页面:https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin
下载插件

进入jenkins的插件管理,讲下好的hpi文件上传:

配置插件
安装插件后,进入系统设置页面,配置如下:

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

进入之后:

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

各种权限如下(在配置页面将鼠标放到该权限上即可查看帮助):
| Overall(全局) | Credentials(凭证) | Slave(节点) | Job(任务) | View(视图) | |||||||||||||||||||||||
| Administer | Read | RunScripts | UploadPlugins | ConfigureUpdateCenter | Create | Update | View | Delete | ManageDomains | Configure | Delete | Create | Disconnect | Connect | Build | Create | Delete | Configure | Read | Discover | Build | Workspace | Cancel | Create | Delete | Configure | Read |
| 管理员(最大) | 阅读 | 运行脚本 | 升级插件 | 配置升级中心 | 创建 | 更新 | 查看 | 删除 | 管理域 | 配置 | 删除 | 创建 | 断开连接 | 连接 | 构建 | 创建 | 删除 | 配置 | 阅读 | 重定向 | 构建 | 查看工作区 | 取消构建 | 创建 | 删除 | 配置 | 阅读 |
如上图,分别创建了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或名称都可以修改用户信息。

选择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用户权限和角色配置的更多相关文章
- 项目一:第十三天 1、菜单数据管理 2、权限数据管理 3、角色数据管理 4、用户数据管理 5、在realm中动态查询用户权限,角色 6、Shiro中整合ehcache缓存权限数据
1 课程计划 菜单数据管理 权限数据管理 角色数据管理 用户数据管理 在realm中动态查询用户权限,角色 Shiro中整合ehcache缓存权限数据 2 菜单数据添加 2.1 使用c ...
- oracle查询用户权限及角色(摘)
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限( ...
- oracle用户权限和角色
用户权限是最基本的数据库安全控制.其作用就是控制用户对数据的访问,sql语句的执行.当oracle用户创建的时候,可以通过授权来控制用户对数据的连接,数据库对象的操作等等. 在oracle中,分为两种 ...
- Jenkins系列-Jenkins升级、迁移和备份
升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...
- Jenkins系列-Jenkins介绍与部署
Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...
- MySQL系列(十)--用户权限及远程访问
本文基于MySQL8.0,记录一下完整的远程访问的过程,以及这个过程中可能遇到的问题,MySQL运行在阿里云服务器,操作系统:CentOS 7.6 64位 顺便说下,买服务器还是要双十二这种拉新活动再 ...
- Oracle的用户权限和角色
用户和权限 LOCK|UNLOCK创建用户时是否锁定,默认为锁定状态.锁定的用户无法正常的登录进行数据库操作. --给普通用户SCOTT解锁,同时把SCOTT用户的密码进行修改 --语法结构:ALTE ...
- Jenkins系列-Jenkins初始化配置
初始化 访问,如:127.0.0.1:8088/Jenkins 第一次要求输入密码,初始密码在文件中查看. 执行以下命令查看 $ cat ${USER_HOME}\.jenkins\secrets\i ...
- Jenkins系列-Jenkins修改主目录步骤说明
在使用Jenkins做持续集成过程中,在构建很多次后发现有时在构建的时候系统提示磁盘空间不足,此时检查发现Jenkins的主目录挂载区放在了服务器根目录下,占用空间较大,此时除了对服务器的磁盘进行扩容 ...
随机推荐
- django之路由分组,反向解析,有名,无名分组
路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态的概念 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',vi ...
- python中通过datetime获取UTC时间ISO格式
一个热点统计需求,需要限定一个时间范围,计算出该范围内的热点事件,相关数据则以UTC标准时间的ISO时间格式存在mongodb中,和服务器设置的时区UTC+8并不一致. 为了解决这个问题,直觉反应是在 ...
- jQuery个人总结
选择 1. end()的使用 $('div') .find('h3') .eq(2) .html('Hello') .end() //退回到选中所有的h3元素的那一步 .eq(0) //选中第一个h3 ...
- 安装虚拟机以及ubuntu
近期要用到linux,所以开始学习.想要在这里记录自己的学习之路 1.安装虚拟机以及装ubuntu系统 虚拟机就相当于一台电脑,电脑里得有系统,我们选择了ubuntu作为操作系统. 安装看下面的博客操 ...
- libevent学习六(Connect listeners )
创建与释放 //backlog需要查询平台说明,在linux2.2以后 backlog就变成了已完成连接但未accept的队列的最大值(原来是处于syn状态的,现在换成sysctl 控制的参数tc ...
- 「日常训练&知识学习」树的分块(王室联邦,HYSBZ-1086)
题意与分析 这题的题意就是树分块,更具体的看题目(中文题). 学习这一题是为了树的分块,为树上莫队做铺垫. 参考1:https://blog.csdn.net/LJH_KOQI/article/det ...
- 阿里云服务器Linux系统安装配置ElasticSearch搜索引擎
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- hdu2199Can you solve this equation?(解方程+二分)
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 关于java获取网页内容
最近项目需求,做一些新闻站点的爬取工作.1.简单的jsoup爬取,静态页面形式: String url="a.atimo.cn";//静态页面链接地址Document doc = ...
- TW实习日记:第18天
今天的bug没有那么多了,都是些小bug,一下就改好了.或者是接口那边数据返回的有问题,通知一下同事就ok了.主要今天是在赶功能进度,然而有一个功能模块需求里并没有写,实在是不知道要做成什么样子,真的 ...