Gegenwärtig sind wir eine laufende Anwendung auf einem einzigen Docker-Container. Die Anwendung benötigt alle Arten von vertraulichen Daten, um als Umgebungsvariablen übergeben zu werden.
Ich setze diese in den Befehl run, damit sie nicht im Image und dann in einem Repository landen. Am Ende erhalte ich jedoch einen sehr unsicheren Befehl run.
Jetzt verstehe ich, dass Docker-Geheimnisse existieren, aber wie kann ich sie verwenden, ohne einen Cluster bereitzustellen? Oder gibt es eine andere Möglichkeit, diese Daten zu sichern?
Freundliche Grüße,
security
docker
docker-swarm
Juan Sebastian
quelle
quelle
Antworten:
Sie können nicht ... Es unterstützt keine Geheimnisse ohne Swarm. Es sei denn, Sie schwärmen mit nur einem Knoten.
Die andere Lösung wäre, denke ich, eine Vault-Software von Drittanbietern wie diese zu verwenden:
https://www.vaultproject.io/
Um die Geheimnisse in Ihren Containern von Vault zu nutzen, müssten Sie jedoch das Dokument lesen.
Hoffe, dies bringt dich auf den richtigen Weg, um anzufangen.
quelle
build-args
sind nicht im endgültigen Image enthalten, können aber nur während der Image-Erstellung aufgerufen werden. Eine geeignete Lösung besteht darin, die Geheimnisse in Dateien auf dem Host zu schreiben (natürlich mit den entsprechenden Berechtigungen) und sie dann auf dem Volume in Ihren Docker-Container zu laden. Ihre Anwendung im Container kann dann die Geheimnisse aus diesen Dateien lesenJa , Sie können Geheimnisse verwenden, wenn Sie eine Compose-Datei verwenden . (Du musst keinen Schwarm rennen).
Sie verwenden eine Compose-Datei mit Docker-Compose : In einer Docker-Compose.yml-Datei ist Dokumentation für "Geheimnisse" enthalten .
Ich wechselte zu Docker-Compose, weil ich Geheimnisse verwenden wollte. Ich bin froh, dass ich es getan habe, es scheint viel sauberer zu sein. Jeder Dienst wird einem Container zugeordnet. Und wenn Sie einmal auf das Laufen eines Schwarms umsteigen möchten, sind Sie im Grunde schon da.
Hinweis: Geheimnisse werden nicht in die Umgebung des Containers geladen, sondern in / run / secrets / eingebunden.
Hier ist ein Beispiel:
1) Projektstruktur:
2) docker-compose.yml Inhalt:
3) super_duper_secret.txt Inhalt:
4) Führen Sie diesen Befehl im Stammverzeichnis des Projekts aus, um festzustellen, ob der Container Zugriff auf Ihr Geheimnis hat. (Docker muss ausgeführt werden und docker-compose muss installiert sein.)
Sie sollten sehen, dass Ihr Container Ihr Geheimnis ausgibt.
quelle
docker-compose
Verwendung eines Geheimnisses zeigen? Die Dokumentation und mein Verständnis der Implementierung zeigen, dass das Geheimnis nicht im Container konfiguriert wird.docker-compose.yml
auf einem einzelnen Knoten) replizieren . beim starten/run
enthält der container nur einnginx.pid
und es werden keine durchMounts
angezeigtdocker inspect $container
.