新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

咱們進入系統設置 > 全局安全配置,在這裏能夠配置jenkins的用戶認證和受權策略。git

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

在配置以前仍是要囑咐一句,因爲配置失敗或者不當可能會影響後續用戶的登陸。在此建議你們首先在測試環境進行測試。能夠提早將${JENKINS_HOME}/config.xml備份一下,而後配置失敗的時候迅速還原。web

還有一種狀況,配置gitlab和jenkins用戶認證時弄的jenkins沒有權限了。修改${JENKINS_HOME}/config.xml中的數據庫

<useSecurity>true</usrSecurity>
爲<useSecurity>false</usrSecurity>

以關閉Jenkins的權限認證,而後重啓Jenkins,從新配置管理的權限,而後開啓權限認證功能。能夠暫時開啓容許任何人訪問。api

咱們先來看Authentication部分,Jenkins默認使用的Jenkins專有用戶數據庫管理用戶,支持LDAP、GitHub、GitLab等認證集成。可是同時只能配置一種認證集成方式。咱們主要配置這三種認證。安全

1.1 Jenkins 專有用戶數據庫

系統管理>安全>管理用戶, 能夠對系統用戶增刪改查。服務器

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

咱們來建立一個普通的用戶zeyangdom

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

建立完成後,咱們進入${JENKINSS_HOME}/users目錄下能夠看到以下內容:ide

[root@zeyang-nuc-service users]# ls
admin_3285798656405222668  users.xml  zeyang_1686679553273142732

Jenkins的全部配置都是採用文件存儲,即xml文件。 在這裏users目錄包含了兩部分數據:用戶文件夾和全部用戶信息配置文件users.xml。 Jenkins默認在users目錄下建立一個與用戶同名的文件夾存儲該用戶的配置信息,保存在該目錄下的config.xml文件中。工具

[root@zeyang-nuc-service users]# ls zeyang_1686679553273142732/
config.xml

這個config.xml文件中包含了用戶的配置信息,這些信息均可以在web頁面中更新。gitlab

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

更新完成後,點擊保存。則會更新${JENKINS_HOME}/users目錄下該用戶目錄對應的config.xml文件。相似下面這樣:

<?xml version='1.1' encoding='UTF-8'?>
<user>
  <version>10</version>
  <id>zeyang</id>
  <fullName>zeyangli</fullName>
  <properties>
    <jenkins.security.ApiTokenProperty>
      <tokenStore>
        <tokenList/>
      </tokenStore>
    </jenkins.security.ApiTokenProperty>
    <io.jenkins.plugins.localization__zh__cn.UserCommunityProperty plugin="localization-zh-cn@1.0.17">
      <showCondition>Chinese</showCondition>
    </io.jenkins.plugins.localization__zh__cn.UserCommunityProperty>
    <com.cloudbees.plugins.credentials.UserCredentialsProvider_-UserCredentialsProperty plugin="credentials@2.3.12">
      <domainCredentialsMap class="hudson.util.CopyOnWriteMap$Hash"/>
    </com.cloudbees.plugins.credentials.UserCredentialsProvider_-UserCredentialsProperty>
    <hudson.plugins.emailext.watching.EmailExtWatchAction_-UserProperty plugin="email-ext@2.69">
      <triggers/>
    </hudson.plugins.emailext.watching.EmailExtWatchAction_-UserProperty>
    <hudson.model.MyViewsProperty>
      <views>
        <hudson.model.AllView>
          <owner class="hudson.model.MyViewsProperty" reference="../../.."/>
          <name>all</name>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
        </hudson.model.AllView>
      </views>
    </hudson.model.MyViewsProperty>
    <org.jenkinsci.plugins.displayurlapi.user.PreferredProviderUserProperty plugin="display-url-api@2.3.3">
      <providerId>default</providerId>
    </org.jenkinsci.plugins.displayurlapi.user.PreferredProviderUserProperty>
    <hudson.model.PaneStatusProperties>
      <collapsed/>
    </hudson.model.PaneStatusProperties>
    <jenkins.security.seed.UserSeedProperty>
      <seed>d93c5425095c7688</seed>
    </jenkins.security.seed.UserSeedProperty>
    <hudson.search.UserSearchProperty>
      <insensitiveSearch>true</insensitiveSearch>
    </hudson.search.UserSearchProperty>
    <hudson.model.TimeZoneProperty/>
    <hudson.security.HudsonPrivateSecurityRealm_-Details>
      <passwordHash>#jbcrypt:$2a$10$KwFJ/S69z8S/wf65xnyFB.iUEbsNWJCN0gKlD8AkOyL.k2cgKVLSO</passwordHash>
    </hudson.security.HudsonPrivateSecurityRealm_-Details>
    <hudson.tasks.Mailer_-UserProperty plugin="mailer@1.32">
      <emailAddress>zeyangli@test.com</emailAddress>
    </hudson.tasks.Mailer_-UserProperty>
  </properties>
