Jenkins學習七:Jenkins的授權和訪問控制


默認的Jenkins不包含任何的安全檢查,任何人可以修改Jenkins設置,job和啟動build等。顯然地在大規模的公司需要多個部門一起協調工作的時候,沒有任何安全檢查會帶來很多的問題。 在系統管理-Configure Global Security頁面可以“訪問控制”進行相應的設置。如下圖:

Jenkins的權限配置文件存放在JENKINS_HOME目錄。進入JENKINS_HOME目錄,找到config.xml文件。打開config.xml,里面有一堆的東西,找找。。。找到了<useSecurity>和<authorizationStrategy>節點。<useSecurity>節點代表是否使用用戶權限,<authorizationStrategy>節點代表用戶權限是怎么划分的。

1) Security Realm,用來決定用戶名和密碼,且指定用戶屬於哪個組;
2) Authorization Strategy,用來決定用戶對那些資源有訪問權限;

 

一、詳細講解4種授權策略

1、任何用戶可以做任何事(沒有任何限制)

1)頁面設置如下圖:

2)config.xml腳本如下:

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

 

2、登錄用戶可以做任何事

1)頁面設置如下圖:

2)config.xml腳本如下:

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

 

3、安全矩陣

1)頁面設置如下圖:

2)config.xml腳本如下:

 <useSecurity>true</useSecurity>
  <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
    <permission>hudson.model.Hudson.Administer:jenkins</permission>
    <permission>hudson.model.Hudson.Read:anonymous</permission>
    <permission>hudson.model.Hudson.Read:dev</permission>
    <permission>hudson.model.Item.Build:dev</permission>
    <permission>hudson.model.Item.Read:anonymous</permission>
    <permission>hudson.model.Item.Read:dev</permission>
  </authorizationStrategy>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>false</disableSignup>
    <enableCaptcha>false</enableCaptcha>
  </securityRealm>

設置好權限之后,點擊注冊,注冊相應的賬號,如上圖的dev,jenkins。

 

4、項目矩陣授權策略

說明:安全矩陣項目矩陣授權策略的配置是一模一樣的,唯一的區別是項目矩陣授權策略支持在Job的配置頁面再次配置授權策略。

這種策略在工作中用得較多,比如針對不同的項目選擇不同的用戶具有不同權限。

1)頁面設置如下圖:

各種權限如下(在配置頁面將鼠標放到該權限上即可查看幫助):

 Overall(全局)
Credentials(憑證) Slave(節點) Job(任務) View(視圖)
Administer Read RunScripts UploadPlugins ConfigureUpdateCenter Create Update View Delete
ManageDomains
Configure Delete Create Disconnect Connect Build Create Delete Configure Read Discover Build Workspace Cancel Create Delete Configure Read
管理員(最大) 閱讀 運行腳本 升級插件 配置升級中心 創建 更新 查看 刪除 管理域 配置 刪除 創建 斷開連接 連接 構建 創建 刪除 配置 閱讀 重定向 構建 查看工作區 取消構建 創建 刪除 配置 閱讀

其中有一些比較特別的權限:

最大的權限是Overall的Administer,擁有該權限可以干任何事情。

最基本的權限是Overall的Read,用戶必須賦予閱讀的權限,不然什么都看不到。

Job的Discover權限是一個奇葩的權限,幫助說Discover比Read的級別更低。如果匿名用戶(沒有訪問job的權限)直接訪問一個Job的Url將重定向到登陸頁面。(經測試,這個權限應該是被廢棄了。)

Credentials的ManageDomains這個權限沒有看懂干嘛的,有懂的大家一起交流哈!

ps:如果有個用戶被賦予了Overall的Read,並沒有被賦予Job的Read權限,那么該用戶就無法訪問job。原因:沒有權限。

 

2)config.xml腳本如下:

<useSecurity>true</useSecurity>
  <authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
    <permission>hudson.model.Hudson.Administer:admin</permission>
    <permission>hudson.model.Hudson.Read:anonymous</permission>
    <permission>hudson.model.Item.Build:dev</permission>
    <permission>hudson.model.Item.Read:anonymous</permission>
    <permission>hudson.model.Item.Read:dev</permission>
  </authorizationStrategy>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>false</disableSignup>
    <enableCaptcha>false</enableCaptcha>
  </securityRealm>

 

3)每個用戶后都有1-2個圖標,第一個是反選功能(刪除當前已選擇的權限,選擇其他所有權限),第二個是刪除功能(刪除該用戶)

4)在Job中配置項目安全,如下圖:

 

 二、遇到的問題

由於授權出錯,導致無法登錄,具體可參考http://www.cnblogs.com/yangxia-test/p/4363566.html操作。

 

最后給大家說說在配置文件里面怎么辨別使用是哪種權限控制模式

<authorizationStrategy>節點上有個class屬性,這個屬性控制着使用那種授權模式。

 

hudson.security.FullControlOnceLoggedInAuthorizationStrategy 登錄用戶可以做任何事
hudson.security.ProjectMatrixAuthorizationStrategy 項目矩陣授權策略
hudson.security.GlobalMatrixAuthorizationStrategy 安全矩陣
hudson.security.LegacyAuthorizationStrategy 遺留模式

 


免責聲明!

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



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