In Cloud-Umgebungen wird ein Grossteil der Hard- aber auch Software durch den Anbieter bereitgestellt. Die Sicherheit ist hier ein wichtiger Faktor, da die Cloud nicht nur von überall aus erreichbar ist, sondern mitunter von mehreren Parteien parallel benutzt wird. Da die Bereitstellung der einzelnen Komponenten je nach Anwendungsfall durch eine andere Partei erfolgt liegt auch die Verantwortung oftmals sowohl beim Anbieter wie auch beim Anwender selbst. Dieses Modell der geteilten Verantwortung wird auch als shared Responsibility bezeichnet und bildet die Grundlage für alle Sicherheitsrelevanten Fragen in der Cloud.
Servicemodelle
Grundsätzlich lässt sich sagen, dass der Betreiber für die angebotenen Dienste der Cloud verantwortlich ist , während der Kunde für alles verantwortlich ist was mit diesen Diensten geschieht. Azure, AWS sowie GCP bieten verschiedene Arten von Services an. Nach eigenen Aussagen dieser Anbieter liegt die Verteilung der Verantwortung dabei je nach Serviceart bei einer anderen Partei. Es ist daher zunächst wichtig den angebotenen Service logisch einzuordnen, wie dies etwa von NIST getan wurde.
Infrastructure-as-a-Service (IaaS)
Die Infrastruktur in Cloud-Diensten wird komplett durch den Anbieter bereitgestellt. Der Anbieter stellt sowohl Server, Speicher und das Netzwerk für den Betrieb bereit. Die Verantwortung liegt hier einzig und allein beim Serviceanbieter. Er muss sich um den reibungslosen Betrieb kümmern.
In den meisten Fällen wird die Hardware in Form von virtuellen Maschinen zur Verfügung gestellt. Hierbei kann es durchaus vorkommen, dass mehrere Kunden einen virtuellen Server auf der gleichen Hardware erhalten und sich diese teilen. Darauf muss geachtet werden. Ist dies nicht erwünscht, so muss der Kunde darauf achten und gegebenenfalls einen anderen Anbieter oder eine passende Serviceoption wählen.
Zur Infrastruktur zählt ebenfalls das Betriebssystem. Der Anbieter führt daher regelmässig Sicherheitsupdates durch und stellt bei bedarf gehärtete Versionen zur Verfügung.
Platform-as-a-Service (PaaS)
Als Plattform werden durch den Anbieter bereitgestellte Middleware-Lösungen bezeichnet. Dabei kann es sich von Laufzeitumgebungen für Programmiersprachen bis hin zu Container-Diensten um eine Vielzahl von Lösungen handeln. Der Kunde nutzt diese Dienste um eigene Anwendungen darauf zu implementieren.
Für den Kunden stellt dies eine komfortable Lösung dar um schnell eine Anwendung auszurollen. Zudem kümmert sich der Anbieter darum, dass Updates zügig eingespielt werden. Dies kann jedoch auch ein Nachteil sein, wenn alte Versionen auslaufen und Legacy-Software angepasst werden muss da diese sonst nicht mehr lauffähig wäre.
Die Verantwortung liegt hier zum Teil beim Anbieter wie auch beim Kunden. Während sich der Anbieter beispielsweise darum kümmern muss die neuesten Sicherheitsupdates für die Middleware einzuspielen liegt die Verwaltung der darauf implementierten Software beim Kunden.
Software-as-a-Service (SaaS)
Software-as-a-Service dürfte jedem bekannt sein, der schon einmal einen E-Mail-Dienst über seinen Browser angesteuert hat. Hier bietet der Serviceanbieter einen Dienst als Ganzes an. Für den Kunden ist dies zwar die einfachste, jedoch am wenigsten flexible Lösung. Der Kunde hat die Möglichkeit die angebotene Lösung zu individualisieren, eigene Logik zu implementieren ist meist jedoch nur beschränkt möglich.
Die Verantwortung liegt hier grösstenteils beim Anbieter. Bei einem Shopsystem beispielsweise übernimmt der Anbieter die Verantwortung für die korrekte Abrechnung und kümmert sich darum, dass die Zahlung auch mit allen Zahlungsmitteln funktioniert und der Warenkorb keine falschen Daten anzeigt. Nichtsdestotrotz liegt es in der Verantwortung des Kunden bei der angebotenen Ware und den Geschäftsbedingungen die Gesetzte einzuhalten.
Der Kunde muss zusätzlich sicherstellen, dass jeder Dienst richtig konfiguriert ist. Gerade bei SaaS-Anwendungen spielt das eine wichtige Rolle. Diese funktionieren meist Out-of-the-Box weshalb die richtige Konfiguration meist vernachlässigt wird.
Datenbanken in der Cloud lassen sich oftmals nicht zwischen SaaS und PaaS unterscheiden. Eine Datenbank allein bietet keinen Mehrwert und stellt doch ein eigenes Produkt dar. Je nach Literatur oder Anbieter wird mal die eine mal die andere Bezeichnung gewählt. Häufig werden Datenbanken auch als Database-as-a-Service (DBaaS) deklariert und damit in eine eigene Kategorie der Servicemodelle gesteckt.
Geteilte Verantwortung
Wie aus den Servicemodellen ersichtlich steigt die Verantwortung für den Cloud-Anbieter je mehr Funktionalität dieser anbietet. Gleichzeitig fällt jedoch die Flexibilität für den Kunden, welcher sich dann entscheiden muss den Service in Anspruch zu nehmen oder selbst zu Implementieren. Da Software sehr komplex ist, spiegelt sich dies auch bei der Frage der Verantwortung wieder. Bevor eine Leistung bezogen wird sollte diese unbedingt geregelt sein.
- Identitätsmanagement: Auch wenn die Infrastruktur dafür durch den Anbieter bereitgestellt wird, ist es in der Verantwortung des Kunden Identitäten und Rollen zu vergeben und diese zu warten. Der Kunde muss entscheiden welcher Mitarbeiter welche Rechte bekommt und wann ihm diese wieder entzogen werden. Wenn ein gekündigter Admin alle Produktivsysteme herunterfährt weil er noch die Rechte und Zugriffsschlüssel dazu hat, kann der Anbieter hier keine Verantwortung für dessen Handeln übernehmen. Diese liegt beim Kunden.
- Betriebssysteme: Betriebssysteme werden durch den Anbieter bereitgestellt und auf dem aktuellen Stand gehalten. Sicherheitsupdates müssen jedoch eingespielt werden. Der Kunde muss daher ein Wartungsfenster bereitstellen.
Installierte Software liegt jedoch in der Verantwortung des Kunden. Hier muss der Kunde darauf achten neueste Patches einzuspielen. Accounts und Zugriffsrechte werden ebenfalls durch den Kunden betreut. - Anwendungen: Wie bereits erwähnt liegt es einzig und alleine in der Verantwortung des Kunden Anwendungen abzusichern und darauf zu achten keine Schadsoftware auf den Systemen zu installieren.
- Datenbanken: Für die Verfügbarkeit und Sicherheit der Datenbank ist der Anbieter verantwortlich. Backups werden ebenfalls durch den Anbieter durchgeführt.
Die Rechtevergabe liegt aber auch hier wieder beim Kunden. Er muss entscheiden welcher Mitarbeiter welche Aktionen ausführen darf. Ebenso muss der Kunde bestimmen wann welche Backups erstellt werden. - Netzwerk: Die Verfügbarkeit des Netzwerks wird durch den Anbieter sichergestellt. Er sorgt dafür, dass Netzwerkadapter nicht einfach ausfallen und falls doch redundante Verbindungen bestehen.
Der Kunde hat jedoch die mühsame Verantwortung das bereitgestellte Netzwerk zu konfigurieren. Zwar werden oft Wizards für die Konfiguration angeboten, bei grossen Netzwerken kann es jedoch selbst mit diesen extrem kompliziert werden.
Auswirkungen auf die Entwicklung
Die meisten Sicherheitslücken entstehen durch falsche Konfiguration. In der Cloud ist dies nicht anders. Cloud-Anbieter unterstützen zwar den Prozess, um ein Sicherheitskonzept und aufwendige Konfigurationen kommen Anwender jedoch nicht herum.
Gerade für die DevOps ist der Aufwand in der Cloud meist nicht anders als bei On-Premises-Lösungen und stellt diese sogar vor neue Herausforderungen. Wird beispielsweise eine Testumgebung benötigt, so könnte diese vor Ort schnell auf einem alten Rechner aufgesetzt werden, welcher über das Firmennetzwerk erreichbar und nach aussen hin abgeriegelt ist. In der Cloud sieht das anders aus. Wer hier nicht genau weiss was er macht kann mit einer unbedacht aufgesetzten Testumgebung schnell ein Sicherheitsrisiko für den Produktionsbetrieb erzeugen.