Jenkins系统用户认证配置管理

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践

d28e6b8642597a649ad9ce7b05b313b1.gif

今天是「DevOps云学堂」与你共同进步的第 13 

关注公众号,回复 devops,免费加入DevOps学习群

获得问题解析、DevOps解决方案指导



a8204c0c68aeff5ef661d473751b2d67.png


Jenkins系统用户管理

  • 1.1 Jenkins 专有用户数据库

  • 1.2 LDAP认证集成

  • 1.3 GitLab单点登录

  • 1.4 GitHub单点登录

我们进入系统设置 > 全局安全配置,在这里可以配置jenkins的用户认证和授权策略。

06d8e494923879c943bd9a0daff9a9d8.png


在配置之前还是要嘱咐一句,由于配置失败或者不当可能会影响后续用户的登录。在此建议大家首先在测试环境进行测试。可以提前将${JENKINS_HOME}/config.xml备份一下,然后配置失败的时候迅速还原。

还有一种情况,配置gitlab和jenkins 用户认证时弄的jenkins没有权限了。修改${JENKINS_HOME}/config.xml中的<useSecurity>true</usrSecurity><useSecurity>false</usrSecurity>以关闭Jenkins的权限认证,然后重启Jenkins,重新配置管理的权限,最后开启权限认证功能。可以暂时开启允许任何人访问。

我们先来看Authentication部分,Jenkins默认使用的Jenkins专有用户数据库管理用户,支持LDAP、GitHub、GitLab等认证集成。但是同时只能配置一种认证集成方式。我们主要配置这三种认证。

1.1 Jenkins 专有用户数据库

系统管理>安全>管理用户, 可以对系统用户增删改查。

614c121495058f1f17ffaa557b57659f.png


我们来创建一个普通的用户zeyang

ed66ee1645571db336fcdaf713e3571d.png


创建完成后,我们进入${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页面中更新。

e3eee32213d5d5e45d4b4956596252ee.png

更新完成后,点击保存。则会更新${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插件,然后进入系统管理 >全局安全配置。

8c0dd231f22ea36005fedb828b14d2f2.png

填写好信息之后,我们可以点击测试按钮进行测试。会模拟用户登录,成功后再保存配置即可。

5e197486e179f6b7009b1054a2ae6fc1.png


1.3 GitLab单点登录

为什么要配置GitLab单点登录呢?之前有这样的一个场景,每次开发人员登录Jenkins和其他系统的时候都需要再次填写登录信息。增加了工具链之间的跳转成本。为了解决这样的问题,我们可以以GitLab为中心配置单点登录。配置过程分为两部分:GitLab创建应用、Jenkins配置Gitlab插件信息。

首先,我们需要使用管理员账号在GitLab中添加一个应用。系统设置 > 应用管理 > 新建应用。

dec838e01eda78ea6ad1aca442a0a94a.png


填写Jenkins回调地址http://jenkinsserver:8080/securityRealm/finishLogin,勾选权限默认具有read_user权限即可。(这里的地址填写的是jenkins的实际地址)保存配置,会提示下面的信息:

165a5329cc0a7e3d786834667876628d.png


OK,这些信息后续需要填写到Jenkins中。ApplicationID secret。我们开始配置Jenkins。我们需要在Jenkins系统中安装插件Gitlab Authentication, 然后导航到全局安全配置,填写Gitlab系统地址和上面在Gitlab创建的应用的ApplicationId secret

416730268900aee4cd59f07fc4f9a4af.png


到此就配置完成了。注意:当Jenkins前面有代理的时候可能会出现跳转错误的问题。这时候需要看下提示错误的redirect URL地址,检查下图配置。如果下图配置没有问题,请检查代理的配置问题。另外要注意是http模式哦

fbc8a92e0409b5d8fb518a57c94a36f7.png



1.4 GitHub单点登录

配置的GitHub集成与GitLab配置很类似: 首先登录GitHub, settings -> Developer Settings -> Oauth Apps。

724096a8c2db8251086929d5a774bace.png


新建应用:填写Jenkins回调地址http://jenkinsserver:8080/securityRealm/finishLogin

2e058e51f01231feedf22e1e33d18c90.png


保存,获取应用ID和secret。

e499a4f1b06cdc3f7a5dad3e39253662.png


接下来我们需要在Jenkins系统中安装插件Github Authentication, 然后导航全局安全配置。填写GitHub系统地址和上面在GitHub创建的应用的ApplicationId secret

17fc479470a07027bc2dce95b7da09a9.png


最终的效果如下:

bdcf76664fe17ea82146ba090f3afa82.png



到此,我们完成了Jenkins用户的认证管理。大家按需配置即可。后续我们来讲解权限管理为项目和用户授权。

往期文章推荐

9c905b66dbadf22644cda6e6b779930c.png

73ea70307c885c20a0fbc95ca43bb0bd.jpeg

【新课上线】ArgoCD GitOps持续部署实践

63bce6c02ce02c0dba452f939fee4b61.jpeg

DevOps实施过程中要避免的10个陷阱

bf4d021ea75cbb33fe0203b37eb4bbe8.jpeg

加快GitLabCI流水线构建的一些方法

7c749f0f4bff4ed1617730bb0a32bd32.png

轻松搞懂云成本优化:FinOps,2023年一定要懂的热点趋势!

a3e4d6d08678964506c54c37798d84c2.jpeg

【直播回顾】2023/03月直播汇总

如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值