Der Einsatz von Containerplattformen in der Softwareentwicklung

28.04.2017
G DATA Blog

Diese Woche war unser Entwickler Kevin Wittek zu Gast beim Institut für Internet-Sicherheit, um dort im Rahmen des Podcasts CYBÄRCAST über die Themen Microservices, Container und Docker zu diskutieren. Was ist der Vorteil von Container-Technologien? Was sind die Unterschiede zwischen einer virtuellen Maschine und einem Container? Wie sind Container unter Sicherheitsgesichtspunkten zu bewerten?

Der Podcast vom Institut für Internet-Sicherheit

Der Cybärcast wurde vom Institut für Internet-Sicherheit (ifis) ins Leben gerufen, um technisch interessierte Computer-Nutzer über aktuelle Themen der IT und IT-Sicherheit zu informieren. In der aktuellen Folge dreht sich alles um die Themen Container-Technologie und Docker.

Folge 3 – Warum der Docker Wal in den Container wollte

Was ist Docker?

Docker ist eine Open-Source-Software von Docker Inc. die es Entwicklern ermöglicht, die Virtualisierungs-Features des Betriebssystems zu nutzen, um Anwendungen mithilfe von Container zu isolieren. Hierbei ist zu beachten, dass im Gegensatz zu klassischer Hypervisor-Virtualisierung mit virtuellen Maschinen, weiterhin der Betriebssystemkern von den Anwendungen geteilt wird. Die Einsatzzwecke von Containern sind vielfältig und umspannen den gesamten Softwarelebenszyklus, angefangen bei der Entwicklung bis hin zum Betrieb.

Container im Security-Context

Man könnte zu dem Schluss kommen, dass Container sich ideal dazu eignen, bestimmte Anwendungen praktisch "in Quarantäne" zu betreiben. Zwar sind Anwendungen in einem Container besser isoliert als die durch die Prozessisolierung auf Betriebssystemebene, allerdings ist der Isolationsgrad nicht so hoch wie beim Einsatz von virtuellen Maschinen. Unter sicherheitstechnischen Gesichtspunkten sind Container also keine Alternative zu Hypervisor-Virtualisierung. Darüber hinaus können allerdings für die Härtung von Systemen, die Software in Containern betreiben, die gleichen Techniken und Paradigmen wie beim Einsatz von klassischen Softwaresystemen eingesetzt werden, da Container durch Betriebssystemkern-Features realisiert werden.

Gerade bei der Nutzung öffentlicher Container-Images ist zu beachten, dass diese potentiell unerwünschten Programmcode enthalten und ausführen können.  Daher sollte der Einsatz von fremden Container-Images den gleichen Überprüfungsprozessen unterliegen wie andere Fremdsoftware.

Testen mit Containern

Klassischerweise wurden Container in der Vergangenheit hauptsächlich für den Betrieb von Software eingesetzt. Allerdings erlaubt uns der Einsatz von Containern auch die Art und Weise, mit der wir Software entwickeln und testen, fundamental zu revolutionieren. Dank Tools wie Docker können Entwickler innerhalb von Sekunden eine vollständige relationale Datenbank für Test- und Entwicklungszwecke hochfahren,
während in der Vergangenheit auf Ersatzlösungen wie In-Memory-Datenbanken zurückgegriffen werden musste, welche reale Bedingungen nur unzureichend abbilden. Dies erlaubt es uns erstmals, gleichartige Umgebungen für Entwicklung, Test und Produktion zur Verfügung zu stellen.

Um über die neuen Möglichkeiten dieser Technologie mit der Software-Community zu reden, hat Kevin im letzten Monat in Madrid die Greach Conf Entwicklerkonferenz besucht. Dort gab er einen Einblick in verschiedene Best-Practices für den Einsatz von Containern in Sofware-Testprozessen:

Wichtige IT-Security-News per E-Mail

  • Aktuelle IT-Gefahren
  • Schutz-Tipps für Privatkunden
  • 15 % Willkommensgutschein