转自: http://www.cnblogs.com/gao241/archive/2013/03/20/2971416.html, 版权归原作者。

本文将介绍如何配置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文件,配置示例如下:

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <user>
  3. <fullName>admin</fullName>
  4. <properties>
  5. <jenkins.security.ApiTokenProperty>
  6. <apiToken>EfowsOP9H5arYxMmuFrbPjjITgu/fjtvHib5okFJ9DmPTu/088cvHxlE9RHwVv+S</apiToken>
  7. </jenkins.security.ApiTokenProperty>
  8. <hudson.model.MyViewsProperty>
  9. <views>
  10. <hudson.model.AllView>
  11. <owner class="hudson.model.MyViewsProperty" reference="http://www.cnblogs.com/.."/>
  12. <name>All</name>
  13. <filterExecutors>false</filterExecutors>
  14. <filterQueue>false</filterQueue>
  15. <properties class="hudson.model.View$PropertyList"/>
  16. </hudson.model.AllView>
  17. </views>
  18. </hudson.model.MyViewsProperty>
  19. <hudson.search.UserSearchProperty>
  20. <insensitiveSearch>false</insensitiveSearch>
  21. </hudson.search.UserSearchProperty>
  22. <hudson.security.HudsonPrivateSecurityRealm_-Details>
  23. <passwordHash>uAEYii:02e0cd0d78abf90e42b28e7d3d4fe64776ae8fa9500e379f2598cc65e1b0fb70</passwordHash>
  24. </hudson.security.HudsonPrivateSecurityRealm_-Details>
  25. <hudson.tasks.Mailer_-UserProperty>
  26. <emailAddress>gaoliang@esrichina.com.cn</emailAddress>
  27. </hudson.tasks.Mailer_-UserProperty>
  28. </properties>
  29.  
  30. </user>

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

  1. <useSecurity>true</useSecurity>
  2. <authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
  3. <roleMap type="globalRoles">
  4. <role name="admin" pattern=".*">
  5. <permissions>
  6. <permission>hudson.model.Hudson.Read</permission>
  7. <permission>hudson.model.Hudson.Administer</permission>
  8. <permission>hudson.model.View.Delete</permission>
  9. <permission>hudson.model.Computer.Create</permission>
  10. <permission>hudson.model.Computer.Delete</permission>
  11. <permission>hudson.model.Hudson.RunScripts</permission>
  12. <permission>hudson.model.View.Read</permission>
  13. <permission>hudson.model.Run.Update</permission>
  14. <permission>hudson.model.Item.Workspace</permission>
  15. <permission>hudson.model.Computer.Connect</permission>
  16. <permission>hudson.model.Computer.Configure</permission>
  17. <permission>hudson.model.Item.Cancel</permission>
  18. <permission>hudson.model.Item.Configure</permission>
  19. <permission>hudson.model.Item.Discover</permission>
  20. <permission>hudson.model.Item.Create</permission>
  21. <permission>hudson.model.View.Configure</permission>
  22. <permission>hudson.model.Computer.Disconnect</permission>
  23. <permission>hudson.model.Item.Delete</permission>
  24. <permission>hudson.model.Item.Read</permission>
  25. <permission>hudson.model.Item.Build</permission>
  26. <permission>hudson.model.Run.Delete</permission>
  27. <permission>hudson.model.View.Create</permission>
  28. <permission>hudson.scm.SCM.Tag</permission>
  29. </permissions>
  30. <assignedSIDs>
  31. <sid>admin</sid>
  32. </assignedSIDs>
  33. </role>
  34. <role name="anonymous" pattern=".*">
  35. <permissions>
  36. <permission>hudson.model.Hudson.Read</permission>
  37. </permissions>
  38. <assignedSIDs>
  39. <sid>anonymous</sid>
  40. </assignedSIDs>
  41. </role>
  42. </roleMap>
  43. <roleMap type="projectRoles">
  44. <role name="Online Program" pattern="GeoQPortal|GeoQUserPortal">
  45. <permissions>
  46. <permission>hudson.model.Item.Read</permission>
  47. <permission>hudson.model.Item.Build</permission>
  48. <permission>hudson.model.Run.Delete</permission>
  49. <permission>hudson.model.Item.Workspace</permission>
  50. <permission>hudson.model.Run.Update</permission>
  51. <permission>hudson.scm.SCM.Tag</permission>
  52. <permission>hudson.model.Item.Cancel</permission>
  53. <permission>hudson.model.Item.Discover</permission>
  54. </permissions>
  55. <assignedSIDs>
  56. <sid>caox</sid>
  57. <sid>wangwh</sid>
  58. <sid>yuh</sid>
  59. <sid>chenjj</sid>
  60. <sid>lim</sid>
  61. <sid>zhangy</sid>
  62. </assignedSIDs>
  63. </role>
  64. <role name="test" pattern="Compress">
  65. <permissions>
  66. <permission>hudson.model.Item.Delete</permission>
  67. <permission>hudson.model.Item.Read</permission>
  68. <permission>hudson.model.Item.Build</permission>
  69. <permission>hudson.model.Run.Delete</permission>
  70. <permission>hudson.model.Item.Workspace</permission>
  71. <permission>hudson.model.Run.Update</permission>
  72. <permission>hudson.scm.SCM.Tag</permission>
  73. <permission>hudson.model.Item.Cancel</permission>
  74. <permission>hudson.model.Item.Configure</permission>
  75. <permission>hudson.model.Item.Discover</permission>
  76. </permissions>
  77. <assignedSIDs>
  78. <sid>wangwh</sid>
  79. </assignedSIDs>
  80. </role>
  81. </roleMap>
  82. </authorizationStrategy>
  83. <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
  84. <disableSignup>false</disableSignup>
  85. <enableCaptcha>false</enableCaptcha>
  86. </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用户所有权限
    1. <useSecurity>true</useSecurity>
    2. <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
    3. <permission>hudson.model.Computer.Configure:admin</permission>
    4. <permission>hudson.model.Computer.Connect:admin</permission>
    5. <permission>hudson.model.Computer.Create:admin</permission>
    6. <permission>hudson.model.Computer.Delete:admin</permission>
    7. <permission>hudson.model.Computer.Disconnect:admin</permission>
    8. <permission>hudson.model.Hudson.Administer:admin</permission>
    9. <permission>hudson.model.Hudson.Read:admin</permission>
    10. <permission>hudson.model.Hudson.Read:anonymous</permission>
    11. <permission>hudson.model.Hudson.RunScripts:admin</permission>
    12. <permission>hudson.model.Item.Build:admin</permission>
    13. <permission>hudson.model.Item.Cancel:admin</permission>
    14. <permission>hudson.model.Item.Configure:admin</permission>
    15. <permission>hudson.model.Item.Create:admin</permission>
    16. <permission>hudson.model.Item.Delete:admin</permission>
    17. <permission>hudson.model.Item.Discover:admin</permission>
    18. <permission>hudson.model.Item.Read:admin</permission>
    19. <permission>hudson.model.Item.Workspace:admin</permission>
    20. <permission>hudson.model.Run.Delete:admin</permission>
    21. <permission>hudson.model.Run.Update:admin</permission>
    22. <permission>hudson.model.View.Configure:admin</permission>
    23. <permission>hudson.model.View.Create:admin</permission>
    24. <permission>hudson.model.View.Delete:admin</permission>
    25. <permission>hudson.model.View.Read:admin</permission>
    26. <permission>hudson.scm.SCM.Tag:admin</permission>
    27. </authorizationStrategy>
    28. <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    29. <disableSignup>false</disableSignup>
    30. <enableCaptcha>false</enableCaptcha>
    31. </securityRealm>
    • 重新启动Jenkins

    使用该方法Jenkins将恢复为安全矩阵方式授权。

