Membrane Service Proxy schützt das Backoffice der ERGO Direkt Versicherungen in Internet- und Mobile-Business
Internet- und Mobile-Business stehen im Fokus der ERGO Direkt Versicherungen. Über das Web und über mobile Apps können Kunden selbst Versicherungen abschließen oder über Self-Services Ihre persönlichen Daten pflegen. Diese Fallstudie beschreibt, wie das Open Source Projekt Membrane Service Proxy bei der ERGO Direkt als Security-Infrastruktur für das Internet Geschäft eingesetzt wird.
ERGO Direkt ist Deutschlands meistgewählter Direktversicherer und auf dem Weg zum führenden mobilen Versicherer. Die für das online Geschäft notwendige Absicherung übernimmt eine Security Infrastruktur bestehend aus Firewall- und Netzwerkkomponenten ergänzt durch anwendungsspezifische Prüfungen.
Abbildung 1:
Ausgangslage
Bis zum Sommer 2012 wurde für die fachliche Überprüfung von SOAP und REST basierten Nachrichten eine reine Eigenentwicklung verwendet. Der Kern der Eigenentwicklung bestand aus einer technischen Security Validierung, welche gegen SQL-Injection und andere Angriffe schützte, in dem sie Nachrichten mit einer Regelbasis überprüft hat. Die Überprüfung erfolgte inhaltsbasiert sowie mit Hilfe von White- und Blacklists. Die Muster und Regeln zur Validierung konnten komfortabel über eine graphische Benutzeroberfläche konfiguriert werden. Des Weiteren übernahm die technische Security Validierung das Monitoring und Reporting von Angriffsversuchen und Regelverstößen.
Im operativen Betrieb bot die Eigenentwicklung eine hohe Stabilität und Performanz. Die Bereitstellung von neuen Diensten war aber aufwändig und dauerte zu lange, da man manuell Web Anwendungen erstellen musste, die Anfragen abgefangen und an die technische Security Validierung weiterleitet haben.
Aufgabenstellung
Der Aufwand für die Bereitstellung neuer Dienste sollte minimiert werden, um schneller und günstiger reagieren zu können. Die technische Security Validierung sollte Aufgrund Ihrer Flexibilität und Konfigurierbarkeit in die neue Lösung übernommen werden. Auf das Erstellen einer Web Anwendung für jeden Dienst wollte man aber verzichten.
Die neue Lösung sollte zusätzlich zur inhaltlichen Prüfung Nachrichten auch gegen XML und JSON Schema Beschreibungen validieren. Ferner sollte sie eine Authentifizierung gegen die Backendsysteme durchführen und interne Adressen in WSDL Dokumenten in öffentliche für das Internet umschreiben.
Lösung
Als Ersatz für die selbst entwickelte Lösung wurde das Open Source Projekt Membrane Service Proxy der Firma predic8 in Bonn ausgewählt. Membrane ist ein quellenoffener, mit Java realisierter Reverse HTTP Proxy, mit guter Unterstützung für das SOAP Protokoll und für REST Ressourcen. Ferner bietet Membrane eine Reihe von Features, die für ERGO Direkt Versicherungen von Interesse sind:
- Validierung von Nachrichten gegen XML und JSON Schema
- Schutz vor XML und Denial of Service Attacken
- Aufbereitung von WSDL und XML Schema Dokumenten (Umschreiben von Adressen)
- Einfache Konfiguration
- Hohe Performanz und niedriger Bedarf an Ressourcen
Vorab wurde ein Proof of Concept durchgeführt und geprüft, ob Membrane performant und stabil genug für das Tagesgeschäft ist und mit der bestehenden technischen Security Validierung zusammen arbeiten kann.
Open Source Sponsoring
Für den IT Betrieb musste es möglich sein, Membrane im WebLogic Application Server von Oracle zu betreiben. Da ein Deployment im WebLogic bisher nicht möglich war, hat ERGO Direkt im Rahmen eines Open Source Sponsoring die Integration des Membrane Service Proxy in eine Web Anwendung finanziert. Die neue Membrane Web Anwendung ist JEE konform und kann in jeden JEE Anwendungsserver installiert werden. Die gesponserte Web Anwendung steht wie der Membrane Service Proxy selbst der Open Source Gemeinde zum Download und zur Weiterentwicklung auf der github-Seite zur Verfügung. Github ist eine beliebte Plattform für das gemeinsame Entwickeln von Open Source Software im Web.
Funktionsweise
Jede Nachricht wird durch den Membrane Service Proxy geleitet, der eine Überprüfung durchführt und eine aufbereitete Parameterliste an die technische Security Validierung übergibt, die dann entscheidet wie mit der Nachricht zu verfahren ist. Abbildung 1 illustriert den Ablauf von Anfragen aus dem Web oder vom Smartphone.
Anstatt wie bisher für jeden neuen Service eine Anbindung mit einer Web Anwendung zu entwickeln werden mit Membrane virtuelle Services konfiguriert. Zur Einrichtung eines virtuellen Service, welcher auch Service Proxy genannt wird, genügen wenige Zeilen Konfiguration in einer XML Datei. Zur Absicherung eines Service werden jetzt nur wenige Stunden anstatt mehrerer Tage für die Entwicklung einer Web Anwendung mit Java benötigt.
Abbildung 2 zeigt die Membrane Web Anwendung sowie die Anbindung an die technische Security Validierung über ein Plugin, welches die für die Validierung notwendigen Daten aus den Anfragen extrahiert.
Abbildung 2:
Das speziell für ERGO Direkt entwickelte Plugin ist für die Aufbereitung der Daten aus den Anfragen und für die Ansteuerung der technischen Security Validierung verantwortlich.
Validierungsfehler und eventuell auftretende Fehlermeldungen des Backoffice werden ausgefiltert und durch Tickets ersetzt. Details über fehlerhafte Aufrufe können danach über die Tickets bei einer Hotline erfragt werden. Angreifer, die über ungültige Anfragen versuchen aussagekräftige Fehlermeldungen zu provozieren, bekommen so nur nichtssagende Ticketnummern. Ferner werden nicht benötigte Systeminformationen aus den Antworten gefiltert.
Neben SOAP basierten Web Services wird auch REST und das bei Apps und HTML5 Anwendungen beliebte JSON Format unterstützt.
Fazit
Alle gestellten Aufgaben konnten erfüllt werden:
- Neue Services können innerhalb kurzer Zeit eingebunden werden.
- Die bestehende technische Security Validierung wird weiterhin eingesetzt.
- Membrane Service Proxy kann im WebLogic Server betrieben werden.
- Nachrichten werden gegen XML und JSON Schema validiert.
- Es findet eine Authentifizierung gegenüber den Systemen des Backoffice statt.
Die folgende Gegenüberstellung zeigt die Unterschiede der bisherigen Lösung und der Membrane basierten:
Eigenschaft | Bisherige Lösung | Membrane Service Proxy |
---|---|---|
Anbindung der technischen Security Validierung | Über manuell erstellten Code | deklarativ |
XML Schema Validierung | nein | ja |
JSON Schema Validierung | nein | ja |
Schematron Validierung | nein | ja |
Einrichten von neuen Diensten | Java Programmierung ist notwendig | deklarativ |
Filtern von Stacktraces | nein | ja |
Konfiguration über WSDL | nein | ja |
Ausfiltern von Details zur Installation | nein | ja |
Ausfiltern von Fehlermeldungen | nein | ja |
Authentifizierung im Backend | ja | ja |
Unterstützung von JSON und GWT | nein | deklarativ |