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.