EN

Best Practices für die Sicherheit von Microservices

In diesem Artikel:

Was ist eine Microservice-Architektur?

Eine Microservice-Architektur, oft einfach als Microservices bezeichnet, ist eine Gruppe von gruppierten Diensten zur Implementierung einer Anwendung. In letzter Zeit wurden Microservices bei Entwicklerteams immer beliebter. Und warum? Sie erleichtern die kontinuierliche Bereitstellung großer Anwendungen und lassen sich leicht an die Bedürfnisse des Unternehmens anpassen, wenn sich die Technologie weiterentwickelt und mit minimalem Aufwand skaliert wird.

Monolithische Anwendungen sind eine einstufige Struktur, die eine schnelle Bereitstellung erleichtert, und sie lassen sich zuverlässig in bekannte integrierte Entwicklungsumgebungen (IDEs), Frameworks und Tools integrieren.

Wenn monolithische Anwendungen jedoch in die Jahre kommen, zeigen sich ihre Schwächen.

Beispiel für eine Microservice-Architektur

New Project 5 1 Best Practices für die Sicherheit von Microservices

Die obige Abbildung zeigt eine typische Anwendung, die in eine Reihe von Microservices aufgeteilt ist. Diese Dienste sind im Wesentlichen Miniaturanwendungen, die in einzelnen Containern gehostet werden und über einen Dienst-Proxy kommunizieren. Jede externe Einheit (in Grün dargestellt), sei es ein Benutzer oder ein externer Dienst, würde auf die Anwendung (über ein gesichertes API-Gateway) als Ganzes und nicht auf einen einzelnen Microservice zugreifen.

Vorteile von Microservices

DevOps beseitigt organisatorische Silos, indem es eine effiziente Zusammenarbeit ermöglicht, die Integration von Arbeitsabläufen rationalisiert und die Anwendungsbereitstellung automatisiert. Dabei ist die Microservice-Architektur eine wesentliche Voraussetzung für die Verwirklichung eines DevOps-Modells, indem sie eine Anwendung in mehrere bereitstellbare Dienste aufteilt. Microservices arbeiten als autonome, voneinander entkoppelte Anwendungen, die unabhängig voneinander entwickelt, skaliert und bereitgestellt werden. Dadurch können Teams die Anwendungsarchitektur leicht nachvollziehen und die Bereitstellungspipelines beschleunigen.

microservice Best Practices für die Sicherheit von Microservices

Wenn sich Entwickler an moderne Anwendungen gewöhnen, nehmen sie ihr eigenes Wissen über die Abhängigkeiten der Anwendungen mit. Das macht es sehr schwierig, die Entwicklung in dem vom Unternehmen geforderten Tempo voranzutreiben.

Durch die Segmentierung der Anwendungsfunktionen in einer Microservice-Architektur können die Entwickler die Strukturen leichter verstehen und die Geschwindigkeit erhöhen, d. h. sie können schnell mit der Entwicklung fortfahren.

Die Vorteile eines Microservice-basierten DevOps-Modells liegen also auf der Hand. Aber es gibt auch Herausforderungen bei der Aufrechterhaltung einer Microservice-Architektur und explizit bei der aufwändigen Sicherheitsimplementierung.

Microservices und Sicherheit

Microservices gelten als viermal anfälliger als traditionelle monolithische Anwendungen. Aufgrund ihrer verteilten Struktur bieten jede Service-API und jede Netzwerkschicht anfällige Einstiegspunkte für potenzielle Angriffe.

Microservices werden im Vergleich zu monolithischen Frameworks mit einer breiten Palette von Tools orchestriert. Normalerweise stützen sich solche Tools auf vorgefertigte Repositories, Open-Source-Code und Container mit/ohne validierte Sicherheitsprotokolle. Die Implementierung einer Sicherheitsstrategie wird durch die umfangreiche Verwendung ungepatchter Bibliotheken von Drittanbietern in jedem Container erschwert, was das Gesamtrisiko erhöht. Da Microservices in ihrem Kern containerisierte Anwendungen sind, ermöglicht ein einziger kompromittierter Container Angreifern, einen Angriff schnell über eine größere Fläche zu replizieren.

Da die Sicherheit für Unternehmen, die auf Microservices umstellen, eine ständige komplexe Herausforderung darstellt, sind ein Kulturwandel und eine neue Denkweise die notwendigen Grundlagen für eine funktionierende Sicherheitsstrategie. Sicherheits-, Betriebs- und Entwicklungsmitarbeiter müssen funktionsübergreifend in einem DevSecOps-Arrangement zusammenarbeiten, das verhindert, dass die Sicherheit für die Entwicklung neuer Funktionen zurückgestellt wird. Stattdessen können die Teams bei der Erstellung ihres Codes auf Sicherheitsprinzipien zurückgreifen und ihren Code vor der Bereitstellung durch Peer-Reviews auf Sicherheitsbedenken überprüfen lassen.

