zoukankan      html  css  js  c++  java
  • 从零开始配置Jenkins(三)——用户权限管理

    背景

    最近项目管理中需要对jenkins的权限进行区分和限定,就研究了一下下。顺道把用户和权限这块的内容分享给大家。

    用户

    要想创建用户,需要先设定允许用户注册。

    在系统设置,Configure Global Security下

    这里写图片描述


    设置完成后,进入“管理用户”,就可以创建用户了。

    这里写图片描述

    查看用户列表

    这里写图片描述

    用户这块基本上就这点东西,其他编辑操作也都很简单,接下来就是配置权限了。

    权限
    同样,打开Configure Global Security
    这里写图片描述

    这里主要通过授权策略来管理,总共四个选项,下面大致介绍下。
    1)没有权限限制

    两种情况:任何用户,特定用户可以做任何事
    对应的配置文件config.xml

    <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>false</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>

    有人会问,留这个选择干嘛,相当于没有权限管理嘛。小编亲身经历告诉大家,要不是这个设置,现在jenkins还瘫着呢。如果不小心将admin用户权限也回收了,只能来狠的了,进入jenkins的安装目录,将config文件替换成上面的配置就可以解决了。

    2)安全矩阵

    这块是最好玩的了,项目中目前用的是这种配置。这种配置细化了权限,划分为Overall,Credentials(凭证),Slave(从节点),Job,Run,View等。

    Credentials
    用来主从节点连接时的配置。

    这里写图片描述

    它的权限包括:创建、删除、更新等
    这里写图片描述

    Slave
    从节点的相关操作,包括断开、连接、创建等。
    这里写图片描述

    Job
    对应每一个maven项目,操作包括:构建、编辑配置、删除等
    这里写图片描述

    View
    视图模块,用来管理Job。
    这里写图片描述

    在具体项目中,根据角色不同,可以勾选相应的配置。配置完成后,可在config.xml中查看。
    小编把能看懂的加了点注释,大家感兴趣可以瞅瞅。

    <?xml version='1.0' encoding='UTF-8'?>
    <hudson>
      <disabledAdministrativeMonitors/>
      <version>1.644</version>
      <numExecutors>2</numExecutors>
      <mode>NORMAL</mode>
      <!--权限配置-->
      <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
        <permission>hudson.model.Computer.Build:admin</permission>
        <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.ConfigureUpdateCenter:admin</permission>
    
        <permission>hudson.model.Hudson.Read:admin</permission>
    
        <permission>hudson.model.Hudson.RunScripts:admin</permission>
    
        <permission>hudson.model.Hudson.UploadPlugins: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>
    
    
      </authorizationStrategy>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>false</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
      <disableRememberMe>false</disableRememberMe>
      <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
      <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
      <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
      <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
      <!--jdk配置-->
      <jdks>
        <jdk>
          <name>JDK</name>
          <home>/usr/local/jdk1.8</home>
          <properties/>
        </jdk>
      </jdks>
      <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
      <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
      <clouds/>
      <quietPeriod>5</quietPeriod>
      <scmCheckoutRetryCount>0</scmCheckoutRetryCount>
      <!--视图-->
      <views>
        <hudson.model.AllView>
          <owner class="hudson" reference="../../.."/>
          <name>All</name>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
        </hudson.model.AllView>
    
        <!--视图-->
        <listView>
          <owner class="hudson" reference="../../.."/>
          <name>itoo-basic-225</name>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
          <!--Job,对应每个maven项目-->
          <jobNames>
            <comparator class="hudson.util.CaseInsensitiveComparator"/>
            <string>itoo-base-parent</string>
            <string>itoo-basic-api</string>
            <string>itoo-basic-course-core</string>
            <string>itoo-basic-course-ear</string>
            <string>itoo-basic-course-web</string>
    
          </jobNames>
          <jobFilters/>
          <columns>
            <hudson.views.StatusColumn/>
            <hudson.views.WeatherColumn/>
            <hudson.views.JobColumn/>
            <hudson.views.LastSuccessColumn/>
            <hudson.views.LastFailureColumn/>
            <hudson.views.LastDurationColumn/>
            <hudson.views.BuildButtonColumn/>
          </columns>
          <recurse>false</recurse>
        </listView>
      <!--视图-->
        <listView>
          <owner class="hudson" reference="../../.."/>
          <name>platform</name>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
          <jobNames>
            <comparator class="hudson.util.CaseInsensitiveComparator" reference="../../../listView/jobNames/comparator"/>
            <string>itoo-base</string>
            <string>itoo-easyui</string>
            <string>itoo-excelV2.0-api</string>
            <string>itoo-root</string>
          </jobNames>
          <jobFilters/>
          <columns>
            <hudson.views.StatusColumn/>
            <hudson.views.WeatherColumn/>
            <hudson.views.JobColumn/>
            <hudson.views.LastSuccessColumn/>
            <hudson.views.LastFailureColumn/>
            <hudson.views.LastDurationColumn/>
            <hudson.views.BuildButtonColumn/>
          </columns>
          <recurse>false</recurse>
        </listView>
    
      </views>
      <primaryView>All</primaryView>
      <slaveAgentPort>0</slaveAgentPort>
      <label></label>
      <nodeProperties/>
      <globalNodeProperties/>
    </hudson>

    最后补充一点,jenkins的权限真的做的不错,即使我们的需求怎么变,他都有办法解决。比如设定每个子系统只看自己那块,这个需要jenkins插件完成不同角色查看不同jobs。

  • 相关阅读:
    python 函数参数
    文件操作总结
    时间模块总结
    代码编程规范
    javascript 学习
    Spring-扫描注解原理,注解自动扫描原理分析
    String中的intern方法
    Zookeeper服务注册与发现原理浅析
    一篇文章了解RPC框架原理
    如何设计一个秒杀系统
  • 原文地址:https://www.cnblogs.com/saixing/p/6730239.html
Copyright © 2011-2022 走看看