我们进入系统设置 > 全局安全配置,在这里可以配置jenkins的用户认证和授权策略。
在配置之前还是要嘱咐一句,由于配置失败或者不当可能会影响后续用户的登录。在此建议大家首先在测试环境进行测试。可以提前将${JENKINS_HOME}/config.xml
备份一下,然后配置失败的时候迅速还原。
还有一种情况,配置gitlab和jenkins用户认证时弄的jenkins没有权限了。修改${JENKINS_HOME}/config.xml
中的
true
为false
以关闭Jenkins的权限认证,然后重启Jenkins,重新配置管理的权限,然后开启权限认证功能。可以暂时开启允许任何人访问。
我们先来看Authentication
部分,Jenkins默认使用的Jenkins专有用户数据库
管理用户,支持LDAP、GitHub、GitLab等认证集成。但是同时只能配置一种认证集成方式。我们主要配置这三种认证。
1.1 Jenkins 专有用户数据库
系统管理>安全>管理用户, 可以对系统用户增删改查。
我们来创建一个普通的用户zeyang
。
创建完成后,我们进入${JENKINSS_HOME}/users
目录下可以看到如下内容:
[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页面中更新。
更新完成后,点击保存。则会更新${JENKINS_HOME}/users
目录下该用户目录对应的config.xml
文件。类似下面这样:
10
zeyang
zeyangli
Chinese
all
false
false
default
d93c5425095c7688
true
#jbcrypt:$2a$10$KwFJ/S69z8S/wf65xnyFB.iUEbsNWJCN0gKlD8AkOyL.k2cgKVLSO
[email protected]
1.2 LDAP认证集成
LDAP系统是用于统一管理用户,关于LDAP服务的部署,在测试环境推荐用Docker部署更加方便些。基本上企业中都会有现成的LDAP服务,所以我们的重点是拿到系统信息即可,在jenkins
与LDAP
能够正常通信的前提下,你可能需要需要的信息:
- LDAP服务器地址:ldap://192.168.1.200
- LDAP服务器端口:389
- 用于认证集成组织OU信息: ou=jenkins,dc=devops,dc=com
- 用于集成时具有查询权限的用户:cn=admin,dc=devops,dc=com
首先,我需要在Jenkins系统中安装LDAP
插件,然后进入系统管理 >全局安全配置。
填写好信息之后,我们可以点击测试按钮进行测试。会模拟用户登录,成功后再保存配置即可。
1.3 GitLab单点登录
为什么要配置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
模式哦
1.4 GitHub单点登录
配置的GitHub集成与GitLab配置很类似: 首先登录GitHub, settings -> Developer Settings -> Oauth Apps。
新建应用:填写Jenkins回调地址http://jenkinsserver:8080/securityRealm/finishLogin
。
保存,获取应用ID和secret。
接下来我们需要在Jenkins系统中安装插件Github Authentication
, 然后导航全局安全配置。 填写GitHub系统地址和上面在GitHub创建的应用的ApplicationId
secret
。
最终的效果如下:
到此,我们完成了Jenkins用户的认证管理。后续我们来讲解如何为项目和用户授权。
DevOps流水线实践教程已上线,需要的同学可以点击链接获取哦。
https://edu.51cto.com/sd/36f6e