Gatekeeper Pattern
Cloud Computing erfreut sich zunehmender Beliebtheit. Das Auslagern von Diensten und Daten an einen externen Ort bietet diverse Vorteile im Hinblick auf Kosteneffizienz und Skalierbarkeit. Auch die zentrale Zugänglichkeit ist ein entscheidender Faktor, der die fortlaufende Verbreitung des Trends begünstigt. Jeder Benutzer kann zu jeder Tages- und Nachtzeit und an jedem Ort der Erde auf die ihm zugehörigen Informationen und Dienste zurückgreifen. Alles, was er dazu benötigt, ist eine Netzwerkverbindung sowie ein netzwerkfähiges Endgerät. Die zentrale Lage von Ressourcen macht jedoch auch einen potentiellen Schwachpunkt der Cloud-Architektur aus.
Problematik
Ein cloud-typisches Interaktionsszenario beinhaltet zwei verschiedene Akteure. Vom Client bzw. Endnutzer geht eine initiale Anfrage aus. Beispielsweise möchte er sich authentifizieren, vertrauliche Auskünfte beantragen oder eine Anwendung nutzen. Die Anfrage wird ohne Umwege an einen zentralen Server gesendet und anschließend von diesem verarbeitet. In Abhängigkeit von der Forderung des Clients führt der Server verschiedene Aktionen aus. Beispielhaft sei hierfür die Kommunikation mit Datenbanken oder das Anstoßen von externen Diensten. Die gesammelten Ergebnisse werden letztlich vom Server wieder an den Client übermittelt, sodass die Anfrage abgeschlossen werden kann.
Eine Problematik, die sich durch diese Kommunikationsarchitektur ergibt, beruht auf der fehlenden Trennung der Programmlogik innerhalb des Servers (siehe Abb. 1). Dieser dient zum einen als direkter Kontaktpunkt für eine beliebige Anzahl an Clients. Hierunter können sich sowohl rechtmäßige Benutzer, welche einen tatsächlichen Anspruch auf ihre jeweilige Forderung haben, als auch unrechtmäßige Benutzer befinden, denen keine Leistung erbracht werden darf. Der Server ist dementsprechend öffentlich und von jedem Endgerät aus kontaktierbar. Zum anderen ist derselbe Rechenknoten für die Orchestrierung und Instanziierung von Diensten sowie das Auslesen und die Übermittlung von vertraulichen Daten zuständig. Hier lässt sich ein Widerspruch erkennen. Auf derselben Rechnerinstanz findet gleichzeitig die Verarbeitung von unbekannten Anfragen sowie der Umgang mit sensiblen Informationen bzw. Diensten statt.
(Abbildung 1: Klassische Cloud-Architektur)
Potentielle Sicherheitslücken, die die beschriebene Architektur beinhaltet, lassen sich im Wesentlichen dem Bereich Security zuordnen. Aufgrund der direkten Kommunikationsmöglichkeit wird es Angreifern erleichtert, sich in das System einzuschleusen. Anfragen können beispielsweise so formuliert werden, dass der Zugriff auf eine dahinterliegende Datenbank ohne Umwege möglich ist. Das Auslesen oder Manipulieren von gesamten Informationsbeständen wäre eine denkbare Folge. Auch das Anstoßen sicherheitskritischer Dienste seitens eines Eindringlings kann ernsthafte Konsequenzen für unschuldige Benutzer sowie den Cloud-Betreiber nach sich ziehen. Neben der Sicherheit wird auch die Verfügbarkeit von Cloud-Diensten durch die direkte Kommunikationsmöglichkeit zwischen Client und Server gefährdet. Das kontinuierliche Senden von Anfragen mit dem Ziel einen Serverausfall herbeizuführen (Denial of Service-Angriff), ist effektiv möglich.
Lösung
Zur Lösung der vorangegangenen Problematik dient das sogenannte Gatekeeper Pattern. Die Idee, die diesem Architekturmuster zugrunde liegt, ist keinesfalls neu, sondern beruht auf zwei bestehenden Techniken. Zum einen wird auf das Prinzip der Firewall zurückgegriffen, welche Netzwerkzugriffe auf Systeme beschränkt. Des Weiteren dient das Fassade-Pattern aus der objektorientierten Programmierung als Grundlage. Der Kerngedanke dieses Entwurfsmusters besteht darin, eine Vielzahl von möglicherweise komplexen Schnittstellen vor dem Benutzer zu verbergen und ihm einen unkomplizierten Zugang zu einem System bereitzustellen.
In der Praxis kann der Gatekeeper als eine zusätzliche Serverinstanz verstanden werden, welche eine Vermittlerfunktion zwischen den Clients und dem Cloud-Server einnimmt (siehe Abb. 2). Anfragen seitens der Benutzer werden initial an den Gatekeeper geleitet und von diesem verarbeitet. Anschließend stellt der Gatekeeper eine Anfrage an den Cloud-Server, der ihm im Bestfall ein passendes Ergebnis liefert. Dieses übermittelt der Gatekeeper letztlich an den Benutzer und schließt somit die Anfrage ab.
(Abbildung 2: Anwendung des Gatekeeper Pattern)
Die Aufgabe des Gatekeepers besteht zum einen darin, die direkte Kommunikation von Client und Server zu unterbinden. Der Benutzer soll demnach keine Kenntnis vom Cloud-Server besitzen, sondern lediglich von der zwischengelagerten Schnittstelle. Des Weiteren trägt der Gatekeeper für eine geeignete Verarbeitung der Benutzeranfragen Sorge. Idealerweise werden nur solche Anfragen an den Cloud-Server weitergeleitet, die von rechtmäßigen Benutzern stammen bzw. keine Gefahr für die Sicherheit des Systems sowie die Integrität der Daten darstellen. Ggf. kann auch eine Überarbeitung der Anfragen dabei helfen, dass keine Sicherheitsrisiken eingegangen werden. Es ist hervorzuheben, dass der Gatekeeper ausschließlich Anfragen behandelt und übermittelt. Er hat beispielsweise keinen direkten Zugriff auf die Daten bzw. Dienste des Servers. Hierin liegt zugleich die Kernidee des Patterns. Sollte der Intermediär von Angreifern befallen werden, resultiert keine Gefahr für die Benutzer bzw. den Cloud-Betreiber. Der Eindringling besitzt mithilfe des übernommenen Gatekeepers keine Kontrolle über den Cloud-Server und hat demnach auch keinen Zugriff auf vertrauliche Ressourcen.
Nachteile
Die Anwendung des Gatekeeper Patterns hat positive Auswirkungen auf die Sicherheit von Cloud-Diensten. Jedoch ergeben sich auch Nachteile im Bezug auf Performance und Erreichbarkeit. Die Kommunikation über einen Vermittler hat zwangsläufig einen negativen Einfluss auf die Übermittlungsgeschwindigkeit von Informationen. Es ist nicht mehr ausreichend, Daten einmalig zu übermitteln. Dieser Vorgang, der auch das ver- und entpacken von Dateien beinhaltet, muss nun zweimal vollzogen werden. Insbesondere bei zeitkritische Anwendungen kann dies zu Problemen führen. Ein weiterer Nachteil ist die geringere Ausfallsicherheit, die sich durch den Einsatz eines zusätzlichen Rechenknotens ergibt. Sollte der Gatekeeper versagen, kann auch der Cloud-Server nicht mehr angesprochen werden. Um dieser Gefahr entgegenzuwirken, ist es sinnhaft, mehrere Instanzen des Gatekeepers zu betreiben. Hierdurch kann auch gleichzeitig ein erhöhtes Lastaufkommen bewältigt werden.