ezgif 4 0a32ef30ad5d Best Practices für die Sicherheit von Microservices
Der Markt für Microservices-Architekturen wächst von Jahr zu Jahr weiter (Market Research Future)

Darüber hinaus wird die Überwachung von Microservices als ein kritischer Aspekt bei der Aufrechterhaltung der Sicherheit innerhalb eines Microservice-Frameworks angesehen. Das Fehlen eines effizienten Lastausgleichs und einer Anwendungsüberwachung verschlechtert die Kampfposition einer Organisation, wenn es darum geht, Bedrohungen zu isolieren und eine schnelle Quarantäne zu verhindern. Daher ist eine wirksame Überwachung von Microservices auf allen Ebenen, einschließlich API-Payload, Query-Strings, Cookies und HTTP-Header, unerlässlich.

Microservices und API

Normalerweise werden Dienstaufrufe durch die Implementierung eines API-Gateways gesichert, das als einziger Eingangspunkt fungiert, um Aufrufe zu empfangen und den Datenverkehr an verschiedene Dienste weiterzuleiten. Dieser Ansatz mit einem einzigen Einstiegspunkt durch Authentifizierung hat seine Vor- und Nachteile. Theoretisch schränkt ein API-Gateway die Angriffsfläche ein; es stellt jedoch auch eine einzige Schwachstelle für potenzielle Angriffsvektoren dar. Jüngste Forschungsergebnisse deuten außerdem darauf hin, dass die meisten herkömmlichen Angriffsvektoren über API-Aufrufe auf eine Anwendung abzielen.

Microservice architecture growth chart
Quelle: https://docs.microsoft.com/

Diese Gateways stellen sicher, dass die Benutzer die sind, für die sie sich ausgeben, und dass ihnen der Zugriff auf einen Dienst gestattet wird, und übernehmen in der Regel die Autorisierung und Authentifizierung für die Microservices. Um ihre Effizienz zu gewährleisten, müssen Sicherheitsteams die Sicherheitsmodelle umstrukturieren, um die Sicherheit eines Angreifers vor dem API-Gateway im Auge zu behalten, ohne dabei die Angreifer zu vergessen, die es auf einen einzelnen Microservice abgesehen haben.

Wie Sie Ihre Microservices sichern

Der Ansatz zur Absicherung eines Microservices unterscheidet sich wesentlich von einem herkömmlichen monolithischen Framework. Als Faustregel gilt, dass die Verwaltung einer sicheren Authentifizierung durch die Bereitstellung von On-Demand-Identitäts-Tokens nach wie vor entscheidend ist. Bei einer Zero-Trust-Strategie werden kurzlebige, verschlüsselte Zugriffsgeheimnisse verteilt, um die richtige Autorisierungsstufe auf einer Anwendungs-, Service- oder Pipeline-Ebene zu erreichen.

Mit der Vergrößerung der Angriffsfläche einer Anwendung ist ein plattformübergreifendes, zentralisiertes Sicherheitsmodul nicht mehr zeitgemäß. Die Absicherung von Microservices wird in der Regel als ineffektiv und unzureichend angesehen, wenn es darum geht, Anwendungsbedrohungen nur durch eine Netzwerksegmentierung oder einen Perimeter-basierten Ansatz zu begrenzen. Stattdessen beginnt die Sicherung von Microservices mit dem ganzheitlichen Ansatz der Einbettung von Sicherheit durch die Umwandlung von DevOps in ein DevSecOps-Modell.

Dies beginnt mit der Denkweise, Sicherheit von Beginn des SDLC an auf Augenhöhe mit Entwicklung und Betrieb zu betrachten, indem die Risikotoleranz vom ersten Tag des Softwarelebenszyklus an analysiert wird. Mit einem DevSecOps-Modell werden Leistung, Skalierbarkeit und Sicherheit gleichberechtigt und unvoreingenommen abgewogen.

Testen Sie unseren automatisierten Microservices-Sicherheitsscanner

Bewährte Praktiken der Microservices-Architektur

Natürlich gibt es auch einige architektonische Überlegungen für den Einsatz eines sicheren Microservices-Modells, die im Folgenden erläutert werden:

Best Practices für die Microservice-Autorisierung: Absicherung von Zugangspunkten mit OAUTH2 und OpenID Connect

Viele Sicherheitsanalysten wollen nicht bei Null anzufangen, und empfehlen die Verwendung von OAuth2 und OpenID Connect, um das Autorisierungsmanagement an einen Drittanbieter oder einen einzigen (internen) Authentifizierungsdienst abzugeben. Darüber hinaus kann die Verwendung von Bibliotheken und Funktionen die Entwicklungszeit verkürzen und vereinfachen. Einige Lösungen zur Verbesserung des Sicherheitsniveaus Ihres OAuth-basierten Autorisierungsdienstes wurden bereits von einigen der größten Unternehmen und intelligentesten Ingenieure entwickelt.

