Secrets in Docker Swarm

Bisschen geheim

Praktisch jede Serveranwendung muss auch an irgendeiner Stelle Zugangsdaten oder Schlüssel verwalten, die möglichst geheim zu halten sind. Sie im Klartext in Konfigurationsdateien abzulegen, führt deshalb nicht zum Ziel. Bei Containern bietet Docker im Swarm-Mode mit den Secrets einen Mechanismus dafür.
In der Dezember-Ausgabe beleuchtet IT-Administrator die Datenspeicherung in kleinen und mittleren Firmen. Darin zeigen wir unter anderem, welche neue ... (mehr)

Mehr als ein Anwender hat bereits eine unschöne Überraschung erlebt, wenn in einem öffentlichen Github-Repository die Zugangsdaten für einen wichtigen Server gelandet sind. Aus diesem Grund wird davon abgeraten, Passwort- und andere sensible Daten in Dateien zu hinterlegen. Dies gilt auch für Docker-Images, deren Build-Dateien (Dockerfiles) häufig Passwörter in Form von Umgebungsvariablen enthielten, die ein Container beim Start übergeben bekam. Eine Möglichkeit, zumindest einen Teil des Problems zu lösen, sind separate Dateien für Umgebungsvariablen, die in ein Docker-Compose-File mit der Anweisung "env_file" eingebunden werden.

Mit der Docker-Version 1.13 entstand eine bessere Lösung für das Problem: die sogenannten Secrets [1], die Docker eigenständig im Hintergrund verwaltet und soweit möglich verschlüsselt speichert und transportiert. Damit lassen sich Passwörter, Zertifikate und andere geheimzuhaltende Daten halbwegs sicher speichern und an Container weitergeben.

Nur im Swarm-Mode

Secrets stehen nur im Swarm-Mode zur Verfügung, dem Betriebsmodus für Docker-Cluster. Allerdings ist es ja auch möglich, einzelne Container mit Swarm zu betreiben. Sie müssen dabei nur etwas umdenken und von einem Dienst mit einer Skalierung von 1 ausgehen statt von einem einzelnen Container. Dementsprechend passen Sie die Konfiguration des Containers in einem Compose-File als Service an. Im einfachsten Fall starten Sie den Swarm-Mode mit dem Befehl docker swarm init. Dieser Rechner ist dann der einzige Swarm-Manager und es gibt keine anderen Nodes. Ein Secret legen Sie dann mit dem folgende Befehl an (Bild 1):

$ echo T0pS3cret | docker secret create mysecret -

Mit dem Bindestrich liest der Befehl die Daten von der Standardeingabe, alternativ geben Sie hier eine Datei an. Ein Aufruf von docker secret ls zeigt, dass Docker das Secret gespeichert

...

Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019