Viele Entwickler verlieren aufgrund des hohen Zeitdrucks die Sicherheitsaspekte aus den Augen. Wer sie beachtet, bedient sich meist bei Open-Source-Lösungen, die allerdings Defizite bei Skalierbarkeit, Performance und Sicherheitsstandards für Unternehmen aufweisen. Die Lösung für sichere Entwicklungsumgebungen bilden Konnektoren.

Klassische Systemumgebungen in der Anwendungsentwicklung sind in der Regel monolithisch und kaum skalierbar. Sie lassen sich zwar durchaus auf virtuellen Instanzen einsetzen, doch Upgrades und Management gestalten sich meist schwierig.

Aufgrund des steigenden Marktdrucks müssen Unternehmen heutzutage neue Anwendungen und Funktionen immer schneller bereitstellen. Daher nutzen sie vermehrt sogenannte Micro-Services. In dieser Architektur arbeiten kleinste funktionale Bereiche in Containern, die vom Gesamtsystem monolithischer Systeme entkoppelt sind und sich somit leichter kontrollieren und verändern lassen. Auftretende Fehler wirken sich dadurch weniger gravierend auf das Gesamtsystem aus. Zudem lassen sich einzelne Container leicht entfernen, neu starten oder hinzufügen. Die „Lebensdauer“ von Containern ist dabei meist sehr gering und liegt in der Regel bei wenigen Minuten oder Stunden.

Zahlreiche Anforderungen

Unabhängig von den jeweiligen Systemumgebungen gibt es in Unternehmen einheitliche Anforderungen an diese Application-Services, etwa in den Bereichen Traffic-Management, Verfügbarkeit, Sicherheit und Performance. Dabei lassen sich die Kommunikationsströme darin unterscheiden, ob eine Anwendung in einer Micro-Service-Umgebung mit der Außenwelt – zum Beispiel dem Internet – kommuniziert oder nur innerhalb der Applikationswelt mit gleichen oder ähnlichen Micro-Services in Verbindung tritt. Im ersten Fall spricht man von einer „Nord-Süd-“, im zweiten von einer „Ost-West-Kommunikation“.

Für die gewünschte Flexibilität und Agilität moderner DevOps-Umgebungen wie PaaS sind Automatisierungs- und Orchestrierungswerzeuge notwendig. Diese minimieren manuelle Eingriffe und vermeiden sie sogar in den meisten Fällen vollständig. Die weitgehende Automation von Container-Management und Orchestrierung realisiert man dabei häufig mit Systemen wie Docker, Kubernetes, Mesos oder OpenShift.

Zu den wichtigsten Funktionen dieser Tools gehört ein Scheduler, mit dem sich Container provisionieren und aktivieren lassen. Aber auch ein kontinuierliches Monitoring ist notwendig, um die Verfügbarkeit von Services zu gewährleisten. Weitere Funktionen stellen wichtige Dienste bereit, die neue Services erkennen und diese an bestehende Hosts verbinden sowie den Zugriff darauf ermöglichen.

Vergleich konventioneller Systeme mit Micro-Services. Bild: F5 Networks

Der Begriff „DevOps“, also die Verknüpfung von Entwicklungs- und Betriebsprozessen, ist nicht als eine eigene Abteilung innerhalb eines Unternehmens zu verstehen. Er beschreibt eine Methodik, mit der sich Geschäftsanforderungen durch agile IT-Infrastrukturen und Anwendungsdienste so schnell wie möglich umsetzen lassen. In den meisten Fällen handelt es sich dabei nicht um isolierte IT-Inseln, sondern um mit der Außenwelt vernetzte Prozesse und Interaktionen mit anderen Services. Entsprechend stellt sich die Frage nach der Bereitstellung von Application-Services, die mithilfe einer geeigneten Architektur umzusetzen ist. Dabei darf es keine Kompromisse oder Abstriche in sicherheitsrelevanten Anforderungen geben. Diese sind unabhängig vom Bereitstellungskonzept der Anwendungen zu erfüllen.

Anwendungsdienste in Containerumgebungen

Mit den Bordmitteln der Containerumgebungen lassen sich zum Beispiel grundlegende Dienste wie Hochverfügbarkeit abbilden. Doch verschiedene Systemumgebungen bringen auch unterschiedliche Services mit sich und erhöhen die Komplexität sowie den Lernaufwand überproportional. Daher ist zu überlegen, ob bereits in der traditionellen IT eingesetzte und bewährte ADCs (Application Delivery Controller) auch diese Dienste in der Micro-Services-Welt bereitstellen können. Hier lässt sich dann eine Brücke zwischen den NetOps- (Network Operations, Netzwerkbetrieb) und DevOps-Teams bilden. Dabei sind die Integrationslösungen konventioneller ADC-Systeme durch Containerkonnektoren nahtlos in die bestehenden Container-Cluster und Orchestrierungswerkzeuge integrierbar.