</user>

1.2 LDAP認證集成

LDAP系統是用於統一管理用戶,關於LDAP服務的部署,在測試環境推薦用Docker部署更加方便些。基本上企業中都會有現成的LDAP服務,因此咱們的重點是拿到系統信息便可,在jenkinsLDAP可以正常通訊的前提下,你可能須要須要的信息:

  • LDAP服務器地址:ldap://192.168.1.200
  • LDAP服務器端口:389
  • 用於認證集成組織OU信息: ou=jenkins,dc=devops,dc=com
  • 用於集成時具備查詢權限的用戶:cn=admin,dc=devops,dc=com

首先,我須要在Jenkins系統中安裝LDAP插件,而後進入系統管理 >全局安全配置。

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

填寫好信息以後,咱們能夠點擊測試按鈕進行測試。會模擬用戶登陸,成功後再保存配置便可。

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理


1.3 GitLab單點登陸

爲何要配置GitLab單點登陸呢? 以前有這樣的一個場景,每次開發人員登陸Jenkins和其餘系統的時候都須要再次填寫登陸信息。增長了工具鏈之間的跳轉成本。爲了解決這樣的問題,咱們能夠以GitLab爲中心配置單點登陸。配置過程分爲兩部分:GitLab建立應用、Jenkins配置Gitlab插件信息。

首先,咱們須要使用管理員帳號在GitLab中添加一個應用。系統設置 > 應用管理 > 新建應用。

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

填寫Jenkins回調地址http://jenkinsserver:8080/securityRealm/finishLogin,勾選權限默認具備read_user權限便可。(這裏的地址填寫的是jenkins的實際地址)保存配置,會提示下面的信息:

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

OK,這些信息後續須要填寫到Jenkins中。ApplicationID secret。咱們開始配置Jenkins。咱們須要在Jenkins系統中安裝插件Gitlab Authentication, 而後導航到全局安全配置,填寫Gitlab系統地址和上面在Gitlab建立的應用的ApplicationId secret

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

到此就配置完成了。注意:當Jenkins前面有代理的時候可能會出現跳轉錯誤的問題。這時候須要看下提示錯誤的redirect URL地址,檢查下圖配置。 若是下圖配置沒有問題,請檢查代理的配置問題。另外要注意是http模式哦
新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理


1.4 GitHub單點登陸

配置的GitHub集成與GitLab配置很相似: 首先登陸GitHub, settings -> Developer Settings -> Oauth Apps。

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

新建應用:填寫Jenkins回調地址http://jenkinsserver:8080/securityRealm/finishLogin

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

保存,獲取應用ID和secret。

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

接下來咱們須要在Jenkins系統中安裝插件Github Authentication, 而後導航全局安全配置。 填寫GitHub系統地址和上面在GitHub建立的應用的ApplicationId secret

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理

最終的效果以下:

新Jenkins實踐-第4章 Jenkins系統用戶認證配置管理


到此,咱們完成了Jenkins用戶的認證管理。後續咱們來說解如何爲項目和用戶受權。

DevOps流水線實踐教程已上線,須要的同窗能夠點擊連接獲取哦。

https://edu.51cto.com/sd/36f6e

相關文章
相關標籤/搜索