Tipps für sichere cloudnative Anwendungen
Aktuelle cloudnative Architekturen nutzen moderne Software, um Unternehmen die passenden Mittel an die Hand zu geben, die sie zur sicheren Implementierung ihrer Anwendungen benötigen. Ein klarer Schwerpunkt wird dabei auf die Cloud-Infrastruktur gelegt. Cloudnative Sicherheit geht dabei von denselben Voraussetzungen wie die Anwendungssicherheit aus und befolgt einen zeitgemäßen, pragmatischen Ansatz, der Konzepte wie Zero Trust und Defense in Depth beinhaltet. Die cloudnative Anwendungssicherheit erfordert denselben Ansatz und wird durch entsprechende Tools und Dienste ergänzt.
Was versteht man unter „cloudnativer Sicherheit“?
Unter cloudnativer Sicherheit versteht man den Schutz von Plattformen, Infrastrukturen und Anwendungen in der Cloud. Dabei werden Sicherheitsmechanismen ab dem Beginn des Entwicklungsprozesses bis in die Produktion hinein eingebunden. So entstehen mehrere Schutzschichten und es kann laufend nach neuen Schwachstellen gesucht werden.
Was versteht man unter „cloudnativ“?
Als „cloudnativ“ bezeichnet man eine Reihe von Gestaltungsprinzipien, Programmen und Diensten zur Entwicklung von Systemarchitekturen, wobei die Cloud als vorrangige Hosting-Plattform dient. Der größte Vorteil cloudnativer Anwendungen besteht darin, dass sie extrem skalierbar, widerstandsfähig und sicher sind, da sie von modernen cloudbasierten Infrastrukturen profitieren. Zudem verkürzt eine systematische kontinuierliche Integration die Entwicklungs- und Implementierungsphase.
Ein weiterer Vorteil liegt in ihrem unkomplizierten Betrieb: Einerseits entfallen mit der Cloud die arbeitsaufwändige Verwaltung und Bereitstellung herkömmlicher Serverinfrastrukturen, andererseits ermöglichen softwaregestützte Infrastrukturmodelle einen hohen Automatisierungsgrad.
Diese Definition vermittelt lediglich ein grundlegendes Verständnis des Begriffs „cloudnativ“. Umfassendere Definitionen finden Sie u. a. bei der Cloud Native Computing Foundation (CNCF).
Grundsätzlich kann man den Begriff „cloudnativ“ also so verstehen, dass die Cloud immer Priorität hat – „Cloud first“ lautet die Devise. Die CNCF definiert das Ganze allerdings anbieterneutraler und legt den Schwerpunkt darauf, dass Projekte und Software mit minimalem Konfigurationsaufwand zwischen verschiedenen Cloud-Anbietern portiert werden können. Ein weiteres Hauptaugenmerk sind Container, mit denen sich auch das größte CNCF-Projekt (Kubernetes) befasst. Unternehmen könnten also von sich behaupten, „cloudnativ“ zu sein, obwohl sie gehostete Dienste nutzen, die nicht der Definition der CNCF entsprechen. Welche Definition konkret die richtige ist, bleibt dem jeweiligen Entwicklerteam überlassen.
Was versteht man unter „cloudnativen Anwendungen“?
Cloudnative Anwendungen sind Softwareprogramme und Dienste, die speziell cloudnativen Architekturen entwickelt werden. Sie bilden konkrete, in sich geschlossene Einheiten, die auf cloudnativen Entwicklungsprinzipien, Implementierungsparadigmen und operativen Prozessen basieren.
Neben allgemeinen Anforderungen an die Cloudnativität erfordern gewisse Anwendungen bestimmte Implementierungsentscheidungen. Dazu gehört auch die Auswahl von Tools und Mustern (wie unveränderliche Artefakte), die die cloudnativen Funktionen des übergeordneten Systems stärken.
Zwar gibt es unterschiedlichste Möglichkeiten, cloudnative Software zu entwickeln und zu implementieren, einige Merkmale teilen aber alle cloudnativen Anwendungen.
So beinhalten sie meist einen hohen Automatisierungsgrad, der allerdings unterschiedliche Formen annehmen kann. Diese reichen von einer automatischen Prüfung und Erstellung der zugrunde liegenden Anwendung bis hin zur automatischen Bereitstellung und Skalierung der grundlegenden Infrastruktur. Erfolgreiche Unternehmen führen dabei täglich tausende Bereitstellungen durch und nutzen dazu ein stark automatisiertes cloudnatives CI/CD-System, das sich durch seine Stabilität auszeichnet. Wie unser Bericht zum aktuellen Stand der cloudnativen Sicherheit zeigt, haben Unternehmen mit einem hohen Maß an cloudnativer Automatisierung auch mehr Techniken für Sicherheitsprüfungen eingeführt. So ist die Wahrscheinlichkeit, dass SAST- und SCA-Tools zum Schutz cloudnativer Anwendungen in die Softwareentwicklung eingebunden werden, bei Unternehmen mit vollständig automatisierten Deployment-Pipelines doppelt so hoch.
Zudem verwenden cloudnative Anwendungen häufig eine Microservice-Architektur mit voneinander entkoppelten Komponenten, die sich individuell skalieren lassen, wenn die Anforderungen oder Anzahl der Dienste steigen. Und ganz allgemein erfordern die meisten Anwendungen, bei denen DevOps-Prinzipien zum Einsatz kommen, zumindest indirekt einen cloudnativen Ansatz.
Cloudnative Anwendungen sind schließlich auch schneller in der Entwicklung und lassen sich effektiver skalieren als vorherige Anwendungsmodelle. Und das wiederum beschleunigt ihre Weiterentwicklung und Markteinführung, wovon technologieorientierte Unternehmen profitieren. Allerdings bringen cloudnative Modelle auch einen grundlegenden Wandel mit sich, der beim Schutz und beim Betrieb cloudnativer Anwendungen zu beachten ist. Denn was bislang zur Infrastruktur zählte, ist nun Teil der Anwendung selbst. Insbesondere beim Thema Sicherheit erfordern cloudnative Anwendungen daher völlig neue Sicherheitskonzepte mit entsprechenden Folgen für die Anwendungssicherheit und operative Abläufe.
Auto-Erkennung und -Fixing von Schwachstellen
Snyk bietet Security-Fixes als Pull-Request mit einem Klick und Korrekturempfehlungen für Ihren Code, Abhängigkeiten, Container und Cloud-Infrastrukturen.
Cloudnative und herkömmliche Sicherheitstools im Vergleich
Sicherheitstools und -prozesse, die für herkömmliche Software-Hosting-Infrastrukturen entwickelt wurden, bieten nicht den Funktionsumfang, den das „grenzenlose“ Konzept einer dynamischen, cloudnativen - und zahlreichen Bedrohungen ausgesetzten - Architektur benötigt.
Mit einfachen Worten: Herkömmliche Sicherheitstools sind nicht für den Schutz der modernen Cloud gemacht. Als sie entwickelt wurden, gab es viele Tools und Entwicklungsmuster noch gar nicht, mit denen heutige Software arbeitet.
Ein sehr gutes Beispiel dafür ist die mittlerweile weite Verbreitung von IaC-Tools (Infrastructure-as-Code) wie Terraform. Grundsätzlich stellen diese zwar auch „Code“ dar, stehen allerdings für eine domainspezifische Programmiersprache (DSL) mit einzigartiger Funktionalität, was herkömmliche Validierungen mit Tools wie der statischen Analyse verkompliziert und ineffektiv macht. Da sich mit IaC-Tools große Infrastrukturen mit vergleichsweise geringem Aufwand bereitstellen lassen, kommt ihrer Sicherheit natürlich eine zentrale Bedeutung zu. Für die Prüfung von IaC-Code und entsprechenden Konfigurationen sind Verfahren und Tools notwendig, die es in der Software- und Infrastrukturentwicklung erst seit kurzem gibt.
IaC-Tools weisen damit auf eine kritische Sicherheitslücke hin – was allerdings nur eine von vielen Herausforderungen beim Schutz cloudnativer Anwendungen darstellt. Denn diese erfordern auch die Übernahme von Konzepten aus der IT/Operational Security in die Anwendungssicherheit. Und für die Sicherheit entsprechender Komponenten müssen auch die Anwendungsentwickler in die Verantwortung genommen werden, statt Sicherheitsfragen allein dem IT- und Operations-Team zu überlassen.
Sicherheit für cloudnative Anwendungen
Die cloudnative Sicherheit erfordert einen neuen Schwerpunkt auf eine Security, die mit der übergeordneten Cloud-Strategie des Unternehmens abgestimmt wird. Denn cloudnative Anwendungen müssen im Anwendungskontext geschützt werden. Und das entsprechende Konzept dafür muss den Veränderungen in Teams, Prozessen und Infrastrukturmodellen Rechnung tragen, die die cloudnativen Anwendungen entwickeln und bereitstellen. Folglich sollte ein besonderer Schwerpunkt auf die cloudnative Sicherheit von Anwendungeb gelegt werden, damit Schwachstellen bereits in der Entwicklung erkannt und behoben werden. Notwendig ist ein ganzheitlicher Ansatz, bei dem die Sicherheit in den gesamten Entwicklungszyklus integriert wird.
Dazu sollten die Entwickler mit einer Sicherheitsplattform unterstützt werden, um sich besser auf die Erfüllung von Geschäftszielen und die Umsetzung cloudnativer Grundsätze konzentrieren zu können. Zugleich sollte man berücksichtigen, dass die Infrastruktur zunehmend in der Anwendungsentwicklung festgelegt wird und somit die Entwicklungsabteilung dafür verantwortlich ist, dass ihr Code auch wirklich sicher ist. Räumt man der Cloudarchitektur also nicht in jeder Diskussion und jeder Gestaltungsentscheidung Priorität ein, bleibt eine wirklich cloudnative Anwendung vielleicht unerreichbar.
Sind die Grundlagen des Designs erst einmal gelegt, geht es an das Programmieren der Anwendungen und Infrastruktur. In dieser Phase sollten bereits frühzeitig Code-Tests erfolgen, wie es ein sicher Softwareentwicklungszyklus (SSDLC) vorsieht. Denn wie bereits erwähnt, sind herkömmliche statische Analysen hier nicht mehr ausreichend. Statische (SAST), dynamische (DAST), interaktive (IAST) und mobile Tests der Anwendungssicherheit (MAST) sind dabei nur einige Verfahren, die auf cloudnativen Anwendungscode angewendet werden sollten.
Sicherheit cloudnativer Infrastrukturen
Der Schutz der cloudnativen Infrastruktur einer Anwendung birgt ebenfalls besondere Herausforderungen. So führen IaC-Konfigurationen häufig dazu, dass Live-Infrastrukturen implementiert werden und die Entwickler zeitgleich am Infrastruktur- und am Anwendungscode arbeiten. Es braucht also Sicherheitstools, die beides überprüfen können, sich nahtlos in bestehende Abläufe einbinden lassen und den Entwicklern direkt Daten und Korrekturvorschläge an die Hand geben. Und dazu sind wiederum Sicherheitsdaten direkt in der IDE und lokale Tests mit CLI-Tools notwendig.
Neben der Bereitstellung sicherheitsrelevanter Daten in der lokalen Entwicklungsumgebung sollten zudem cloudnative Sicherheitsmechanismen in die einzelnen Phasen der Software-Entwicklung eingebunden werden. Dabei sollten automatische Scans der Quellcode-Managementsysteme und die Überprüfung abgeleiteter Artefakte wie Container-Images von CI/CD-Systemen Priorität haben. Die Ergebnisse dieser integrierten Scans sollten außerdem Korrekturvorschläge enthalten, damit Entwickler einfach Prioritäten setzen können.
Bei älteren On-Prem-Infrastrukturen mit einem logischen Netzwerkperimeter ließ sich unerlaubter Datenverkehr zu bestimmten, oft weniger gut gesicherten internen Ressourcen meistens gleich am Netzwerkrand abwehren. Doch in der Welt der Cloud haben solche Perimeter keinen wirklichen Nutzen mehr. Denn bei den meisten Cloudanbietern genügen wenige Codezeilen in der Konfiguration oder eine UI-Änderung, um so gut wie jede Ressource öffentlich zugänglich zu machen. Und Daten, die anscheinend in derselben logischen Domain verbleiben, durchqueren tatsächlich die Grenzen mehrerer Netzwerke und physischer Standorte, bevor sie ihr Ziel erreichen. Angesichts dessen sollten Unternehmen ein „Zero-Trust“-Modell einführen, das in allen Komponenten und Diensten ein potentielles Angriffsziel sieht. Die Authentifizierung erfolgt in diesem Fall zwischen sämtlichen Knoten und Ressourcen eines Systems und ungeachtet des Netzwerkstandorts.
Die Anwendungssicherheit in der Cloud gewinnt im Entwicklungsprozess zunehmend an Bedeutung. Doch cloudnative Sicherheitslösungen sind auch in der Produktionsumgebung wichtig. In Legacy-Architekturen gab es meist nur eine Art von Rechnerressource: den Hardware-Server. Mit herkömmlichen Security-Tools ließ sich der Perimeter um diese Ressourcen gut schützen, wobei der Zugriff und der Datenverkehr mit statischen Netzwerkkonfigurationen gesteuert und Firewalls kontrolliert wurde. Demgegenüber sind cloudnative Infrastrukturen in jeder Hinsicht extrem dynamisch und bieten eine besonders schnelle Bereitstellung neuer Anwendungen und Rekonfiguration von Ressourcen.
Was versteht man unter einer „cloudnativen Sicherheitsarchitektur“?
Als cloudnative Sicherheitsarchitektur wird eine Strategie bezeichnet, die alle Implementierungen, Anwendungen und Vorgänge innerhalb der Cloud transparent macht. So können Sicherheitsteams die in der Cloud befindlichen Anwendungen, Infrastrukturen und Plattformen überwachen und schützen. Hier finden Sie weitere Informationen zur Sicherheitsarchitektur in der Cloud.
Cloudnative Anwendungen können theoretisch viele verschiedene Rechnerressourcen und Laufzeiten nutzen, darunter virtuelle Maschinen, Container und serverlose Funktionen. Container sind ein weiteres Produkt des cloudnativen Ökosystems und erfordern spezielle Sicherheitstools, die ihre Laufzeitumgebungen überwachen und schützen. Scans von Artefakten und Konfigurationen zur Laufzeit sind dabei entscheidend, um ein starkes Sicherheitsprofil für cloudnative Umgebungen aufrechtzuerhalten.
Auto-Erkennung und -Fixing von Schwachstellen
Snyk bietet Security-Fixes als Pull-Request mit einem Klick und Korrekturempfehlungen für Ihren Code, Abhängigkeiten, Container und Cloud-Infrastrukturen.
Cloudnative Anwendungen brauchen cloudnative Sicherheitsplattformen
Die Cloud verändert sich zwar kontinuierlich, dürfte uns aber auf lange Sicht erhalten bleiben. Und da das Innovationstempo immer schneller wird, müssen Unternehmen ständig neue Technologien und Verfahren entwickeln, um nicht den Anschluss zu verlieren. Doch allzu oft portieren Unternehmen einfach ihre vorhandene On-Prem-Softwareinfrastruktur in die Cloud – mitsamt veralteten Abstraktionen und Sicherheitsmodellen. So entgehen ihnen die Vorteile, die cloudnative Anwendungen bieten.
Ein besonders großes Risiko stellen dabei Sicherheitsmodelle und -tools dar, die ursprünglich für das On-Prem-Hosting entwickelt wurden. Diese stammen aus einer Zeit, in der die Cloud noch nicht die vorrangige Hosting-Plattform war, und bieten somit keine ausreichende Sicherheit. Dabei sollten Skalierbarkeit und insbesondere der Schutz Ihrer Anwendungen angesichts des zunehmenden Entwicklungstempos und Konkurrenzdrucks eigentlich oberste Priorität genießen. Wer im Zeitalter der Cloud wettbewerbsfähig bleiben will, sollte sich daher auf die Entwicklung cloudnativer Anwendungen konzentrieren und diese dann mit cloudnativen Sicherheitsplattformen schützen.
„Bei der Implementierung von Software muss man unzählige Dinge im Blick behalten …Macht man das alles manuell, ist das nicht nur zeitaufwendig, mühselig und fehleranfällig, sondern auch etwas, das man eher selten angeht. Deshalb war uns klar, dass wir alles automatisieren mussten – auch die Sicherheit, weshalb wir uns für Snyk entschieden haben.“
Mit Snyk schützen Sie sämtliche Komponenten Ihrer cloudnativen Anwendungen mit einer einzigen Plattform.