4.7 KiB
4.7 KiB
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. 验证部署
访问服务
- GitLab: http://localhost:8880
- phpLDAPadmin: http://localhost:8081
- LDAP管理系统: http://localhost:8080/ldap-demo/web/
测试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
添加更多用户
您可以通过以下方式添加用户:
- 使用phpLDAPadmin Web界面 (http://localhost:8081)
- 使用您的LDAP管理系统 (http://localhost:8080/ldap-demo/web/)
- 使用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
故障排除
常见问题
-
GitLab无法连接LDAP
- 检查容器网络连接
- 验证LDAP服务器是否正常运行
- 检查防火墙设置
-
LDAP用户无法登录GitLab
- 验证用户DN格式
- 检查用户密码
- 查看GitLab日志
-
权限问题
- 确保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
安全建议
- 更改默认密码: 修改LDAP管理员密码
- 启用TLS: 在生产环境中启用LDAP over TLS
- 网络隔离: 使用防火墙限制LDAP服务器访问
- 定期备份: 备份LDAP数据和GitLab配置
- 监控日志: 定期检查认证日志
下一步
- 测试LDAP用户登录GitLab
- 配置GitLab项目权限
- 设置LDAP组到GitLab角色的映射
- 配置邮件通知
- 设置备份策略
如有问题,请查看日志文件或联系系统管理员。