Software Container - Quick Stats (1/2)

Die IT, insbesondere der Bereich der Softwareentwicklung, ist permanent im Wandel: Angefangen bei der Projektorganisation und Sichtweise - hier sind mittlerweile agile Ansätze weit verbreitet - über Verflechtung von Entwicklung und Betrieb in DevOps Teams, bis hin zu den verwendeten Technologien und Werkzeugen. Als Beispiel kann die immer weiter reichende Automatisierung angeführt werden mit Tools wie Jenkins, Ansible oder Puppet.

Eine weitere Technologie, die nicht mehr wegzudenken ist und stetig an Relevanz gewinnt, sind Software Container. Dieses Thema ist in aller Munde und bringt viele Vorteile für Unternehmen - insbesondere für DevOps-Teams - mit sich.
Hier geben wir einen Einblick in die Container-Technologie und widmen uns speziell der Herausforderungen im Kontext der IT-Sicherheit. Wie Unternehmen, IT-Abteilungen und insbesondere Entwickler sind auch wir gefordert, uns der Container-Technologien und der neuen Aufgaben und Rahmenbedingungen anzunehmen und in diesem Bereich für Sicherheit zu sorgen, sei es in der Entwicklung oder zur Laufzeit der containerisierten Anwendungen.


Es gibt verschiedene Statistiken rund um den IT- und Software-Container-Markt. Um die aktuelle und steigende Bedeutung der Container-Technologie zu verdeutlichen hier ein paar ausgewählte Zahlen:

  • Etwa drei von zehn Unternehmen haben mittlerweile Container im Einsatz und weitere drei von zehn planen oder evaluieren den Einsatz.
  • Im Jahr 2018 wurde das Volumen des Marktes für Software Container auf 1,5 Milliarden Dollar geschätzt.
  • Eine Prognose lässt vermuten, dass das Volumen im Jahr 2025 ca. 8,2 Milliarden Dollar erreichen könnte.
  • Schätzungen zum jährlichen Wachstum geben Werte von 26,5% (2019 bis 2025) oder gar 31,8% (2018 bis 2025) an.


(Quelle: www.grandviewresearch.com)

Kontakt


Gerne stellen wir uns auch im persönlichen Gespräch vor.
Dazu freuen wir uns auf eine Meldung unter +49 (2156) 974 90 60
oder kontakt@suresecure.de.

Was sind Container eigentlich?

Container sind „Softwarepakete“, die die containerisierte Anwendung und alle weiteren benötigten Daten enthalten. Das können bspw. Konfigurations-Dateien, eingebundene Softwarebibliotheken oder Laufzeit-Umgebungen, wie die Java Runtime Environment, sein. Container werden zur Laufzeit in einer isolierten Umgebung ausgeführt; im Vergleich zu virtuellen Maschinen gehört das Betriebssystem hier nicht dazu. Das Gegenstück zum Hypervisor bei der Virtualisierung ist bei der Container-Technologie die Container-Engine. Die am weitesten verbreitete Container-Engine ist Docker. Auf dieser Ebene geschieht die Abstraktion, anders formuliert: Sie ermöglicht die isolierten Umgebungen der virtuellen Maschinen bzw. der Container.

Anmerkung: Der Vergleich mit virtuellen Maschinen wird oft gezogen und dient hier dem leichteren Verständnis, auch wenn er nicht in jeder Hinsicht optimal ist. Diese zwei Technologien lösen verschiedene Probleme und die besten Ergebnisse können in den meisten Umgebungen und Fällen aus einer Kombination beider erzielt werden.

Container bringen diverse Vorteile mit sich. Die wichtigsten im Überblick:

  • Kompaktheit: Geringere Datenmengen und geringerer Overhead (Überhang). Ein Container besteht aus der Anwendung und den von ihr benötigten Daten. Es ist kein extra Betriebssystem pro Anwendung vorhanden.
  • Portabilität: Die Abstraktion durch die Container-Engine ermöglicht die Unabhängigkeit von Hardware und Betriebssystem, auf denen die Container betrieben werden sollen. Eine Folge ist, dass die Entwickler unkompliziert auf Plattformen entwickeln können, die sich im Verhalten nicht von der Produktion unterscheiden.
  • Wiederverwendbarkeit: Container können inklusive aller weiteren benötigten Daten zu Container-Images kompiliert werden. Diese enthalten alle Daten des Containers und können unkompliziert auf einen Host mit der entsprechenden Container-Engine kopiert und ausgeführt werden.
  • Skalierbarkeit: Container können in kurzer Zeit zur Verfügung gestellt und gestartet werden. In Minuten oder teilweise wenigen Sekunden starten sie bereits. Ein allgemeiner Anwendungsfall ist bspw. eine erhöhte Auslastung. Auf diese kann schnell reagiert und die Verarbeitung durch zusätzliche Anwendungsinstanzen in automatisch ausgerollten Containern ohne Performancebeeinträchtigung gestartet werden.

