Ausgangssituation
Es ist wie so oft, man kommt in ein Projekt und hat dort Tools und Verfahren, welche “schon immer so gemacht” werden. So war es auch in diesem Fall. Ein Kunde setzt eine Jenkins-Instanz ein, welche per Ansible auf AWS deployt wird. So weit, so gut. Wären da nicht die vielen “Aber”.
Viele Probleme beziehen sich auf die Komplexität die dahinter steckt, welche aber notwendig ist um den Jenkins in einer für die Kundencompliance akzeptablen Art und Weise laufen zu lassen. Hier tun sich einige Sicherheitslücken auf, die durch die vielen Skripte und vielen Automatisierungen übersehen wurden und sich erst nach einigen Blicken offenbaren. Ein weiteres Problem ist die Häufigkeit der Aktualisierungen. Sicher, man kann beim Jenkins selber auf LTS Versionen zurückgreifen und verpasst trotzdem keine der wichtigsten Funktionen. Aber gerade die Plugins und deren Aktualisierung macht das Leben damit wirklich unangenehm.
Ein Beispiel: Für die Compliance war es wichtig, dass User sich per SSO anmelden müssen. Der einfachste Weg war in diesem Fall, dies über das Repository (Gitlab) zu machen. Hierfür gab es sogar ein Plugin, welches allerdings seit einigen Monaten nicht mehr aktualisiert wurde. Erst einmal ein geringes Problem, doch nach einigen Wochen Einsatz kam es natürlich wie es kommen musste, eine Sicherheitslücke wurde für dieses Plugin öffentlich. Da nicht mit einer schnellen Behebung zu rechnen war, mussten also alternative Konzepte her. Am Ende wurde das Plugin doch nach ein paar wenigen Wochen aktualisiert und alles war wieder gut. Jedoch steht diese Sicherheitslücke symbolisch für das Problem, welches wir hier erfahren mussten. Man verlässt sich auf viele freie – und ehrenamtliche – Entwickler und deren Schnelligkeit bei Behebung von Sicherheitslücken und anderen Fehlern.