193 lines
4.7 KiB
Markdown
193 lines
4.7 KiB
Markdown
# 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. 设置备份策略
|
||
|
||
如有问题,请查看日志文件或联系系统管理员。
|