Docker Best Practices: Vergessen Sie die Sicherheit nicht!

,

Sie haben das Lob für Docker-Container oft gehört und fragen sich, ob sie wirklich so unfehlbar sind? In der Tat gibt es für die Aufgaben, die sie erfüllen – die Beschleunigung der Softwareentwicklung durch Continuous Delivery – kein besseres Werkzeug. Aber als einer der Nebeneffekte können Docker-Container Ihre IT-Sicherheit schwächen. Diese Best Practices helfen dagegen.

Wissen auffrischen: Container und Images

Ein Image kann als eine Vorlage für einen Container betrachtet werden. Während Images statische Schnappschüsse sind, sind Container deren laufende Versionen. Ein Docker-Image ist eine Datei, die Code enthält, der zum Ausführen einer Anwendung erforderlich ist. Es enthält den Quellcode der Anwendung, Bibliotheken und Abhängigkeiten: alles, was eine Arbeitsumgebung emuliert, für die eine solche Anwendung entwickelt wird.

Wenn Sie aus dem Image einen Container erstellen wollen, führen Sie ein paar Befehle aus, die im Grunde genommen das Image kopieren und in eine virtuelle Umgebung umwandeln. 

Was sind die Herausforderungen?

An sich ist Docker eine recht sichere Technologie. Wir sprechen also nicht davon, dass Docker eine Bedrohung darstellt. Es ist eher die Container-Technologie selbst, und vor allem nur dann, wenn es an einer gründlichen Sicherheitsüberwachung mangelt.

Sicherheit im Netzwerk

Wenn Sie Docker-Container verwenden, verursacht dies eine Menge Netzwerkverkehr. Diese Tatsache macht Ihr gesamtes Netzwerk anfällig für Sicherheitslücken. Einige der Container können aufgrund der Art der Anwendungen oder Microservices, für die sie verwendet wurden, Internetzugang bekommen. Und da Container nicht die gleiche strikte Isolierung bieten wie virtuelle Maschinen, können bei einer Kompromittierung eines einzelnen Containers auch die übrigen Container betroffen sein.

Best Practices:

  • verwenden Sie TLS
  • speichern Sie niemals Namespace-Attribute innerhalb eines Containers

Die Herkunft des Basis-Images

Docker-Container sind eine Open-Source-Technologie. Entwickler laden Images aus dem Internet herunter und verwenden sie weiter. Nicht alle Open-Source-Projekte können als völlig risikofrei bezeichnet werden. Auch wenn die Kernteams, welche die Sicherheit fleißig überwachen, verlassen sich Open-Source-Projekte eher auf persönliche Motivation als auf Bezahlung und Unternehmensstrukturen, was für ihr Sicherheitsniveau möglicherweise nicht förderlich ist.

Best Practices:

  • verwenden Sie Images aus etablierten und sicheren Quellen
  • zögern Sie nicht, eine Image Datei vor dem Öffnen ein paar Minuten länger manuell zu überprüfen

Berechtigungen

Wie bei jedem anderen Tool ist es wichtig, die Benutzerrechte stets im Auge zu behalten. Um für den Rest Ihrer Organisation unbedenklich zu bleiben, sollten Container auf nichts zugreifen können, was für ihre Aufgaben nicht erforderlich ist. Container sollen am besten unter Benutzerrechten ausgeführt werden, die nur zum Entwickeln und Testen einer bestimmten Software notwendig sind.

Images können eine zusätzliche Gefahr darstellen, wenn sie Dienste starten, die leicht angreifbar sind. Abgesehen davon sollten Sie keine Anmeldedaten oder andere geheime oder sensible Informationen in Image-Dateien oder Containern speichern. Dies kann zu gefährlichen Datenverlusten führen.

Best Practices:

  • verwenden Sie niemals einen Root-Benutzer, wenn Sie Ihre Container ausführen
  • aktualisieren Sie Ihren Docker-Umgebung/Daemon regelmäßig auf die neueste Version
  • Container dürfen keine neuen Privilegien selbstständig erlangen können
  • halten Sie innerhalb eines Images nur ein ausreichendes Minimum an Code, Bibliotheken usw. vor.

Viele Container, Elemente und Cluster: Schwierig zu überwachen

Eine der Ideen hinter Containern ist, dass sie kleiner als virtuelle Maschinen sind und es erlauben, kleinere Teile der Software schneller zu testen. Diese Tatsache führt in der Regel zu einer großen Anzahl an Containern, die innerhalb einer Organisation eingesetzt werden. Für jeden von ihnen müssen Sie neben der eigentlichen Deployment-Pipeline auch Benutzerrechte, Netzwerksicherheit, Image-Ursprung und vieles mehr regelmäßig überwachen.

Allein der Umfang dieses Aufwands erhöht die Anfälligkeit Ihrer Organisation für jegliche Sicherheitslücken.

Best Practices:

  • ein etablierter und automatisierter Arbeitsablauf
  • eine vertrauenswürdige Person oder ein Team, dass die Sicherheitsprobleme stets überwacht

Wer kümmert sich darum?

Wie Sie vielleicht schon gehört haben, gehören Containersicherheit und Continuous Delivery zu den Aufgaben eines Development Operations Engineers (DevOps Engineer). Aber es ist gar nicht so einfach, einen guten Spezialisten zu finden!

JCFINCH hat bereits viele talentierte DevOps-Ingenieure erfolgreich rekrutiert und hilft auch Ihnen gerne weiter Ihren nächsten Container-Guru zu finden. Rufen Sie uns an, um Ihre offene Position zu besprechen.