Ein ADC kann somit sowohl für den Ost-West- als auch für den in der Regel wichtigeren Nord-Süd-Datenverkehr zum Einsatz kommen. Für die containerübergreifende Kommunikation bieten sich Lösungen an, die in virtuellen Systemen oder als Container nutzbar sind. Netzwerkübergreifende Verbindungen werden indes recht häufig durch hardwarebasierte ADCs bedient. Denn deren spezielle Performance-Eigenschaften wie hardwaregestützte Verschlüsselungs- oder Komprimierungstechnik erfüllt die Leistungsanforderungen moderner IT-Systeme am besten. Die folgenden Abschnitte führen einige wichtige Applikationsdienste auf, die moderne ADC-Architekturen für die traditionelle IT wie auch für DevOps-Systeme bereitstellen können.

Verfügbarkeit und SSL-Offload

Der Begriff Verfügbarkeit bedeutet nicht nur, dass eine bestimmte Anwendung nutzbar ist und bleibt, sondern auch, dass das Gesamtsystem aus Container-Clustern, Management- und Orchestrierungswerkzeugen verfügbar ist. Eine Grundregel des Application Delivery Networkings besagt: „Let servers serve.“ Gemeint ist die Konzentration von Servern auf ihre Hauptaufgabe: die Bereitstellung von Anwendungen.

Alle Nebenaufgaben eines Servers, zum Beispiel die Verschlüsselung oder Komprimierung des Datenverkehrs, sollte der ADC übernehmen (Offload). Dann erhalten die Server ihre hohe Leistungsfähigkeit zurück, die sie für ihre Hauptfunktion benötigen.

Offloading-Funktionen tragen zu den Sicherheitsmaßnahmen moderner IT-Umgebungen bei. Die Terminierung verschlüsselten Datenverkehrs (SSL-Offload) entlastet nicht nur die Server beträchtlich, sondern erlaubt durch Full-Proxy-Architekturen moderner ADCs eine weitergehende Untersuchung des Datenverkehrs. Dies ist nicht zuletzt deswegen relevant, weil Angreifer Schadprogramme zunehmend auch in verschlüsselten Datenverbindungen transportieren.

Angriffe abwehren

Die häufigsten Angriffe basieren neben der Verbreitung von Viren und Trojanern auf Spam- und Phishing-Mails sowie auf Denial-of-Service-Angriffen. Diese werden durch verteilte Bot-Netze potenziert (Distributed Denial of Service, DDoS) und führen so zu Angriffsvarianten, die vorhandene Bandbreiten eines Netzes schnell erschöpfen. Die DDoS-Abwehrmaßnahmen beschränken sich dabei nicht mehr auf die Netzwerk- und Transportebenen (OSI-Layer 3 bis 4), sondern sollten heutzutage auch Angriffe auf Anwendungsebene (Layer 7) einbeziehen.

Application Services in Containerumgebungen für den Nord-Süd-Verkehr. Bild: F5 Networks

Somit sind Firewall-Techniken notwendig. Unter Berücksichtigung aktueller Angriffsvektoren bedarf es nicht nur einer klassischen Netzwerk-Firewall, sondern auch einer spezialisierten Web Application Firewall (WAF). Diese gehört zur Standardlösung moderner Sicherheitskonzepte, um Angriffe auf geschäftskritische Anwendungen zu erkennen und abzuwehren.

Zudem ist ein strenges Authentifizierungs- und Autorisierungssystem zu etablieren, das nicht nur eine spezifische und mehrstufige Zugangskontrolle erlaubt, sondern auch kontextbezogene Regeln einbindet. Damit ist der Zugang nicht nur an eine bestimmte Person und Identität gebunden, sondern bezieht weitere Rahmenbedingungen wie den Sicherheitsstatus des genutzten Endgeräts oder den Aufenthaltsort des Anwenders ein.

Verbindung zur Außenwelt

Um für DevOps-Umgebungen eine einfache Integration der wichtigen Applikationsdienste zu ermöglichen, setzen ADC-Anbieter einen „Container Connector“ ein. Dieser fungiert als Schnittstelle zwischen den Containern, den Orchestrierungs-Tools und der Außenwelt. Dabei muss die IT diese Dienste genauso unkompliziert und flexibel einsetzen und verändern können, wie dies für alle Micro-Services gilt.

Damit die Kommunikation zwischen diesen Welten reibungslos und automatisiert ablaufen kann, sind programmierbare und offene Schnittstellen innerhalb eines ADCs unverzichtbar. APIs, SOAP, REST, JSON und Python sind nur einige wenige Varianten, die bei der nahtlosen Integration beider Welten eine wichtige Rolle spielen.

Fazit

Die Anforderung „sicheres Programmieren“ ist leider fern jeder Realität der Anwendungsentwicklung. Denn gerade im schnelllebigen Business-Umfeld verändern sich Applikationen ständig – zu möglichst geringen Kosten. DevOps ist ein Weg, diesen Anforderungen gerecht zu werden.

Dass hier keine Abstriche bei Sicherheit und Compliance nötig sind, zeigen moderne ADC-Konzepte. Sie spielen nicht nur in DevOps-Umgebungen ihre Stärken aus, sondern unterstützen auch weitere Trends wie die Cloud-Migration.

Ralf Sydekum ist Technical Manager DACH bei F5 Networks, f5.com/de.