Container-Sicherheit

Auch containerisierte Anwendungen können Angriffsfläche bieten. Wie oben in der Grafik zu sehen sind mehrere Komponenten vorhanden, die geschützt werden müssen.
Abgesehen von technologischen Aspekten spielen auch Arbeitsweise und -kultur eine wichtige Rolle. Zum Beispiel bieten GitHub oder DockerHub die Möglichkeit, sich Aufwand zu sparen, indem von anderen entwickelte Container-Images heruntergeladen und im eigenen System betrieben werden. Dadurch können Schwachstellen eingebunden werden, die nicht aus dem Code der eigenen Anwendungen stammen, sondern durch eingebundene und bspw. veraltete Softwarebibliotheken in den Container „importiert“ werden.

Container bieten also offensichtliche Vorteile, aber es gehen auch diverse Risiken damit einher:

  • Der Inhalt von nicht komplett selbst entwickelten Containern ist nicht sicher bekannt:
    • Hat die im Container-Image enthaltene Anwendung oder eingebundene Software Schwachstellen?
    • Ist eventuell sogar Schadcode in dem Container enthalten?
  • Container müssen vor der Ausführung in Produktion geprüft und validiert werden:
    • Kann ich Container-Images effizient auf Schwachstellen prüfen?
    • Kann ich eingebundene Software und Konfigurationen auf Aktualität und Schwachstellen prüfen?
    • Kann ich meine Container-Images auf zurückgelassene kritische Daten, wie Passwörter und SSH-Keys prüfen?
  • Schutzmaßnahmen müssen mit Containern umgehen können:
    • Kann meine Monitoring-Lösung Container zur Laufzeit korrekt und detailliert überwachen?
    • Kann meine Sicherheits-Lösung Container und Workloads zur Laufzeit schützen?
    • Kann meine Sicherheits-Lösung auffälligen Datenverkehr der Container und Malware im System zuverlässig erkennen?

Um diese Fragen beantworten und eine Lösung entwickeln zu können, ist ein grundlegendes Verständnis für die Technologie und Notwendigkeit der Sicherheit bei allen beteiligten Parteien erforderlich. Nur durch einen ganzheitlichen Ansatz, Zusammenarbeit von IT-Sicherheits- und DevOps-Teams sowie entsprechenden technischen Sicherheitslösungen und -werkzeugen kann bestmöglicher Schutz für Container und ihrer Umgebung gewährleistet werden.
Sicherheit muss ein elementarer Bestandteil des Entwicklungsprozesses werden. Ein verpflichtendes Ziel ist die Integration von Sicherheitswerkzeugen und -maßnahmen; möglichst ohne Beeinträchtigung aller übrigen Abläufe und Prozesse.

Zuerst möchten wir auf den Wandel der Arbeitsweise und -kultur sowie das Adaptieren des erforderlichen „Mindsets“ eingehen:

Wie bereits erwähnt sind Kooperation und Kommunikation ein wichtiger Bestandteil. Es ist notwendig, dass Sicherheitsverantwortliche die Prozesse während Softwareentwicklung und -betrieb sowie die Ziele und Kriterien nach denen gearbeitet wird verstehen. Das schließt auch ein, die Schmerzpunkte, Wünsche und ggf. Kritik von DevOps-Teams in das Sicherheitskonzept und die Entscheidung der zu treffenden Maßnahmen einzubeziehen. Auf der anderen Seite ist es erforderlich, dass an Entwicklung und Betrieb beteiligte Personen verstehen, dass Sicherheit kein optionales Kriterium ist und wieso es so wichtig ist, sichere Software zu entwickeln und zu betreiben. Ein Verständnis dafür, was die größten Sicherheitsrisiken für ihre Systeme und Software sind, sollte in Zusammenarbeit mit Sicherheitsverantwortlichen geschaffen werden.

Sicherheitslücken und Schwachstellen möglichst früh während des Entwicklungsprozesses zu finden und zu beheben sollte ebenfalls eine hohe Priorität haben. Einerseits kann hierdurch vermieden werden, dass Container mit Sicherheitslücken überhaupt betrieben werden und so Angriffsvektoren bieten, andererseits ist dies auch wirtschaftlich ein Vorteil: Je früher eine solche Schwachstelle auffällt, desto weniger kostet es sie zu beheben. Die Kosten sind ein Vielfaches eine solche Nachbesserung erst in der Produktion zu implementieren im Vergleich zu dem Aufwand der Behebung in der Anfangsphase der Entwicklung.

In unserem zweiteiligen Blog über das Thema Software Container arbeiten wir die Anforderungen und Risiken beim Einsatz von Containern auf und stellen Lösungsansätze vor. Der zweite Teil erscheint am 29.11.2019.

Möchten Sie in einem persönlichen Beratungsgespräch mehr erfahren? Kontaktieren Sie uns gerne dazu unter +49 (2156) 974 90 60 oder per E-Mail an kontakt@suresecure.de.