Jenkins配置基于角色的项目权限管理的更多相关文章

  1. jenkins配置基于角色的项目权限管理设置步骤

    jenkins配置基于角色的项目权限管理设置步骤 本文链接:https://blog.csdn.net/russ44/article/details/52276222 由于jenkins默认的权限管理 ...

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

    本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...

  3. Jenkins基于角色的项目权限管理

    参考博客:http://www.cnblogs.com/davidwang456/p/3701972.html 一.简介 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三 ...

  4. vue基于d2-admin的RBAC权限管理解决方案

    前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-a ...

  5. 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点)

    点击返回:自学Aruba之路 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点) 1. 角色Role介绍 在ArubaOS中,用户(User)指的是已经完成连接,并获取到IP地址 ...

  6. 基于EasyUI Treegrid的权限管理资源列表

    1. 前言 最近在开发系统权限管理相关的功能,主要包含用户管理,资源管理,角色管理,组类别管理等小的模块.之前的Web开发中也用过jQueryEasyUI插件,感觉这款插件简单易用,上手很快.以前用到 ...

  7. 基于RBAC模式的权限管理系统设计概要

    很多人都知道以角色为基础的权限管理设计(RBAC),但是大部分人似懂非懂,不知道完整的权限管理系统都包括哪些内容.  在此以权限管理的使用场景来说明一下完整的权限管理内容.     一是鉴权管理,即权 ...

  8. 基于角色访问控制RBAC权限模型的动态资源访问权限管理实现

    RBAC权限模型(Role-Based Access Control) 前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管 ...

  9. jenkins配置01--用户添加及权限配置

    原文出自:https://www.cnblogs.com/kevingrace/p/6019707.html 下面重点记录下jenkins安装后的一些配置: (1)添加用户权限 jenkins初次登陆 ...

随机推荐

  1. tomcat8配置SSL

    参考网址:http://www.micmiu.com/enterprise-app/sso/sso-cas-sample/#viewSource 1.生成证书 keytool -genkey -ali ...

  2. jmeter之使用代理录制脚本

    从loadrunner到jmeter,录制压力测试脚本好像都只支持IE,近来才知道jmeter还有自带的录制脚本元件, 且支持IE.Chrome及Firefox等多种浏览器.这里就记录一下通过jmet ...

  3. vue系列之生命周期

    代码: <body> <div id="app"> {{message}} </div> <script type="text/ ...

  4. 关卡得分(if 嵌套for)与(for嵌套if)

  5. 选择一个 HTTP 状态码不再是一件难事 – Racksburg《转载》

    本文转载自:众成翻译 译者:十年踪迹 链接:http://www.zcfy.cc/article/904 原文:http://racksburg.com/choosing-an-http-status ...

  6. dede 相关推荐调用

    {dede:likeart row=5 titlelen=40} <div class="xl12 xs6 xm4 xb3 proitem"> <a href=& ...

  7. ambari下的flume和kafka整合

    1.配置flume #扫描指定文件配置 agent.sources = s1 agent.channels = c1 agent.sinks = k1 agent.sources.s1.type=ex ...

  8. oracle分区表彻底删除的办法,处理删不掉的不规则表名

    Oracle分区表彻底删除的办法当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:SQL> select distinct t ...

  9. 详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    现在大街小巷的商家都在使用微信支付,但是一些商家使用的是个人微信收款,这个虽然很便利,但是如果你想要数据统计汇总,让客户在网络上在线付款,就需要用到微信的h5支付. 微信h5支付 今天子恒老师跟你分享 ...

  10. 注解工具ButterKnife用法和注意点

    // implementation 'com.android.support:appcompat-v7:28.0.0-Beta1' // implementation 'com.android.sup ...