`
m635674608
  • 浏览: 5042931 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

 
阅读更多

转自: 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

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

如上图,分别创建了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/itech/p/5192545.html

分享到:
评论

相关推荐

    jenkins项目配置说明

    1. **角色策略**:Jenkins支持基于角色的安全性,为不同用户分配不同权限,如读取、构建、配置等。 2. **插件管理**:安装必要的安全插件,如Matrix-based security,以增强系统安全性。 ### 九、保存与测试 1. *...

    Jenkins打包配置文件

    Jenkins支持多种安全模型,包括基于角色的访问控制(Role-Based Access Control, RBAC)、LDAP集成等。相关的配置文件通常在`/Users/用户名/.jenkins/secrets`和`/Users/用户名/.jenkins/copy_reference_file.log`...

    jenkins自动发布配置

    管理员需要根据实际情况配置权限,确保 Jenkins 系统的安全运行。 八、Jenkins 监控和维护 Jenkins 监控和维护是确保 Jenkins 系统稳定运行的重要方面。监控包括日志监控、性能监控、节点监控等方面。维护包括软件...

    jenkins 配置用户角色权限的实现方法

    在Jenkins中实现用户角色权限配置,首先需要借助专门的插件,如Role Strategy Plugin,来进行详细的角色管理。本文将详细介绍如何安装和配置该插件,并通过一系列步骤来设置用户和角色权限,实现基于角色的安全控制...

    Jenkins基于矩阵的授权策略_Java_HTML_下载.zip

    "基于矩阵的授权策略"是Jenkins中的一个重要安全特性,用于精细控制用户和团队对 Jenkins 实例的访问权限。在这个主题中,我们将深入探讨 Jenkins 的矩阵授权策略,以及如何在Java和HTML环境中进行配置。 矩阵授权...

    一个java版本的基于角色的权限管理系统.zip

    【标题】: "一个Java版本的基于角色的权限管理系统" 在IT行业中,权限管理系统是确保信息安全和业务流程规范的关键组成部分。对于一个基于Java的权限管理系统,我们主要关注以下几个核心知识点: 1. **Java编程...

    jenkins结合gitlab部署vue项目

    通过以上步骤,你就成功地配置了一个基于Jenkins和GitLab的持续部署流程。每次向GitLab仓库提交代码时,Jenkins会自动拉取最新代码,构建Vue项目,然后将其部署到目标服务器。这个过程极大地提高了开发效率,减少了...

    Jenkins+SVN+Ant持续集成环境配置笔记.pdf

    对Jenkins的设置需要理解其界面和各配置项的作用,能够正确配置项目源码管理、构建触发器等关键环节;同时,编写和维护Ant构建脚本也是实现自动化构建过程的重要部分。通过上述的配置过程,构建起了一个完整的持续...

    Jenkins安装及使用配置教程

    2. Jenkins 用户权限:Jenkins 登录后,点击左侧的系统管理菜单,右侧下拉,找到 Manage and Assign Roles 连接,选择 Assign Roles 连接添加用户,并给用户选择角色。 3. Jenkins 基本信息配置:找到系统设置功能,...

    Jenkins基础入门-5-用户和权限管理.rar

    5. Role-based Strategy Plugin(基于角色的策略插件):此插件提供更灵活的角色定义,允许创建自定义角色,并将用户分配到这些角色中,简化权限管理。 6. LDAP/Active Directory集成:对于大型组织,使用外部身份...

    Jenkins持续集成文档

    为了维护系统的安全性,Jenkins提供了基于角色的访问控制策略(Configure Global Security Role-Based Strategy),可以通过设置Global roles和project roles来定义不同的权限级别。例如,jenkinsglobalrole和...

    jenkins自动化构建

    - 在“系统管理”-&gt;“全局安全配置”页面中选择“基于角色的安全策略”(Role-Based Strategy)。 - 配置角色:通过“系统管理”-&gt;“管理与分配角色”(Manage and Assign Roles),创建不同的角色,并为其指定权限。 ...

    持续集成-Maven-nexus-SNV-jenkins架构

    Subversion是一种开源的版本控制系统,用于管理项目的源代码和文档。在持续集成的场景中,SVN充当源代码存储库的角色,开发者将代码提交至SVN仓库,确保每次提交都能被记录并可追溯。这为后续的集成、测试等环节提供...

    Jenkins_wendang.pdf

    授权策略方面,Jenkins采用了基于角色的安全策略,即Role_Based_Strategy。通过这种方式,我们可以根据用户的角色和职责以及产品系统及其开发阶段,建立全局角色和项目角色,为不同的用户建立授权矩阵,即用户访问...

    Jenkins 2.387.3

    Jenkins提供了丰富的安全性和权限管理机制,包括基于角色的访问控制(RBAC)、LDAP/AD集成、加密的凭证管理以及对构建历史和日志的保护。这些功能确保了只有授权用户才能访问和操作Jenkins实例。 **总结** Jenkins ...

    jenkins.war-2.356,适合JDK8的最后jenkins版本

    5. **权限管理**:Jenkins支持用户和角色管理,可以设定不同的访问权限,保障系统安全。 6. **监控与报表**:Jenkins提供详细的构建历史、性能报告和错误分析,帮助团队跟踪项目健康状况。 7. **蓝绿部署与滚动...

    Jenkins基础环境搭建安装包(初学者必备)+Jenkins基础知识.zip

    Jenkins支持多种安全模型,包括基于角色的访问控制(RBAC)、LDAP集成和安全插件,以保护你的构建环境。 总之,Jenkins为软件开发团队提供了强大的自动化能力,无论是小型项目还是大型企业级应用,都可以从中受益...

    Jenkins各种工具包

    同时,权限管理功能可以让团队根据角色分配不同的操作权限。 总之,"Jenkins各种工具包"涵盖了Jenkins的诸多方面,包括但不限于核心功能、插件扩展、配置实践、分布式构建以及安全控制。这个工具包对于那些希望优化...

    jenkins home

    - Jenkins 提供基于角色的访问控制(Role-Based Access Control, RBAC),配置文件和数据的安全性至关重要。可以通过 Jenkins 的安全设置来限制对 Jenkins Home 中敏感信息的访问。 7. **备份与恢复策略** - 定期...

Global site tag (gtag.js) - Google Analytics