IT-Freelancer // Android + Coding
Heute ein kurzer Beitrag zum Thema LDAP und der Verbindung mit GitLab und SSL.
LDAP steht für Lightweight Directory Access Protocol und kommt oft in größeren Unternehmensstrukturen zum Einsatz um dort an einer zentralen Stelle Zugriffsrechte für verschiedene Nutzer verwalten zu können und dadurch nicht für jeden Dienst ein eigenes, neues Nutzerkonto erstellt werden muss.
Aber auch für kleinere Anwendungsfälle ist diese Möglichkeit ganz praktisch. Hierfür nutzen wir die OpenSource Anwendung OpenLDAP.
Um die Konfiguration so leicht wie möglich zu halten, nutzen wir hierfür ein vorkonfiguriertes Docker-Image von Oxisia: https://github.com/osixia/dock...
Die Installation von Docker und Docker-Compose lasse ich an dieser Stelle bewusst weg.
Hierfür legen wir einen Ordner an (beispielsweise unter /opt/ldap) und erstellen eine Datei mit dem Namen docker-compose.yml:
version: '3.3' services: openldap: environment: - 'LDAP_ORGANISATION=My LDAP' - LDAP_DOMAIN=example.com - LDAP_ADMIN_PASSWORD=XXX - LDAP_TLS_ENFORCE=true - LDAP_TLS_VERIFY_CLIENT=try ports: - 389:389 - 636:636 image: osixia/openldap:1.5.0 volumes: - './data/slapd/database:/var/lib/ldap' - './data/slapd/config:/etc/ldap/slapd.d' - './data/slapd/certs:/container/service/slapd/assets/certs'
Die Einstellungen wie LDAP_DOMAIN, LDAP_ORGANISATION und LDAP_ADMIN sollten selbstverständlich angepasst werden.
Anschließend erstellt ihr mittels folgendem Code die notwendigen Ordner:
mkdir -p /opt/ldap/data/slapd/database mkdir -p /opt/ldap/data/slapd/config mkdir -p /opt/ldap/data/slapd/certs
In den eben erstellten certs Ordner packt ihr nun euer zu verwendendes Server-Zertifikat. Nutzt ihr beispielsweise Lets Encrypt packt ihr die Dateien wie folgt in den Ordner:
Nun starten wir den Container mittels:
cd /opt/ldap docker-compose up -d
Beim ersten Start wird nun noch ein DH-Param-File erzeugt, was etwas dauern kann.
In der Zeit können wir dann GitLab konfigurieren. Im folgenden findet ihr den relevanten Ausschnitt aus der gitlab.rb Konfigurationsdatei:
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below main: label: 'My LDAP' # Anpassen host: 'ldap.example.com' # Anpassen port: 636 uid: 'uid' method: 'ssl' bind_dn: 'cn=admin,dc=example,dc=com' # Anpassen password: 'XX' # Anpassen active_directory: true allow_username_or_email_login: true block_auto_created_users: false base: 'dc=example,dc=com' # Anpassen user_filter: '' attributes: username: ['uid', 'userid', 'sAMAccountName'] email: ['mail', 'email', 'userPrincipalName'] name: 'cn' first_name: 'givenName' last_name: 'sn' EOS
Die mit Anpassen markierten Felder müsst ihr - wie geschrieben - anpassen. Bei bind_dn muss das Format stimmen, selbes gilt für den base-Parameter.
Nun übernehmen wir die Konfiguration durch ein
gitlab-ctl reconfigure
und testen die LDAP-Verbindung über SSL mit nachfolgendem Befehl:
gitlab-rake gitlab:ldap:check
Es sollte eine ähnliche Ausgabe erscheinen:
Checking LDAP ...
LDAP: ... Server: ldapmain
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)
Checking LDAP ... Finished
Glückwunsch - damit funktioniert die Verbindung zwischen OpenLDAP und GitLab über SSL und für die produktive Anwendung müssen nun nur noch die entsprechenden Nutzereinträge in LDAP angelegt werden, damit eine Anmeldung über LDAP in GitLab möglich ist.
Als Tipp noch: Habt ihr die identische E-Mail-Adresse in LDAP und GitLab, führt GitLab die Nutzer automatisch zusammen.