Übung 4 - Secrets
Secrets
Secrets, wie Passwörter, sollen nie in Freitext in Git eingecheckt werden! Noch
besser wäre es mit Tools wie fonx diese auch nie in
Freitext auf dem System zu haben.
In dieser Übung werden wir nun lernen Secrets direkt von einer Lokalen Datei dem
Container beim Start mitzugeben. Danach verwenden wir
fnox um Secrets auch auf dem lokalen System
verschlüsselt speichern zu können.
Schritte
- Erstellt eine Datei
.env.secretsmit folgender Struktur.env.secretMY_PASSWORD=super-geheim-123 - Startet einen "busybox" Container
docker run --rm -it busybox:1.37.0 - Gebt den Befehl
envin die Conainer-Shell ein und seht, dassMY_PASSWORDnicht enthalten ist. - Startet einen "busybox" Container und ladet die Datei als
--env-filein den Container.docker run --rm -it --env-file .env.secret busybox:1.37.0 - Gebt den Befehl
envin die Conainer-Shell ein und seht, dassMY_PASSWORDausgegeben wird. - Die Datei
.env.secretdürft ihr nicht in Git einchecken! Dies kann man erreichen, indem der Dateiname in die Datei.gitignoreeingetragen wird..gitignore.env.secret
Mit fnox in der Ubuntu VM
hinweis
- Wollt ihr fnox unter Windows nutzen, müsst Ihr Euch selber um die Installation kümmern.
- Fnox installieren mit
mise use fnox -g - Age Keygen installieren mit
mise use age -g - Key generieren:
mkdir -p ~/.config/fnox && age-keygen -o ~/.config/fnox/age.txt- Den "Public Key"" in der Bash History lassen, damit er später kopiert werden kann.
- Fnox im Übungsordner initialisieren
cd 04-security/04-secrets
fnox init- Would you like to set up a provider now?: Yes
- What type of provider do you want to use? Local (easy to start)
- Select provider: Age encryption
- Age public key (recipient): Public Key von vorhin!
- Provider name: age
- Would you like to add an example secret? no
- Verschlüsseltes Secret erstellen
fnox set MY_PASSWORD "super-geheim-123-verschlüsselt!" - Öffnet die Datei
fnox.tomlmitcode fnox.toml. Sieht den verschlüsselten Eintrag.- Diese Datei dürft Ihr in Git einchecken, ausser ihr habe Plaintext ausgewählt!
- Container Starten und Fnox Environment Variable übergeben
fnox exec -- docker run --rm -it -e MY_PASSWORD busybox:1.37.0 - Gebt den Befehl
envin die Conainer-Shell ein und seht, dassMY_PASSWORDunverschlüsselt ausgegeben wird.