从零开始配置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。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010066934/article/details/50556278
个人分类: 【系统运维】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