咱們進入系統設置 > 全局安全配置,在這裏能夠配置jenkins的用戶認證和受權策略。git
在配置以前仍是要囑咐一句,因爲配置失敗或者不當可能會影響後續用戶的登陸。在此建議你們首先在測試環境進行測試。能夠提早將${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等認證集成。可是同時只能配置一種認證集成方式。咱們主要配置這三種認證。安全
系統管理>安全>管理用戶, 能夠對系統用戶增刪改查。服務器
咱們來建立一個普通的用戶zeyang
。dom
建立完成後,咱們進入${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_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>
LDAP系統是用於統一管理用戶,關於LDAP服務的部署,在測試環境推薦用Docker部署更加方便些。基本上企業中都會有現成的LDAP服務,因此咱們的重點是拿到系統信息便可,在jenkins
與LDAP
可以正常通訊的前提下,你可能須要須要的信息:
首先,我須要在Jenkins系統中安裝LDAP
插件,而後進入系統管理 >全局安全配置。
填寫好信息以後,咱們能夠點擊測試按鈕進行測試。會模擬用戶登陸,成功後再保存配置便可。
爲何要配置GitLab單點登陸呢? 以前有這樣的一個場景,每次開發人員登陸Jenkins和其餘系統的時候都須要再次填寫登陸信息。增長了工具鏈之間的跳轉成本。爲了解決這樣的問題,咱們能夠以GitLab爲中心配置單點登陸。配置過程分爲兩部分:GitLab建立應用、Jenkins配置Gitlab插件信息。
首先,咱們須要使用管理員帳號在GitLab中添加一個應用。系統設置 > 應用管理 > 新建應用。
填寫Jenkins回調地址http://jenkinsserver:8080/securityRealm/finishLogin
,勾選權限默認具備read_user
權限便可。(這裏的地址填寫的是jenkins的實際地址)保存配置,會提示下面的信息:
OK,這些信息後續須要填寫到Jenkins中。ApplicationID
secret
。咱們開始配置Jenkins。咱們須要在Jenkins系統中安裝插件Gitlab Authentication
, 而後導航到全局安全配置,填寫Gitlab系統地址和上面在Gitlab建立的應用的ApplicationId
secret
。
到此就配置完成了。注意:當Jenkins前面有代理的時候可能會出現跳轉錯誤的問題。這時候須要看下提示錯誤的redirect URL地址,檢查下圖配置。 若是下圖配置沒有問題,請檢查代理的配置問題。另外要注意是http
模式哦
配置的GitHub集成與GitLab配置很相似: 首先登陸GitHub, settings -> Developer Settings -> Oauth Apps。
新建應用:填寫Jenkins回調地址http://jenkinsserver:8080/securityRealm/finishLogin
。
保存,獲取應用ID和secret。
接下來咱們須要在Jenkins系統中安裝插件Github Authentication
, 而後導航全局安全配置。 填寫GitHub系統地址和上面在GitHub建立的應用的ApplicationId
secret
。
最終的效果以下:
到此,咱們完成了Jenkins用戶的認證管理。後續咱們來說解如何爲項目和用戶受權。