×

Gitlab AD 集成

hqy hqy 发表于2025-01-13 19:26:59 浏览11 评论0

抢沙发发表评论

简述

Gitlab支持集成LDAP用户认证系统。兼容包括Microsoft Active Directory, Apple Open Directory, Open LDAP, 与389 Server等。 演示使
用的版本是 Gitlab CE 11.8.2社区版,LDAP用户认证服务使用的是Microsoft Active Directory。 EE企业版支持更高级的功能,包括用
户组同步,同时支持多LDAP服务器等, 有需要可以安装EE版。

测试LDAP查询参数与查询条件

在修改Gitlab配置之前先测试一下是否可以正常从域控上获取用户信息。我这里设置了一个过滤条件,只获取LX_SE,LX_EE组内的用户。

修改配置文件

修改Gitlab的YAML格式配置模板 /etc/gitlab/gitlab.rb ,在其中添加以下内容。

mportant; border-radius: 0px 0px 4px 4px !important; border: 0px !important;">gitlab_rails['ldap_enabled'] = true# gitlab_rails['prevent_ldap_sign_in'] = 

###! **remember to close this block with 'EOS' below**
 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'AD 认证'
     host: '192.168.101.90'
     port: 389
     uid: 'sAMAccountName'
     bind_dn: 'CN=Administrator,CN=Users,DC=LX,DC=com,DC=cn' #认证用户
     password: 'password' #认证密码
     encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
     verify_certificates: true#     smartcard_auth: false
     active_directory: true#     allow_username_or_email_login: false#     lowercase_usernames: false
     block_auto_created_users: false
     base: 'DC=LX,DC=com,DC=cn'
     user_filter: '(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))'

参数详解:

label: AD认证窗口上显示的标题,仅起提示作用,请根据需要填写,配置成功后会出现在登录页面。
host: 用于AD认证的域控服务器。
bind_dn: 与AD交互所使用的的用户账号,由于域控禁用了anonymousbind,所以需要建立一个用户来进行交互。
encryption: 密码加密方式,我这里使用的明文。
user_filter: 用户登录权限控制,格式为LDAP查询条件,我这里是按用户组进行控制。

重新配置Gitlab

...
此处省略日志输出一万行
...
Running handlers:
Running handlers complete
Chef Client finished, 8/8/635 resources updated in 47 seconds
gitlab Reconfigured!

测试获取AD域用户列表

ldapsearch -h 192.168.101.90 -D administrator@LX.com.cn -w LANXIANG@LX0929 -b "DC=LX,DC=com,DC=cn" "(&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))" sAMAccountName# extended LDIF## LDAPv3# base <DC=LX,DC=com,DC=cn> with scope subtree# filter: (&(objectcategory=user)(|(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)(memberOf=CN=LX_SE,CN=Users,DC=LX,DC=com,DC=cn)))# requesting: sAMAccountName ## \E5\AD\99\E9\B9\8F\E9\A3\9E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cndn:: Q0495a2Z6bmP6aOeLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=sAMAccountName: waner# \E9\A9\AC\E5\BF\97\E5\87\AF, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cndn:: Q0496ams5b+X5YevLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=sAMAccountName: lisi# \E6\A2\81\E5\B0\8F\E7\A5\8E, \E8\BD\AF\E4\BB\B6\E7\AE\A1\E7\90\86\E9\83\A8, \
 E8\BD\AF\E4\BB\B6\E5\B7\A5\E7\A8\8B\E4\B8\AD\E5\BF\83, \E6\8A\80\E6\9C\AF\E4\B
 D\93\E7\B3\BB, \E5\8C\97\E6\96\B9\E5\BE\AE\E7\94\B5\E5\AD\90, \E5\8D\8A\E5\AF\
 BC\E4\BD\93\E4\BA\8B\E4\B8\9A\E7\BE\A4, \E5\8C\97\E6\96\B9\E5\8D\8E\E5\88\9B\E
 9\9B\86\E5\9B\A2, LX.com.cndn:: Q0495qKB5bCP56WOLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
 1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
 U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=sAMAccountName: zhangsan# search resultsearch: 2result: 0 Success# numResponses: 4# numEntries: 3

观察输出是否包含域用户账号。

重新启动Gitlab

gitlab-ctl restartok: run: alertmanager: (pid 28490) 1sok: run: gitaly: (pid 28502) 0sok: run: gitlab-monitor: (pid 28522) 1sok: run: gitlab-workhorse: (pid 28527) 0sok: run: logrotate: (pid 28538) 1sok: run: nginx: (pid 28548) 0sok: run: node-exporter: (pid 28556) 0sok: run: postgres-exporter: (pid 28560) 1sok: run: postgresql: (pid 28569) 0sok: run: prometheus: (pid 28577) 1sok: run: redis: (pid 28663) 0sok: run: redis-exporter: (pid 28689) 1sok: run: sidekiq: (pid 28703) 0sok: run: unico

登录Gitlab查看效果

image


打赏

本文链接:https://www.kinber.cn/post/4598.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客