从零开始配置Jenkins(三)——用户权限管理

背景

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

用户

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

在系统设置,Configure Global Security下

从零开始配置Jenkins(三)——用户权限管理_第1张图片


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

从零开始配置Jenkins(三)——用户权限管理_第2张图片

查看用户列表

从零开始配置Jenkins(三)——用户权限管理_第3张图片

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

权限
同样,打开Configure Global Security
从零开始配置Jenkins(三)——用户权限管理_第4张图片

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

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

<useSecurity>trueuseSecurity>
  <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>falsedisableSignup>
    <enableCaptcha>falseenableCaptcha>
  securityRealm>

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

2)安全矩阵

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

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

从零开始配置Jenkins(三)——用户权限管理_第5张图片

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

Slave
从节点的相关操作,包括断开、连接、创建等。
从零开始配置Jenkins(三)——用户权限管理_第6张图片

Job
对应每一个maven项目,操作包括:构建、编辑配置、删除等
从零开始配置Jenkins(三)——用户权限管理_第7张图片

View
视图模块,用来管理Job。
从零开始配置Jenkins(三)——用户权限管理_第8张图片

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


<hudson>
  <disabledAdministrativeMonitors/>
  <version>1.644version>
  <numExecutors>2numExecutors>
  <mode>NORMALmode>
  
  <useSecurity>trueuseSecurity>
  <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
    <permission>hudson.model.Computer.Build:adminpermission>
    <permission>hudson.model.Computer.Configure:adminpermission>
    <permission>hudson.model.Computer.Connect:adminpermission>
    <permission>hudson.model.Computer.Create:adminpermission>
    <permission>hudson.model.Computer.Delete:adminpermission>

    <permission>hudson.model.Computer.Disconnect:adminpermission>

    <permission>hudson.model.Hudson.Administer:adminpermission>

    <permission>hudson.model.Hudson.ConfigureUpdateCenter:adminpermission>

    <permission>hudson.model.Hudson.Read:adminpermission>

    <permission>hudson.model.Hudson.RunScripts:adminpermission>

    <permission>hudson.model.Hudson.UploadPlugins:adminpermission>

    <permission>hudson.model.Item.Build:adminpermission>
    <permission>hudson.model.Item.Cancel:adminpermission>
    <permission>hudson.model.Item.Configure:adminpermission>
    <permission>hudson.model.Item.Create:adminpermission>


  authorizationStrategy>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>falsedisableSignup>
    <enableCaptcha>falseenableCaptcha>
  securityRealm>
  <disableRememberMe>falsedisableRememberMe>
  <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
  <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}workspaceDir>
  <buildsDir>${ITEM_ROOTDIR}/buildsbuildsDir>
  <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
  
  <jdks>
    <jdk>
      <name>JDKname>
      <home>/usr/local/jdk1.8home>
      <properties/>
    jdk>
  jdks>
  <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
  <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
  <clouds/>
  <quietPeriod>5quietPeriod>
  <scmCheckoutRetryCount>0scmCheckoutRetryCount>
  
  <views>
    <hudson.model.AllView>
      <owner class="hudson" reference="../../.."/>
      <name>Allname>
      <filterExecutors>falsefilterExecutors>
      <filterQueue>falsefilterQueue>
      <properties class="hudson.model.View$PropertyList"/>
    hudson.model.AllView>

    
    <listView>
      <owner class="hudson" reference="../../.."/>
      <name>itoo-basic-225name>
      <filterExecutors>falsefilterExecutors>
      <filterQueue>falsefilterQueue>
      <properties class="hudson.model.View$PropertyList"/>
      
      <jobNames>
        <comparator class="hudson.util.CaseInsensitiveComparator"/>
        <string>itoo-base-parentstring>
        <string>itoo-basic-apistring>
        <string>itoo-basic-course-corestring>
        <string>itoo-basic-course-earstring>
        <string>itoo-basic-course-webstring>

      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>falserecurse>
    listView>
  
    <listView>
      <owner class="hudson" reference="../../.."/>
      <name>platformname>
      <filterExecutors>falsefilterExecutors>
      <filterQueue>falsefilterQueue>
      <properties class="hudson.model.View$PropertyList"/>
      <jobNames>
        <comparator class="hudson.util.CaseInsensitiveComparator" reference="../../../listView/jobNames/comparator"/>
        <string>itoo-basestring>
        <string>itoo-easyuistring>
        <string>itoo-excelV2.0-apistring>
        <string>itoo-rootstring>
      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>falserecurse>
    listView>

  views>
  <primaryView>AllprimaryView>
  <slaveAgentPort>0slaveAgentPort>
  <label>label>
  <nodeProperties/>
  <globalNodeProperties/>
hudson>

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

转载于:https://www.cnblogs.com/saixing/p/6730239.html

你可能感兴趣的:(从零开始配置Jenkins(三)——用户权限管理)