2016-08-02 11 views
0

Ich habe einen Passwort-Parameter in meinem Jenkins-Build festgelegt, der einige Informationen enthält, die ich geheim halten möchte. Der Jenkins-Build erstellt einen Docker-Container, der Zugriff auf diesen Parameter benötigt. Derzeit sieht mein Befehl wie so:Maskierte Jenkins-Umgebungsvariable an Docker-Container übergeben

docker run -e PASSWORD=${PASSWORD} my_image my_command

Dies funktioniert, wie ich es erwartet - Das Kennwort Parameter ich in meinem Build gesetzt haben wird als eine Umgebungsvariable auf den Docker Container übergeben, die sie dann nutzen können, . Dies ist ein Teil meiner Ausgabe der Konsole:

+ docker run -e PASSWORD=abc123efg my_image my_command

Das Problem ist, dass das Ausgang Passwort in der Ausgabe oben dargestellt ist. Gibt es eine Problemumgehung oder eine alternative Lösung, die ich verwenden kann, um den maskierten Parameter an meinen Container zu übergeben, ohne ihn in der Ausgabe verfügbar zu machen?

Antwort

0

Es gibt viele Plugins, die spezifischen Parameter in Konsolenausgabe wie https://wiki.jenkins-ci.org/display/JENKINS/Mask+Passwords+Plugin

+0

Ja zu entschlüsseln, wie es scheint, wir hatten das Plugin installiert, aber anstatt es mit I wurde mit dem maskierten Passwort Option in was Ich glaube, das parametrisierte Build-Plugin zu sein (schien nicht zu funktionieren). Ich stelle das einfach als Antwort auf und nenne es einen Tag – kshah

0

Passing sensiblen Informationen als Plain-Text imho ist auch keine gute Wahl maskieren kann, wenn maskiert. Wenn Sie die Build-Pipeline steuern, ist es möglicherweise eine robustere Option, stattdessen mit einem Shared-Secret-Ansatz zu arbeiten. Es ist relativ einfach zu implementieren und gut dokumentiert. Von einer schnellen Google-Suche wähle ich http://bigthinkingapplied.com/key-based-encryption-using-openssl/, die es ziemlich schön erklärt. Auf den Punkt gebracht ...

  • Erstellen Sie eine zufällige Datei ("Shared Secret") und machen es in Ihrem Build-System zur Verfügung sowie in den Docker Behälter
  • verschlüsseln das Passwort das gemeinsame Geheimnis
  • mit übergeben sie das verschlüsselte Passwort zum docker Container
  • im docker Behälter, verwenden sie den gemeinsamen geheimen Schlüssel das Passwort