GitLab über LDAP mit FreeIPA authentifizieren

GitLab lässt sich über LDAP mit zahlreichen Verzeichnisdiensten, wie beispielsweise Microsoft Active Directory Domain Services oder auch FreeIPA bzw. Red Hat Identity Management, verbinden. Dieser Artikel beschreibt die Konfiguration und Integration in FreeIPA.

Mit Klicks auf Identity > User Groups > Add wird innerhalb der FreeIPA-Oberfläche der Assistent für die Erstellung neuer Gruppen gestartet. Dort werden zwei Gruppen mit den Namen gitlab-users und gitlab-admins erstellt.

Anschließend könnte betroffene Benutzer in die jeweiligen Gruppen aufgenommen werden. Vorbereitend empfiehlt es sich, eine Sicherheitskopie der GitLab Konfigurationsdatei zu erstellen, bevor diese erweitert wird:

 1# cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.backup
 2# vi /etc/gitlab/gitlab.rb
 3...
 4gitlab_rails['ldap_enabled'] = true
 5gitlab_rails['ldap_servers'] = YAML.load <<-EOS
 6main:
 7  label: 'LDAP'
 8  host: 'myldap.localdomain.loc'
 9  port: 636
10  uid: 'uid'
11  method: 'ssl'
12  bind_dn: 'uid=svc-readonly,cn=users,cn=accounts,dc=localdomain,dc=loc'
13  password: '...'
14
15  timeout: 10
16  active_directory: false
17  allow_username_or_email_login: false
18  block_auto_created_users: false
19
20  base: 'cn=users,cn=accounts,dc=localdomain,dc=loc'
21  user_filter: '(memberOf=cn=gitlab-users,cn=groups,cn=accounts,dc=localdomain,dc=loc)'
22
23  attributes:
24    username: ['uid', 'userid', 'sAMAccountName']
25    email:    ['mail', 'email', 'userPrincipalName']
26    name:       'cn'
27    first_name: 'givenName'
28    last_name:  'sn'
29EOS

Die Einträge host, bind_dn, base und user_filter sind entsprechend der eigenen Infrastruktur anzupassen. Wer unverschlüsselt authentifizieren möchte, ändert zwei Zeilen wie folgt ab:

1port: 389
2method: 'plain'

Benutzer der GitLab Enterprise Edition können auch eine Admin-Gruppe definieren, die Konfiguration wird in diesem Fall um die folgende Zeile erweitert:

1admin_group: 'cn=gitlab-admins,cn=groups,cn=accounts,dc=localdomain,dc=loc'

Ab GitLab 10.x wird standardmäßig die SSL-Verifizierung aktiviert. Ist kein Zertifikat hinterlegt bricht die Authentifizierung mit folgender Fehlermeldung ab:

1Could not authenticate you from Ldapmain because "Ssl connect returned=1 errno=0 state=error: certificate verify failed".

Abhilfe schafft die folgende Zeile in der Konfiguration:

1  ca_file: '/etc/ssl/certs/ipa.pem'

Der Pfad muss natürlich angepasst werden - ich habe die folgenden zwei Befehle verwendet, um das Zertifikat meines FreeIPA-Systems zu beziehen:

1# scp root@ipa:/etc/ipa/ca.crt /etc/ssl/certs/ipa.pem
2# restorecon /etc/ssl/certs/ipa.pem

Anschließend muss die GitLab-Konfiguration aktualisiert werden - hierfür wird das folgende Kommand ausgeführt:

1# gitlab-ctl reconfigure

Danach sollte GitLab in der Lage sein, über LDAP zu authentifizieren. Zum Testen existiert ein eigenes Kommando - dieses listet auch die ersten 100 gefundenen LDAP-Benutzer auf:

 1# gitlab-rake gitlab:ldap:check RAILS_ENV=production
 2Checking LDAP ...
 3
 4Server: ldapmain
 5LDAP authentication... Success
 6LDAP users with access to your GitLab server (only showing the first 100 results)
 7        DN: uid=giertz,cn=users,cn=accounts,dc=localdomain,dc=loc        uid: giertz
 8        DN: uid=pinkepank,cn=users,cn=accounts,dc=localdomain,dc=loc     uid: pinkepank
 9
10Checking LDAP ... Finished

In der Anmeldemaske der Web-Oberfläche gibt es nun eine eigene Registerkarte "LDAP" zur Authentifizierung über das Verzeichnis. Konventionelle, lokale, Anmeldungen sind weiterhin möglich. LDAP-Benutzer und lokale Benutzer werden bei übereinstimmender E-Mail-Adresse verknüpft.

Übersetzungen: