文档章节

Jenkins配置基于角色的项目权限管理--转

闪电
 闪电
发布于 2015/04/29 15:48
字数 1378
阅读 231
收藏 12
点赞 0
评论 0

本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理。

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

一、配置插件

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

官网上安全域设置为Servlet容器代理,实际操作发现Jenkins专有用户数据库也是可以的。

二、配置权限

在系统管理页面点击Manage and Assign Roles进入角色管理页面: 

1、管理角色(Manage Roles

选择该项可以创建全局角色、项目角色,并可以为角色分配权限。

如上图,分别创建了adminanonymous两个全局角色,Online Programtest两个项目角色。

项目角色与全局角色的区别就是,项目角色只能管理项目,没有管理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可以为用户分配所属角色,可以分配全局角色和项目角色。

如上图,将不同的用户分别分配给不同的角色,这样用户就可以具有角色所拥有的权限。

三、深入了解

该插件从201110月发布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将恢复为安全矩阵方式授权。

参考文献:

http://www.cnblogs.com/gao241/archive/2013/03/20/2971416.html

https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin

http://blog.csdn.net/jmyue/article/details/9763021

 

 

 

本文转载自:http://www.cnblogs.com/davidwang456/p/3701972.html

共有 人打赏支持
闪电
粉丝 74
博文 390
码字总数 6789
作品 0
海淀
技术主管
jenkins之角色授权[六]

标签(linux): jenkins 笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流 有时候我们公司里面可能有好几个开发团队,当你做完jenkins后,对于测试环境可以直接交给测试或...

陈天刚 ⋅ 2017/09/14 ⋅ 0

【Jenkins】用户权限设置

前言 随着Jenkins项目中job数量的逐渐增多,参与项目的人员也在不断地增加,项目中每个人的操作都可能对其他人的job造成影响,这个时候给不同的用户配置不同的权限显得尤为重要,这也是项目越...

r_s_x ⋅ 03/22 ⋅ 0

【Jenkins】用户权限介绍

前言 随着Jenkins项目中job数量的逐渐增多,参与项目的人员也在不断地增加,项目中每个人的操作都可能对其他人的job造成影响,这个时候给不同的用户配置不同的权限显得尤为重要,这也是项目越...

r_s_x ⋅ 03/22 ⋅ 0

Jenkins的权限管理

Jenkins的权限管理 Jenkins本身自带安全管理的功能,但是一般情况下很少去使用,更多是使用插件的方式进行更加灵活的处理。Jenkins的权限管理需要依赖Jenkins的权限管理插件。通过配置插件r...

酥心糖 ⋅ 2017/12/28 ⋅ 0

​认证权限管理系统后台 - bootshiro

bootshiro是基于springboot+shiro+jwt的真正restful url资源无状态认证权限管理后端,前端usthe。 开源愿景是提供一个动态的,页面可配置式的rest api保护,开发者无需关注认证权限安全等,后...

tomsun28 ⋅ 05/16 ⋅ 0

Jenkins之用户管理|第二节-yellowcong

通过这个插件来管理用户,首先需要配置jenkins的全局角色,项目角色,然后给用户们分配全局角色,以及项目角色信息。 1、管理角色 管理Jenkins的角色信息。首先在面板上找到【anage and Ass...

yelllowcong ⋅ 04/22 ⋅ 0

jenkins基于角色分配项目权限

jenkins是什么不用说了,可以百度,然后怎么加项目,和别的工具集成什么的,因为我也是从别人手里接过来的jenkins,直接说主题了。因为每次都是我来发布,而且发布频率还蛮高的,有时候请假因...

王小五2012 ⋅ 2016/07/29 ⋅ 0

Linux 搭建 Jenkins

Jenkins,是从Hudson fork出的一个开发分支,因与Oracle Hudson商标纠纷改名为Jenkins(详见),Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:软件版本发布/测试...

大道至精 ⋅ 2015/09/03 ⋅ 0

Jenkins安全配置/访问控制/审计

Jenkins支持多种安全模型,并且能够与多种用户存储库集成。 Jenkins的安全配置: 系统设置→Configure Global Security 访问的页面为http://my.jenkins.server/configureSecurity/ 勾选启用安...

donhui ⋅ 2015/06/04 ⋅ 0

jenkins的用户权限管理总结

注意:我的jenkins切换到了1.509.3 ,因为我之前的1.4那个版本没有用户角色管理 1.配置用户注册 这是刚安装好jenkins的时候,一个用户没有的时候 在已运行的Jenkins主页中,点击左侧的系统管...

双月通天 ⋅ 2016/06/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 从其他备份中恢复数据

一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复。 如果你在恢复压缩的 XML 备份的时候遇到了问题,你还是可以对整个站点进行恢复的,如...

honeymose ⋅ 12分钟前 ⋅ 0

myeclipse10 快速搭建spring boot开发环境(入门)

1.创建一个maven的web项目 注意上面标红的部分记得选上 2.创建的maven目录结构,有缺失的目录可以自己建立目录补充 补充后 这时候一个maven的web项目创建完成 3.配置pom.xml配置文件 <proje...

小海bug ⋅ 24分钟前 ⋅ 0

nginx.conf

=========================================================================== nginx.conf =========================================================================== user nobody; #......

A__17 ⋅ 27分钟前 ⋅ 0

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 40分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 56分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 今天 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 今天 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 今天 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 今天 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部