2017-07-11 1 views
2

Meine Open-Source-App verwendet die Parameterspeicherfunktion von AWS, um sichere Kopien von App-Geheimnissen (Datenbankkennwörter usw.) zu speichern. Wenn meine App auf EC2 bereitgestellt wird, ruft ein Skript diese Geheimnisse ab und stellt sie dem Code zur Verfügung, und ich führe das gleiche Skript auch lokal aus.Ist es sicher, in einem Open-Source-Repo sichere Zugangsdaten in Travis CI zu holen?

Einige meiner Tests müssen Datenbankzugriff ausführen und daher brauche ich mein Travis-Build-Skript, um Zugriff zu haben.

Ist es sicher für mich, das Skript auf meinem (öffentlichen) Travis-Build auszuführen? Soweit ich das beurteilen kann, stellt Travis die Build-Artefakte nirgendwo (jenseits dessen, was auf GitHub ist, das meine Geheimnisse nicht hat) auf. Ich weiß, dass ich Konfigurationselemente in meiner .travis.yml Datei verschlüsseln kann, aber idealerweise gibt es einen einzigen Ort, an dem diese Daten leben, dann kann ich Config Keys drehen, ohne sie an mehreren Stellen zu aktualisieren.

Gibt es einen sicheren/besseren Weg, den ich tun kann?

Antwort

1

Nicht wirklich.

Wenn Sie Pull-Requests akzeptieren, ist es leicht, eine Pull-Anforderung zu erstellen, die die öffentlichen Dumps der Keys an die Travis-Konsole ablegt. Da es keine Beschränkungen gibt, welche PRs ändern, bearbeiten, usw. können, wo immer die Schlüssel sind, könnte jemand leicht den Code ändern & sie ausdrucken.

Travis baute es secure environment variables, um diese Art von Angriff zu verhindern, d. H. Indem die Variablen den PRs nicht ausgesetzt wurden. Das bedeutet, dass Tests, die sichere Umgebungsvariablen erfordern, nicht mit verschlüsselten Variablen ausgeführt werden können, aber das ist ein Kompromiss, den man machen muss.

+0

Toller Punkt, komplett vergessen die PR-Seite der Dinge. Spielt dann weiter mit den sicheren Umgebungsvariablen. –