jenkins修改安全策略,權限設置丟失


一、概述

默認的jenkins用戶權限,通過插件Role-based Authorization Strategy來設置的。

安裝策略如下:

 

 

由於調式gitlab webhook自動提交部署,網上文章說,需要調整安全策略為:

 

 

 

保存之后,發現Manage and Assign Roles中的manage-roles只有admin,其他的權限都沒有了。

 

 

普通用戶登錄之后,提示沒有權限。

由於改之前,忘了對$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,查看權限,就恢復好了

 

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

出現403的原因是,jenkins job的token和gitlab設置的token不一致導致的。改成一樣,就可以了,出現http 200表示成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM