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:
# cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.backup # vi /etc/gitlab/gitlab.rb ... gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-EOS main: label: 'LDAP' host: 'myldap.localdomain.loc' port: 636 uid: 'uid' method: 'ssl' bind_dn: 'uid=svc-readonly,cn=users,cn=accounts,dc=localdomain,dc=loc' password: '...' timeout: 10 active_directory: false allow_username_or_email_login: false block_auto_created_users: false base: 'cn=users,cn=accounts,dc=localdomain,dc=loc' user_filter: '(memberOf=cn=gitlab-users,cn=groups,cn=accounts,dc=localdomain,dc=loc)' attributes: username: ['uid', 'userid', 'sAMAccountName'] email: ['mail', 'email', 'userPrincipalName'] name: 'cn' first_name: 'givenName' last_name: 'sn' EOS
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:
port: 389 method: 'plain'
Benutzer der GitLab Enterprise Edition können auch eine Admin-Gruppe definieren, die Konfiguration wird in diesem Fall um die folgende Zeile erweitert:
admin_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:
Could 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:
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:
# scp root@ipa:/etc/ipa/ca.crt /etc/ssl/certs/ipa.pem # restorecon /etc/ssl/certs/ipa.pem
Anschließend muss die GitLab-Konfiguration aktualisiert werden – hierfür wird das folgende Kommand ausgeführt:
# 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:
# gitlab-rake gitlab:ldap:check RAILS_ENV=production Checking LDAP ... Server: ldapmain LDAP authentication... Success LDAP users with access to your GitLab server (only showing the first 100 results) DN: uid=giertz,cn=users,cn=accounts,dc=localdomain,dc=loc uid: giertz DN: uid=pinkepank,cn=users,cn=accounts,dc=localdomain,dc=loc uid: pinkepank Checking 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.