jenkins修改安全策略,权限设置丢失

发布时间:2020-04-03 10:02:31编辑:admin阅读(317)

    一、概述

    默认的jenkins用户权限,通过插件Role-based Authorization Strategy来设置的。

    安装策略如下:

    1.png

     

     

    由于调式gitlab webhook自动提交部署,网上文章说,需要调整安全策略为:

    1.png

     

     

     

    保存之后,发现Manage and Assign Roles中的manage-roles只有admin,其他的权限都没有了。

    1.png

     

     

    普通用户登录之后,提示没有权限。

    由于改之前,忘了对$JENKINS_HONE/config.xml 做备份,这咋办呢?

    难道一个个重建?这么多用户,重建工作比较累。

     

    二、恢复权限

    最近的config.xml没有,但是2个月前的config.xml还有一份。不能直接拿这个文件直接覆盖掉,否则会导致很多Jenkins job丢弃。

    config.xml大致结构如下:

    复制代码

    <?xml version='1.1' encoding='UTF-8'?>
    <hudson>
      <disabledAdministrativeMonitors>
        <string>hudson.diagnosis.ReverseProxySetupMonitor</string>
      </disabledAdministrativeMonitors>
      <version>2.164.2</version>
      <installStateName>RESTART</installStateName>
      <numExecutors>3</numExecutors>
      <mode>NORMAL</mode>  <useSecurity>true</useSecurity>
      <authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
          <roleMap type="globalRoles">
          <roleMap type="projectRoles">
          <roleMap type="slaveRoles">
      </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"/>
      <jdks>
        <jdk>
          <name>JDK1.8.0_144</name>
          <home>/data/jdk1.8.0_144</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>
          <description>建立job后默认分类ALL</description>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
        </hudson.model.AllView>
          <listView></listView>
          </views>
      <primaryView>all</primaryView>
      <slaveAgentPort>0</slaveAgentPort>
      <label></label>
      <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
        <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
      </crumbIssuer>
      <nodeProperties/>
      <globalNodeProperties/>
    </hudson>

    复制代码

    将<useSecurity>true</useSecurity>到<scmCheckoutRetryCount>0</scmCheckoutRetryCount> 这部分内容替换掉。

    再次重启jenkins,查看权限,就恢复好了

    1.png

     

    最后申明一下,gitlab webhook自动提交部署,不需要修改安全策略:登录用户可以做任何事。

    出现403的原因是,jenkins job的token和gitlab设置的token不一致导致的。改成一样,就可以了,出现http 200表示成功。

     


关键字