ldap-demo/GITLAB-LDAP-SETUP.md

4.7 KiB
Raw Blame History

GitLab LDAP集成部署指南

本指南将帮助您将现有的GitLab实例与LDAP服务器集成实现统一的用户认证。

部署方案

我们提供了两种部署方案:

方案一使用Docker Compose推荐

使用提供的 docker-compose.yml 文件一次性部署GitLab + OpenLDAP + phpLDAPadmin

方案二修改现有GitLab配置

修改您现有的GitLab容器配置以连接到LDAP服务器

快速开始

1. 停止现有的GitLab容器

docker stop gitlab
docker rm gitlab

2. 使用Docker Compose部署

# 在项目目录中运行
docker-compose up -d

这将启动以下服务:

  • OpenLDAP: LDAP服务器 (端口 389)
  • phpLDAPadmin: LDAP管理界面 (端口 8081)
  • GitLab: GitLab服务器 (端口 8880)

3. 初始化LDAP数据

等待所有容器启动后,导入初始数据:

# 将LDIF文件复制到OpenLDAP容器
docker cp ldap-init.ldif openldap:/tmp/

# 导入数据
docker exec openldap ldapadd -x -D "cn=admin,dc=example,dc=com" -w admin -f /tmp/ldap-init.ldif

4. 验证部署

访问服务

测试LDAP连接

# 测试LDAP连接
docker exec openldap ldapsearch -x -H ldap://localhost -b dc=example,dc=com -D "cn=admin,dc=example,dc=com" -w admin

配置说明

LDAP服务器配置

  • 服务器地址: openldap (容器内) / localhost:389 (外部)
  • 基础DN: dc=example,dc=com
  • 管理员DN: cn=admin,dc=example,dc=com
  • 管理员密码: admin
  • 用户基础: ou=people,dc=example,dc=com
  • 组基础: ou=groups,dc=example,dc=com

GitLab LDAP配置

GitLab已配置为

  • 允许LDAP用户登录
  • 自动创建LDAP用户账户
  • 支持用户名或邮箱登录
  • 映射LDAP属性到GitLab用户信息

测试用户

系统已创建以下测试用户:

用户名 密码 邮箱 角色
john.doe password123 john.doe@example.com Senior Developer developers
jane.smith password123 jane.smith@example.com Project Manager administrators
bob.wilson password123 bob.wilson@example.com DevOps Engineer developers

使用您现有的GitLab容器

如果您想继续使用现有的GitLab容器请按以下步骤操作

1. 启动LDAP服务器

# 只启动LDAP相关服务
docker-compose up -d openldap phpldapadmin

2. 修改GitLab配置

gitlab-ldap-config.rb 中的配置添加到您的GitLab配置文件 /d/23_Gitlab/DockerData/GitlabData/config/gitlab.rb

3. 重新配置GitLab

docker exec gitlab gitlab-ctl reconfigure
docker exec gitlab gitlab-ctl restart

自定义配置

修改LDAP域名

如果您想使用不同的域名,请修改以下文件:

  • docker-compose.yml 中的环境变量
  • ldap-init.ldif 中的DN
  • GitLab配置中的base DN

添加更多用户

您可以通过以下方式添加用户:

  1. 使用phpLDAPadmin Web界面 (http://localhost:8081)
  2. 使用您的LDAP管理系统 (http://localhost:8080/ldap-demo/web/)
  3. 使用LDIF文件和ldapadd命令

SSL/TLS配置

生产环境建议启用SSL/TLS

# 生成自签名证书(仅用于测试)
docker exec openldap openssl req -new -x509 -nodes -out /container/service/slapd/assets/certs/ldap.crt -keyout /container/service/slapd/assets/certs/ldap.key -days 365

故障排除

常见问题

  1. GitLab无法连接LDAP

    • 检查容器网络连接
    • 验证LDAP服务器是否正常运行
    • 检查防火墙设置
  2. LDAP用户无法登录GitLab

    • 验证用户DN格式
    • 检查用户密码
    • 查看GitLab日志
  3. 权限问题

    • 确保LDAP管理员有足够权限
    • 检查组映射配置

查看日志

# GitLab日志
docker logs gitlab

# LDAP日志
docker logs openldap

# GitLab LDAP调试
docker exec gitlab grep -i ldap /var/log/gitlab/gitlab-rails/production.log

测试LDAP认证

# 测试用户认证
docker exec openldap ldapwhoami -x -D "uid=john.doe,ou=people,dc=example,dc=com" -w password123

安全建议

  1. 更改默认密码: 修改LDAP管理员密码
  2. 启用TLS: 在生产环境中启用LDAP over TLS
  3. 网络隔离: 使用防火墙限制LDAP服务器访问
  4. 定期备份: 备份LDAP数据和GitLab配置
  5. 监控日志: 定期检查认证日志

下一步

  1. 测试LDAP用户登录GitLab
  2. 配置GitLab项目权限
  3. 设置LDAP组到GitLab角色的映射
  4. 配置邮件通知
  5. 设置备份策略

如有问题,请查看日志文件或联系系统管理员。