GitLab AD/LDAP配置说明
GitLab AD/LDAP配置说明
November 3, 2023
1. AD/LDAP集成
1.1 配置
修改 /etc/gitlab/gitlab.rb,内容如下:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_servers'] = {
'main' => {
# 登录页显示名称
'label' => 'LDAP',
# AD/LDAP域名或IP
'host' => 'ldap.mydomain.com',
# AD/LDAP端口
'port' => 389,
# LDAP映射到GitLab用户的唯一ID,如sAMAccountName是将LDAP的用户名作为GitLab用户的UID
'uid' => 'sAMAccountName',
# LDAP管理员DN
'bind_dn' => 'xxx@xxx.com 或 CN=Gitlab,OU=Users,DC=domain,DC=com',
# LDAP管理员密码
'password' => 'xxxxxx',
# LDAP TLS相关,若encryption=plain,则不使用TLS通信,也不需要配置verify_certificates和tls_options
'encryption' => 'simple_tls',
'verify_certificates' => true,
'tls_options' => {
'ca_file' => '',
'ssl_version' => '',
'ciphers' => '',
'cert' => '',
'key' => ''
},
'timeout' => 10,
# AD域为true,其他LDAP为false
'active_directory' => true,
'allow_username_or_email_login' => false,
# 设置为true,自动将LDAP创建的GitLab新账号设置为Block防止许可证超用,需GitLab管理员解除Block
'block_auto_created_users' => false,
# AD/LDAP用户的base
'base' => 'dc=domain,dc=com',
# LDAP过滤器,无需要可置空
'user_filter' => '',
# GitLab用户属性与LDAP属性的映射关系
'attributes' => {
'username' => ['uid', 'userid', 'sAMAccountName'],
'email' => ['mail', 'email', 'userPrincipalName'],
'name' => 'cn',
'first_name' => 'givenName',
'last_name' => 'sn'
},
'lowercase_usernames' => false,
# 企业版功能
# LDAP组同步需要设置group_base,可以base保持一致
'group_base' => 'OU=Users,DC=domain,DC=com',
# 作为GitLab管理员的AD/LDAP组,仅需要写CN,该CN需要在group_base覆盖下
'admin_group' => 'gitlab',
'external_groups' => [],
'sync_ssh_keys' => false
}
}修改完成后运行gitlab-ctl reconfigure命令。
1.2 说明
- 对于新用户,需要在GitLab中登录一次才会创建GitLab账号,GitLab不会自动创建LDAP新增的用户。此外可设置block_auto_create_user将通过LDAP新创建的GitLab账号设置为block状态,需GitLab管理员批准后才能正常使用,防止无效用户占用许可证席位。具体参考:https://docs.gitlab.com/ee/administration/auth/ldap/#basic-configuration-settings
- 对于GitLab已存在的用户,定时从LDAP中更新用户信息。定时策略可配置,具体参考:https://docs.gitlab.com/ee/administration/auth/ldap/ldap_synchronization.html#adjust-ldap-user-sync-schedule
- 对于LDAP删除的用户,GitLab也会同步删除用户,具体参考:https://docs.gitlab.com/ee/administration/auth/ldap/#users-deleted-from-ldap
1.3 关闭GitLab本地账号注册与登录
-
关闭GitLab注册

-
关闭GitLab登录(关闭后root账号也无法登陆)

2. LDAP组同步
该功能需GitLab企业版。
2.1 功能
-
可以将AD/LDAP中的用户组同步到GitLab的群组,并分配角色权限。

-
当AD/LDAP中的用户组有新用户加入后,该用户可直接登录GitLab,且在上述GitLab的群组中享有权限。

-
当AD/LDAP中的用户组有人员离开,该用户会自动从上述GitLab的群组中移除
-
举例
- LDAP用户组A有用户张三,将用户组A同步到GitLab群组X并分配Developer角色,则用户张三会自动同步到群组X,且角色为Developer。
- LDAP用户组A新增了用户李四,李四没有登陆GitLab,则李四在GitLab及群组X中不存在。当李四登陆GitLab,自动创建李四的GitLab账号,并将李四同步到群组X,且角色为Developer。
2.2 配置
最后更新于