Moin!
ich möchte auf meinem Jenkins Server SVN Passwörter "sicher" hinterlegen. Mit sicher meine ich, dass man die nicht unbedingt direkt loopen können sollte.
Jenkins hat einen Passwort-Storage, der erlaubt, dass man in einzelnen Jobs nur "das Passwort von X" referenziert, aber es dort nicht im Klartext in die Konfiguration eintragen muss/kann.
- Idee:
Jeder Nutzer ändert sein Jenkins Passwort auf sein SVN Passwort. Dieses Passwort wird standartmäßig vom Jenkins Codiert gespeichert.
Wieso muss der Jenkins die User-Passworte vom SVN kennen? Was soll der damit machen?
Die übliche Vorgehensweise wäre doch, dass der Jenkins ebenfalls einen SVN-Account bekommt und mit dem dort liest und ggf. auch schreibt, unabhängig von den Usern.
Hintergrund ist, dass wir einen Jenkinsprozess haben der Sachen ins SVN eincheckt und wir wollen, dass diese Sachen unter den entsprechenden Usernamen eingecheckt werden und nicht per globalen SVN-Jenkinsuser.
Tja, geht nicht. Würde auch mit SSH nicht gehen. Würde mit Git gehen (bis zu einem gewissen Grad), weil die Angabe des Usernamens und der Mailadresse beim Commit unabhängig von der Prüfung der Lese- oder Schreibberechtung auf dem Git-Server sind. Git nativ kennt gar kein derartiges Sicherheitsprotokoll, das ist immer im darumliegenden Transportprotokoll implementiert. Git-intern gibt es lediglich PGP-signierte Commits - und die wiederum sind im Zusammenspiel mit den Hashes der Commits ziemlich manipulationssicher (und wenn sowas im Spiel wäre, müsste der Jenkins also wieder die PGP-Schlüssel aller Mitarbeiter kennen - unschön).
Ich würde der Tatsache ins Auge sehen, dass eine SVN-Authentifizierung der menschlichen User auf dem Jenkins innerhalb eines automatisierten Jobs nicht vorgesehen ist. Selbstverständlich kannst du die Klartext-Passworte, die du deshalb benötigst, weil sonst der SVN-Login nicht geht, irgendwo speichern und da auch noch viel Security drumrumwickeln.
Alternativ implementierst du mit dem SVN-Server OAuth2 und lässt jeden User den Prozess durchlaufen, mit den nur ihm bekannten Credentials dem Jenkins ein Token zukommen zu lassen, mit dem dieser dann als Stellvertreter agieren kann.
Grüße
Sven