Verwenden Sie „Defense in depth“: 

„Defense in depth“ ist definiert als „ein Informationssicherungskonzept, bei dem mehrere Schichten von Sicherheitskontrollen (Defense) in einem Informationstechnologiesystem eingesetzt werden.“

Sie müssen Ihre sensibelsten Dienste identifizieren und manuell viele verschiedene Sicherheitsebenen auf sie anwenden, um es für einen potenziellen Angreifer, der eine Ihrer Sicherheitsebenen ausnutzen kann, schwieriger zu machen.

Die Microservice-Architektur macht es einfacher, diese Strategie mikroskopisch und strategisch anzuwenden, indem Sie Ihre Sicherheitsanstrengungen und -ressourcen auf bestimmte Microservices konzentrieren. Darüber hinaus diversifiziert die Architektur die Sicherheitsebenen, die Sie für jeden Microservice einsetzen möchten. So kann ein Angreifer, der einen Ihrer Dienste erfolgreich angreifen kann, nicht unbedingt herausfinden, wie er den zweiten ausnutzen kann.

Schreiben Sie Ihren Krypto-Code nicht selbst.

Wenn es um Sicherheit geht, sollten Sie nicht versuchen, Ihre eigenen Lösungen und Algorithmen zu entwickeln, es sei denn, Sie haben solide und spezifische Gründe dafür, und Sie haben Leute, die erfahren genug sind, um etwas zu entwickeln, das fast so gut ist wie die bereits verfügbaren Open-Source-Tools.

Holen Sie Ihre Container aus dem öffentlichen Netz.

Ein API-Gateway stellt einen einzigen Eingangspunkt für alle Anfragen von allen Clients dar. Anschließend weiß es, wie es eine Schnittstelle für alle Ihre Microservices bereitstellen kann.

Mit dieser Technik können Sie alle Ihre Microservices hinter einer Firewall sichern und dem API-Gateway erlauben, externe Anfragen zu bearbeiten und dann mit den Microservices hinter der Firewall zu kommunizieren.

Verwenden Sie Microservice-Sicherheitstests

Unser automatisierter Pentest kann regelmäßige Schwachstellen- und Sicherheitsscans für Ihre Container beinhalten. So können wir zum Beispiel eine vergleichsweise bessere Scantiefe auf den Systemen des Kunden nachweisen. Hier können Sie sich über unser Produkt und dessen Funktionen informieren und eine kostenlose 14-tägige Testversion ausprobieren.

Kontinuierliche Sicherheit

Die beste Lösung für Microservices Security ist kontinuierliche Sicherheit, die so flexibel und agil ist wie Ihre Entwicklung. Continuous Hacking verbindet Continuous Integration und Continuous Delivery mit Source-Control-Monitoring und Dependency-Scanning, um sicherzustellen, dass CI/CD-Pipelines während der Ausführung für Laufzeitprüfungen getestet werden. Eine gängige Praxis ist der Einsatz von Static Application Security Testing (SAST) und Dynamic Application Security Testing (DAST) in den frühen Phasen des SDLC.

DevOps cycle

Während SAST dazu beiträgt, Schwachstellen im Quellcode zu analysieren, bevor der Code kompiliert wird, und sicherstellt, dass die Entwickler Sicherheitsmängel mit Echtzeit-Feedback abmildern, hilft DAST bei der Identifizierung von Schwachstellen auf Architektur- und Code-Ebene, während es in Staging-Umgebungen und/oder in der Produktion läuft.

Wir empfehlen, den DAST-Scanner direkt in Ihren DevOps-Zyklus zu implementieren; mit kontinuierlichen Sicherheitsprüfungen können Sie sicherstellen, dass Schwachstellen behoben werden, bevor sie Ihre Kunden erreichen.

Erhalten Sie jetzt kostenlos einen schnellen Sicherheitsbericht für Ihre Website

Wir analysieren derzeit http://example.com
Wir scannen derzeit http://example.com
Status des Scans: In Bearbeitung
Scan target: http://example.com/laskdlaksd/12lklkasldkasada.a
Datum: 27/05/2022
Crashtest Security Suite prüft auf:
Information disclosure Known vulnerabilities SSL misconfiguration Open ports
Scanauftrag ausfüllen
Bitte geben Sie Ihre Daten ein, um die schnelle Sicherheitsüberprüfung zu erhalten.
Ein Sicherheitsspezialist analysiert gerade Ihren Scan-Bericht.
Bitte geben Sie Ihre Telefon-/Handynummer an, damit wir Ihre Identität überprüfen können:
Ihren Bericht anfordern
Vielen Dank.
Wir haben Ihren Antrag erhalten.
Sobald Ihr Sicherheitsaudit fertig ist, werden wir Sie benachrichtigen.