简述

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配置之前先测试一下是否可以正常从域控上获取用户信息。我这里设置了一个过滤条件,只获取NMC_SE,NMC_EE组内的用户。

修改配置文件

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

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=nmc,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=nmc,DC=com,DC=cn'
user_filter: '(&(objectcategory=user)(|(memberOf=CN=NMC_SE,CN=Users,DC=nmc,DC=com,DC=cn)(memberOf=CN=NMC_SE,CN=Users,DC=nmc,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@nmc.com.cn -w NAURA@NMC0929 -b "DC=nmc,DC=com,DC=cn" "(&(objectcategory=user)(|(memberOf=CN=NMC_SE,CN=Users,DC=nmc,DC=com,DC=cn)(memberOf=CN=NMC_SE,CN=Users,DC=nmc,DC=com,DC=cn)))" sAMAccountName
# extended LDIF
#
# LDAPv3
# base <DC=nmc,DC=com,DC=cn> with scope subtree
# filter: (&(objectcategory=user)(|(memberOf=CN=NMC_SE,CN=Users,DC=nmc,DC=com,DC=cn)(memberOf=CN=NMC_SE,CN=Users,DC=nmc,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, nmc.com.cn
dn:: Q0495a2Z6bmP6aOeLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: sunpengfei # \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, nmc.com.cn
dn:: Q0496ams5b+X5YevLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: mazhikai # \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, nmc.com.cn
dn:: Q0495qKB5bCP56WOLE9VPei9r+S7tueuoeeQhumDqCxPVT3ova/ku7blt6XnqIvkuK3lv4MsT
1U95oqA5pyv5L2T57O7LE9VPeWMl+aWueW+rueUteWtkCxPVT3ljYrlr7zkvZPkuovkuJrnvqQsT1
U95YyX5pa55Y2O5Yib6ZuG5ZuiLERDPW5tYyxEQz1jb20sREM9Y24=
sAMAccountName: liangxiaoyi # search result
search: 2
result: 0 Success # numResponses: 4
# numEntries: 3
观察输出是否包含域用户账号。

重新启动Gitlab

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

登录Gitlab查看效果

centos Gitlab AD 集成的更多相关文章

  1. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  2. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  3. CentOS gitlab 安装配置

    CentOS gitlab 安装配置 2018-11-02 11:23:09   Visit  5 在/etc/yum.repos.d 目录下创建文件gitlab-ce.repo,使用国内的安装源 b ...

  4. nexus AD 集成配置

    nexus AD 集成配置 管理用户登录 点击设置图标-->LDAP-->Create connection 进入AD 集成配置页面 Connection配置 User and group ...

  5. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  6. Redmine与Windows AD集成设置

    Redmine的账号支持跟LDAP集成,以下是在WINDOWS AD账号的集成配置过程. 首先下载一个微软的dsquery.exe工具,用来查询自己的账户信息. C:\WINDOWS>dsque ...

  7. jenkins+Gitlab持续集成环境配置教程

    环境简介: Jenkins 2.156(本地win10) GitLab Enterprise Edition 10.1.4-ee (远程服务器) Apache Ant 1.9.13 (本地win10) ...

  8. Jenkins Gitlab持续集成打包平台搭建

    http://www.cnblogs.com/skyseraph/p/5695021.html 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的 ...

  9. 如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)

    From this lesson you will learn about 1,How to install and configure a docker based gitlab server 2, ...

随机推荐

  1. centos7下cups + samba共打印服务

    centos7下cups + samba共打印服务 2015年8月21日admin发表评论阅读评论   这个算是rhce课程的篇外篇,Samba除了提供文件共享外,也可以像windows下的共享一样提 ...

  2. Linux 操作系统(二)搜索文件命令find、locate、which、whereis、grep、wc

    以下命令均已在 Kali Linux 下验证. 1.find 命令 --1-- find /usr/share -name test.lst //精准搜索,文件名需要与-name后的内容一模一样包括后 ...

  3. Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)

    1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...

  4. 几年前,为什么我撸了一套RabbitMQ客户端?

    之前文章说过,如果使用 RabbitMQ,尽可能使用框架,而不要去使用 RabbitMQ 提供的 Java 版客户端. 细说起来,其实还是因为 RabbitMQ 客户端的使用有很多的注意事项,稍微不注 ...

  5. springboot整合JDBC出现Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.

    今天使用springboot整合JDBC的使用,开始使用的是 com.mysql.jdbc.Driver驱动 结果运行出现此异常 那我们根据提示要求来修改即可 把驱动改成最新的com.mysql.cj ...

  6. Go语言介绍(背景、特点)

    一.go语言的背景 Go是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go(又称 Golang)是 Google 的 Rob Pike(罗勃.派克),Ken Thompson(肯· ...

  7. Tensor基础实践

    Tensor基础实践 飞桨(PaddlePaddle,以下简称Paddle)和其他深度学习框架一样,使用Tensor来表示数据,在神经网络中传递的数据均为Tensor. Tensor可以将其理解为多维 ...

  8. GPU上如何优化卷积

    GPU上如何优化卷积 本文将演示如何在TVM中编写高性能卷积实现.我们以平方大小的输入张量和滤波器为例,假设卷积的输入是大批量的.在本例中,使用不同的布局来存储数据,以实现更好的数据局部性.缓冲区布局 ...

  9. 基于TensorRT的BERT实时自然语言理解(下)

    基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...

  10. Spring Cache缓存技术,Cacheable、CachePut、CacheEvict、Caching、CacheConfig注解的使用

    前置知识: 在Spring Cache缓存中有两大组件CacheManager和Cache.在整个缓存中可以有多个CacheManager,他们负责管理他们里边的Cache.一个CacheManage ...