咱们进入系统设置 > 全局安全配置,在这里能够配置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用户的认证管理。后续咱们来说解如何为项目和用户受权。