Jenkins Script Security Plugin – Groovy

Jenkins Script Security Plugin – Groovy

Verteilte Builds

Aus Gründen™ stand ich vor folgender Problematik: Ein online git Repository, zwei Jenkins-Instanzen in verschiedenen lokalen Netzwerken. Um die Builds nicht auf beiden Instanzen pflegen zu müssen habe ich also die betreffenden Builds auf Pipeline Builds umgestellt. Der größte Teil der Konfiguration erfolgt dann ich einem Groovy Script, dem Jenkinsfile. Es war mehr ein Workaround, aber dennoch habe ich das Jenkinsfile zu schätzen gelernt.

Groovy Jenkinsfile

In den Groovy Jenkinsfiles brauchte ich auch diverse Male Zugriff auf die Kommandozeile, das Script sollte aber auf jeden Fall im Repository liegen. Dadurch stellte sich mir aber die Problematik, dass das Script in einer Art Sandbox ausgeführt wird. Einige Zugriffe sind so erstmal nicht erlaubt. Alle möglichen Standardoperationen kann man zwar bequem vornehmen, aber sobald es in Bereiche geht, die zu einer Kompromittierung des Systems führen könnten, blockt Jenkins die Ausführung. So weit, so gut. Jetzt haben wir aber eine geschlossene Benutzergruppe, die Zugriff auf die Repositorys hat. Ich wollte also unbedingt meine Scripte so ausführen wie gewohnt. Ich wollte weiterhin meine Innosetups bauen. Ebenso wie die Nugets die ich mittlerweile sehr gerne einsetze. Um diese Befehle dennoch sicher ausführen zu können, gibt es eine sehr elegante Lösung.

Script Security Plugin

Das Script Security Plugin ermöglicht es einem, spezifische Scriptbefehle als ausführbar zu kennzeichnen. Damit können die entsprechenden Befehle doch genutzt werden. Das Script muss einmal mit dem Build ausgeführt werden und läuft dadurch natürlich in einen Fehler. Dafür hat man dann aber die Möglichkeit den geblockten Befehl mit einem Klick als „approved“ zu kennzeichnen.

Jenkins Script Security Plugin

Fazit

Zwischen Bequemlichkeit, Features und Sicherheit muss man immer eine gewisse Balance walten lassen. Mit dem Script Security Plugin habe ich einen, für mich, guten Weg gefunden. Ich habe die Möglichkeit meine Befehle auszuführen und dennoch eine gewisse Sicherheit für den unwahrscheinlichen Fall einer Kompromittierung. In welche Waagschale legst Du Dein Gewicht? Sicherheit oder Funktionalität?

Michael Grünwaldt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert