目录

GitLab AD/LDAP配置说明

1. AD/LDAP集成

1.1 配置

修改 /etc/gitlab/gitlab.rb,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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 说明

1.3 关闭GitLab本地账号注册与登录

  • 关闭GitLab注册 /gitlab_ldap_config/GitLab_AD_LDAP_____1_1762141061203.png

  • 关闭GitLab登录(关闭后root账号也无法登陆) /gitlab_ldap_config/GitLab_AD_LDAP_____2_1762141061211.png

2. LDAP组同步

该功能需GitLab企业版。

2.1 功能

  • 可以将AD/LDAP中的用户组同步到GitLab的群组,并分配角色权限。 /gitlab_ldap_config/GitLab_AD_LDAP_____3_1762141061218.png

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

  • 当AD/LDAP中的用户组有人员离开,该用户会自动从上述GitLab的群组中移除

  • 举例

    • LDAP用户组A有用户张三,将用户组A同步到GitLab群组X并分配Developer角色,则用户张三会自动同步到群组X,且角色为Developer。
    • LDAP用户组A新增了用户李四,李四没有登陆GitLab,则李四在GitLab及群组X中不存在。当李四登陆GitLab,自动创建李四的GitLab账号,并将李四同步到群组X,且角色为Developer。

2.2 配置