Was ist  Docker  Container Security?

Docker® verfügt über viele bewegliche Elemente und ist dadurch komplexer zu schützen als ältere Bereitstellungstechnologien. Der Schutz erfordert einen ganzheitlichen Ansatz – von Netzwerk- und Anwendungs-Firewalls bis zur Verteidigung der Container-Laufzeit und zum Host-Schutz.

Docker Container Security

Docker-Container werden auf die gleiche Weise geschützt wie andere Container. Der Schutz erfordert einen ganzheitliche Ansatz, bei dem alle Komponenten geschützt werden, vom Host bis zum Netzwerk. Aufgrund ihrer beweglichen Elemente gestaltet sich der Schutz von Containern für viele Unternehmen schwierig und erfordert mehr als rudimentäre Wachsamkeit.

Aspekte, die zu beachten sind

Dies sind einige Aspekte, die Sie im Hinblick auf den Schutz Ihrer Docker-Container berücksichtigen sollten:

  • Nutzung von Ressourcenkontingenten
  • Docker-Container nicht mit Root-Berechtigung
  • Sicherheit der Registrierungen Ihrer Docker-Container
  • Verwendung einer vertrauenswürdigen Quelle
  • Ermittlung der Codequelle
  • Entwurf von APIs und Netzwerken im Hinblick auf ihre Sicherheit

Nutzung von Ressourcenkontingenten

Mit Ressourcenkontingenten können Sie die Menge an Arbeitsspeicher und CPUs begrenzen, die ein Container aufnehmen kann. Die Konfiguration von Ressourcenkontingenten für jeden Container verbessert die Effizienz der Umgebung. Sie verhindert außerdem ein Ungleichgewicht bei der Verteilung der Ressourcen auf die Container in Ihrer Umgebung.

Dadurch können Ihre Container die erwartete schnelle Leistung zeigen und – besonders wichtig – mit optimaler Sicherheit arbeiten. Wird ein Container mit bösartigen Inhalten infiziert, kann er keine große Menge von Ressourcen aufnehmen, da diese durch das Kontingent begrenzt ist. Das minimiert die Auswirkungen des Angriffs. Dies ist eine einfache Sicherheitstaktik, die mithilfe von Command-Line-Flags umgesetzt werden kann.

Docker-Container nicht mit Root-Berechtigung

Bei der Entwicklung einer Anwendung ist es Best Practice, sich an den Grundsatz der geringsten Berechtigung zu halten. Damit ist gemeint, dass eine Anwendung nur auf die Ressourcen zugreifen kann und darf, die für ihr Funktionieren erforderlich sind. Dieses Verfahren ist eine der wichtigsten Möglichkeiten, Ihre Container vor unbefugtem Zugriff zu schützen.

Die Einschränkung des Zugriffs ist für die Sicherheit Ihrer Docker-Container essenziell. Dies ist auch der Grund, warum die Docker-Standardeinstellungen die Ausführung von Containern mit Root-Berechtigungen nicht zulassen. Wenn Ihre Container-Anwendung beispielsweise für einen bestimmten Exploit anfällig ist und Sie diese Anwendung als Root-Anwender ausführen, vergrößert sich die Angriffsoberfläche. Angreifern bietet sich damit ein einfacher Weg, höhere Berechtigungen zu erhalten.

Sicherheit der Registrys Ihrer Docker-Container

Die Container-Registrys, besonders die Registrys in Docker-Containern, bilden die Grundlage der Leistungsfähigkeit von Container-Plattformen. Sie können mithilfe von Registrys ein zentrales Repository von Images erstellen, die schnell und einfach heruntergeladen werden können. Bei allen Vorteilen sind sie jedoch mit zahlreichen Sicherheitsrisiken verbunden, falls Sie keine vertrauenswürdige Registry nutzen, die Sie gründlich recherchiert haben, z. B. Docker Trusted Registry. Sie installieren die Docker-Registry hinter der Firewall, die in Ihrer IT-Infrastruktur bereits implementiert ist. Auch wenn Sie so die Risiken mindern, die das Internet bietet, sollten Sie keine Uploads zur Registry oder Downloads aus der Registry durch Anwender zulassen.

Es kann zwar verlockend sein, sich den Aufwand zu sparen und den Zugriff zu ermöglichen. Dieser kleine Aufwand könnte jedoch eine umfangreiche Verletzung der Sicherheit der Registry verhindern. Eine nützliche Taktik, wie Sie dieser Verlockung begegnen können, besteht in der Implementierung einer rollenbasierten Zugriffskontrolle. So können Sie genau steuern, wer in Bezug auf die Registry worauf zugreifen kann.

Verwendung einer vertrauenswürdigen Quelle

Nachdem Sie die Container-Registry auf diese Weise geschützt haben, sollte sie nicht mit Container-Images aus unzuverlässigen Quellen infiziert werden. Es kann komfortabel erscheinen, einfach per Mausklick öffentlich verfügbare Container-Images herunterzuladen. Sie müssen dabei jedoch sicherstellen, dass die Quelle des Downloads vertrauenswürdig oder verifiziert ist.

Im Interesse der Vorsicht und der Sicherheit sollten Sie öffentliche Container-Registrys vermeiden und diejenigen verwenden, die Docker bietet, z. B. Docker Hub. Zusätzlich sollten Sie Tools zum Scannen von Images nutzen, um Sicherheitslücken in Images zu entdecken, diese zu schließen und damit Ihre Docker-Container zu schützen. 

Ermittlung der Codequelle

Wie oben erwähnt, ist die Verwendung zuverlässiger und vertrauenswürdiger Images für Ihre Docker-Container äußerst wichtig. Sie sollten den Code in diesen Images jedoch untersuchen, um sicherzustellen, dass er nicht infiziert ist – auch wenn diese Images aus einer vertrauenswürdigen Registry stammen. Docker-Images kombinieren den ursprünglichen Code mit Paketen aus externen Quellen. Diese Pakete stammen möglicherweise nicht aus vertrauenswürdigen Quellen.

In diesem Szenario sollten Sie Tools für die Quellcode-Analyse verwenden. Sie können die Pakete in den Images scannen, um festzustellen, woher der Code stammt. Dazu laden Sie die Quellen aller Pakete innerhalb der Docker-Images herunter. So können Sie Images mit bekannten Sicherheitslücken entdecken und direkt beim ersten Build für Sicherheit sorgen.

Entwurf von APIs und Netzwerken im Hinblick auf ihre Sicherheit

Docker-Container verwenden Application Programming Interfaces (APIs) und Netzwerke, um miteinander zu kommunizieren. Diese Kommunikation ist für den ordnungsgemäßen Betrieb von Containern unverzichtbar. Sie muss jedoch in geeigneter Weise geschützt und überwacht werden. Die APIs und das Netzwerk sind nicht Teil des Docker-Containers, sondern zusammen mit Docker verwendete Ressourcen. Dennoch stellen sie ein Sicherheitsrisiko für Container dar. Um Angriffe schnell blockieren zu können, sollten Sie Ihre APIs und Ihr Netzwerk mit Blick auf einfache Überwachung und auf Sicherheit konfigurieren. 

Zusammenfassung

Der Schutz von Docker-Containern erfordert einigen Aufwand, der sich aber lohnt. Sie brauchen einen ganzheitlichen Ansatz und müssen die Container-Umgebung auf jeder Ebene sichern. Auch wenn die oben beschriebenen Best Practices nach viel Arbeit aussehen, werden sie Ihnen in Zukunft sehr viel Zeit ersparen und Sie von größeren Sicherheitsrisiken entlasten. 

Weiterführende Forschung

Weiterführende Artikel