Case Study:
Netzint
Langjährige DokuWiki-Plugin-Entwicklung, Sicherheits- und Wartungsleistungen für ein IT-Systemhaus
Kunde
Die Netzint GmbH ist ein IT-Systemhaus mit Sitz in Gütenbach im Schwarzwald sowie weiteren Entwicklungs- und Servicestandorten in Lahr und Giengen an der Brenz. Das Unternehmen bietet ein breites Leistungsspektrum entlang aller Kernbereiche der Informationstechnik und gliedert seine Tätigkeit in die fünf Felder CONNECT (Netzwerk und Anbindung), PUBLIC (Schul-IT, u. a. mit linuxmuster.net und edulution.io), BUSINESS (Unternehmens-IT, Infrastruktur und Virtualisierung), SECURITY (Datenschutz und Sicherheit) und DEVELOP (Individualentwicklung).
Als Technologielieferant setzt sich Netzint nachdrücklich für die Souveränität deutscher und europäischer IT ein und bevorzugt quelloffene Software aus Deutschland und Europa — eine Haltung, die sich auch in der Unterstützung der Kampagne „Public Money, Public Code” ausdrückt. Zur Dokumentation der von Netzint betreuten Kundensysteme kommt DokuWiki zum Einsatz, das damit zentraler Bestandteil des täglichen Arbeitens ist.
Projekt
Das Netzint-Wiki bildet die Kundendokumentation in einer tiefen Hierarchie aus Organisationen und Unterorganisationen ab und enthält dabei durchaus sensible Daten bis hin zu Server-Passwörtern. Daraus ergaben sich über die Jahre immer neue Anforderungen: Die Zugriffsrechte mussten dynamisch und feingranular je Kunde vergeben werden, die automatische Navigation musste auch mit teilweise nicht lesbaren Namensräumen sinnvoll umgehen, Passwörter sollten verschlüsselt statt im Klartext abgelegt werden, und Logins sollten durch eine Zwei-Faktor-Authentifizierung abgesichert sein. Hinzu kam der Wunsch, Daten aus dem ERP-System Xentral direkt im Wiki auswerten zu können.
Netzint suchte einen erfahrenen DokuWiki-Partner, der diese Anforderungen über einen längeren Zeitraum als gut umrissene Einzelausbaustufen umsetzt, dabei bestehende Plugins modernisiert und die Ergebnisse — wo sinnvoll — der breiteren Community zur Verfügung stellt.
Umsetzung
CosmoCode begleitet Netzint seit 2020 als langfristiger Partner rund um die DokuWiki-Plattform und setzt Anforderungen als fortlaufende Reihe einzeln beauftragbarer Ausbaustufen um. Die Arbeit erstreckt sich über mehrere wiederkehrende Themenfelder.
Ein Schwerpunkt liegt auf der dynamischen Zugriffssteuerung. Mit dem eigens entwickelten ACLplusregex-Plugin lassen sich komplexe ACLs auf Basis von Benutzer- und Gruppennamen über reguläre Ausdrücke definieren und automatisch auf die passende Kundennamensraum-Struktur anwenden. Das Plugin wurde mehrfach erweitert — etwa um reguläre Ausdrücke im vorderen Teil der Regeln, um Wildcard-Unterstützung und um umfangreiche Performance-Optimierungen für den Einsatz mit großen Regelmengen.
Eng damit verzahnt ist die automatische Navigation. Das SimpleNavi-Plugin wurde so überarbeitet, dass es auch dann eine sinnvolle Baumdarstellung liefert, wenn ein Nutzer nur Zugriff auf eine Unterorganisation hat, nicht aber auf die darüberliegende Organisation. Dafür wurde der rekursive Mechanismus zum Auslesen des Seitenbaums neu aufgebaut, sodass lesbare Bereiche auch innerhalb nicht lesbarer Namensräume korrekt aufgeklappt werden.
Ein weiterer großer Block widmete sich der Sicherheit. CosmoCode entwickelte das encryptedpasswords-Plugin neu, mit dem Passwörter über die moderne SubtleCrypto-API der Browser symmetrisch verschlüsselt im Wiki abgelegt werden. Ergänzend wurde die nicht mehr gepflegte twofactor-Plugin-Suite grundlegend modernisiert: Anpassung an aktuelle Coding-Standards, klare Trennung der Zuständigkeiten zwischen Basis- und Methoden-Plugins, automatisierte Unit-Tests und GitHub Actions. Mehrere Plugins wurden zudem einer Sicherheitsüberprüfung auf mögliche Angriffsszenarien durch externe Nutzer unterzogen.
Um Kundendaten aus dem ERP-System direkt im Wiki darstellen zu können, entstand das als dbquery veröffentlichte SQL-Plugin. Es trennt das Anlegen der SQL-Abfragen strikt von deren Einbindung, sodass Kunden mit Schreibzugriff keine eigenen Datenbankabfragen formulieren können, und unterstützt Platzhalter für den aktuell eingeloggten Nutzer. Mit dem GroupMatrix-Plugin lassen sich darüber hinaus Gruppenmitgliedschaften automatisiert als Matrix darstellen.
Hinzu kommen fortlaufende Anpassungen am Authentifizierungs-Setup (AuthAD bzw. PureLDAP für die Active-Directory-Anbindung samt Passwort-Ändern-Funktion), Anpassungen am SprintDoc-Template für vollständig geschlossene Wikis sowie laufende Wartung, Updates und Fehlerbehebung. Sämtlicher Code wird unter der GPL2 veröffentlicht und, wo er auch für ein breiteres Publikum interessant ist, als Open-Source-Plugin auf DokuWiki.org und GitHub bereitgestellt.
Wir können auch Ihr Projekt umsetzen!
Sie wollen ein ähnliches Projekt umsetzen? Oder sie haben eine ganz andere Idee? Sprechen Sie uns an und wir finden gemeinsam die beste Lösung.