ldap-demo/GITLAB-LDAP-SETUP.md

193 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GitLab LDAP集成部署指南
本指南将帮助您将现有的GitLab实例与LDAP服务器集成实现统一的用户认证。
## 部署方案
我们提供了两种部署方案:
### 方案一使用Docker Compose推荐
使用提供的 `docker-compose.yml` 文件一次性部署GitLab + OpenLDAP + phpLDAPadmin
### 方案二修改现有GitLab配置
修改您现有的GitLab容器配置以连接到LDAP服务器
## 快速开始
### 1. 停止现有的GitLab容器
```bash
docker stop gitlab
docker rm gitlab
```
### 2. 使用Docker Compose部署
```bash
# 在项目目录中运行
docker-compose up -d
```
这将启动以下服务:
- **OpenLDAP**: LDAP服务器 (端口 389)
- **phpLDAPadmin**: LDAP管理界面 (端口 8081)
- **GitLab**: GitLab服务器 (端口 8880)
### 3. 初始化LDAP数据
等待所有容器启动后,导入初始数据:
```bash
# 将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连接
```bash
# 测试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服务器
```bash
# 只启动LDAP相关服务
docker-compose up -d openldap phpldapadmin
```
### 2. 修改GitLab配置
`gitlab-ldap-config.rb` 中的配置添加到您的GitLab配置文件
`/d/23_Gitlab/DockerData/GitlabData/config/gitlab.rb`
### 3. 重新配置GitLab
```bash
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
```bash
# 生成自签名证书(仅用于测试)
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管理员有足够权限
- 检查组映射配置
### 查看日志
```bash
# GitLab日志
docker logs gitlab
# LDAP日志
docker logs openldap
# GitLab LDAP调试
docker exec gitlab grep -i ldap /var/log/gitlab/gitlab-rails/production.log
```
### 测试LDAP认证
```bash
# 测试用户认证
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. 设置备份策略
如有问题,请查看日志文件或联系系统管理员。