Skip to main content

Microservices-Sicherheit: 6 Best Practices

Artikel von
blog hero snyk apps

10. Februar 2022

0 Min. Lesezeit

Parallel zur Umstellung auf containerisierte Deployments setzen viele Entwicklungsteams zunehmend auf eine Microservices-Architektur. Microservices ermöglichen es Teams, Anwendungen agiler zu entwickeln und bereitzustellen und Features unabhängig voneinander zu veröffentlichen. Dadurch verkürzen sich Entwicklungszyklen, die Technologiewahl wird flexibler und die Resilienz der Software verbessert sich.

Microservices können eine gute Möglichkeit sein, zuvor monolithische Anwendungen zu modernisieren. Dieser Ansatz kann jedoch auch Sicherheitsrisiken mit sich bringen. Sehen wir uns die Sicherheit von Microservices und einige Best Practices genauer an.

Was ist Microservices-Sicherheit?

Microservices-Sicherheit bezeichnet die Strategie, mit der Entwicklungs- und Sicherheitsteams die Risiken einer Microservices-Anwendungsarchitektur minimieren. Dazu gehört, sichere Microservices zu entwickeln und sicherzustellen, dass sie auch sicher miteinander kommunizieren.

Microservices – unabhängige Softwarekomponenten, die separat bereitgestellt werden können – erleichtern die Skalierung großer Anwendungen und machen sie effizienter. Denn diese unabhängigen Services lassen sich viel einfacher aktualisieren, und Entwickler können für jede einzelne Komponente den passenden Technologie-Stack wählen. Da Microservices unabhängig voneinander bereitgestellt werden können, können Unternehmen außerdem bestimmte Bereiche einer Anwendung skalieren, ohne die gesamte Anwendung skalieren zu müssen. Das senkt den Ressourcenverbrauch und die Kosten.

Gleichzeitig birgt die Möglichkeit, Microservices schnell und unabhängig voneinander zu entwickeln und bereitzustellen, Sicherheitsrisiken. Wenn Entwicklungsteams keine Best Practices für sicheres Programmieren befolgen, kann jedes neue Microservices-Deployment Risiken für die gesamte Anwendung mit sich bringen.

6 Best Practices für Microservices-Sicherheit

Wie bereits erwähnt, trägt Microservices-Sicherheit dazu bei, die Sicherheitslage einer Anwendung insgesamt zu verbessern. Hier sind sechs Best Practices, die Sie bei der Umsetzung berücksichtigen sollten.

  1. Sicherheit von Anfang an einplanen

  2. Eine DevSecOps-Kultur etablieren

  3. AppSec-Tools integrieren

  4. Abhängigkeiten scannen

  5. Sichere Container verwenden

  6. API-Gateways einrichten

1. Sicherheit von Anfang an einplanen

Die meisten Microservices-basierten Anwendungen werden bereitgestellt, wenn Unternehmen monolithische Systeme modernisieren. Die Entwurfsphase ist daher der ideale Zeitpunkt, um die Sicherheit von Legacy-Anwendungen zu verbessern. Entwicklungs- und Sicherheitsteams sollten Anwendungssicherheit bei der Planung einer Microservices-Architektur priorisieren. So erhält die Anwendung eine solide Grundlage, um auch bei ihrem Wachstum und ihrer Weiterentwicklung sicher zu bleiben.

Bei der Entwicklung sicherer Software muss die Sicherheit auf jeder Anwendungsebene berücksichtigt werden – angefangen bei der Architektur. Threat Modeling ist ein Verfahren zur Analyse des Systemdesigns und der Datenflüsse zwischen Subsystemen oder Microservices. Teams können damit mögliche Schwachstellen erkennen und bereits früh im Entwurfsprozess Gegenmaßnahmen ergreifen.

Bei einer Microservices-Architektur müssen der Code und die Open-Source-Komponenten einer Anwendung gegen Bedrohungen abgesichert und die Container sowie die Infrastruktur geschützt werden, auf denen die Microservices ausgeführt werden. Außerdem müssen Microservices sicher miteinander kommunizieren können.

2. Eine DevSecOps-Kultur etablieren

Ein wesentlicher Vorteil von Microservices ist, dass Entwicklungsteams einzelne Softwarekomponenten schneller bereitstellen können, ohne die gesamte Anwendung erneut ausrollen zu müssen. Das ermöglicht DevOps-Teams eine schnellere Anwendungsentwicklung, kann aber auch Sicherheitsrisiken mit sich bringen. Deshalb ist ein Umdenken entscheidend: Sicherheitstests müssen bereits während des Entwicklungsprozesses stattfinden.

Deshalb ist ein DevSecOps-Ansatz entscheidend, bei dem Sicherheitsmaßnahmen direkt in den Entwicklungsprozess sowie in die Build- und Continuous-Integration-Umgebung eingebunden werden, um Risiken zu reduzieren. DevSecOps setzt auf Automatisierung und schafft eine gemeinsame Verantwortung dafür, sichere Software bereitzustellen, ohne die Entwicklung zu verlangsamen. Tatsächlich kann der DevSecOps-Ansatz sogar Kosten und Zeit für die Bereitstellung sicherer Software einsparen, da Entwickler Sicherheitskontrollen nach dem Deployment nicht nachträglich einbauen müssen.

3. Tools für Anwendungssicherheit integrieren

Ein wichtiger Bestandteil von DevSecOps ist die Integration von AppSec-Tools in eine automatisierte Continuous-Integration- und Continuous-Delivery-Pipeline (CI/CD). Durch die Integration in CI/CD-Pipelines können Unternehmen die Sicherheit nach links verlagern und so den Zeit- und Arbeitsaufwand für die Verbesserung der Sicherheitslage einer Anwendung reduzieren. Denn Entwickler können Sicherheitsprobleme einfacher direkt in ihrer IDE beheben, während sie den Code schreiben, statt erst im Nachhinein.

Mit Static Application Security Testing (SAST) können Entwicklungsteams beispielsweise Sicherheitsprobleme im Quellcode einer Anwendung bereits früher im Software Development Lifecycle (SDLC) finden und beheben. So können Unternehmen jede Änderung an einem Microservice prüfen, bevor der Code in die Produktionsumgebung gelangt.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.

4. Abhängigkeiten scannen

Neben Microservices verwenden moderne Softwareanwendungen oft zahlreiche Open-Source-Komponenten. In den meisten Fällen ist der Anteil des Open-Source-Codes, auf den eine Anwendung angewiesen ist, deutlich größer als der Anteil des speziell von Entwicklungsteams geschriebenen Codes. Diese Abhängigkeiten von Drittanbietern können jedoch Schwachstellen enthalten, die das Risikoprofil einer Anwendung beeinflussen.

Da einzelne Microservices häufig unterschiedliche Technologie-Stacks verwenden, ist es für Entwickler schwierig, Komponenten von Drittanbietern zu erfassen und ihre Sicherheit sicherzustellen. Mit einem Tool für das Management von Open-Source-Sicherheit können Entwicklungsteams potenzielle Schwachstellen im verwendeten Open-Source-Code leichter finden und beheben.

Starten Sie mit Capture-the-Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.

5. Sichere Container verwenden

Da Microservices-basierte Anwendungen aus Dutzenden oder sogar Hunderten verschiedener Komponenten bestehen, verwenden Entwicklungsteams häufig Container, um Deployments zu vereinfachen. Deshalb ist die Container-Sicherheit entscheidend, um Microservices zu schützen und Cloud-native Sicherheit umzusetzen.

Container-Sicherheit umfasst weit mehr als die Images, auf denen Container basieren. Dazu gehören auch die Container-Registry, in der die Images gespeichert sind, und die für die Orchestrierung verwendeten Tools. Das Scannen der Container-Registry auf anfällige Images ist entscheidend, um das Risiko zu verringern, dass mehrere Microservices dasselbe Basis-Image verwenden. Eine weitere Möglichkeit, Microservices sicher bereitzustellen, besteht darin, Fehlkonfigurationen und andere Risiken im Zusammenhang mit Container-Orchestrierungstools wie Kubernetes zu beseitigen.

6. API-Gateways einrichten

APIs sind in einer Microservices-Architektur die wichtigste Möglichkeit für unabhängige Softwarekomponenten, miteinander zu kommunizieren. Damit gehören sie zu den anfälligsten Bereichen einer Anwendung.

Ein API-Gateway ist ein Tool, das zwischen einem Client und einer Gruppe von Backend-Services angesiedelt ist. Dieses API-Management-Tool übernimmt Aufgaben wie Authentifizierung und Ratenbegrenzung, um die API vor Missbrauch zu schützen. So können API-Gateways eine Microservices-basierte Anwendung vor unerwünschtem Zugriff durch Dritte und vor dem hohen Datenverkehr eines Denial-of-Service-Angriffs (DoS) schützen.

Häufig gestellte Fragen zur Microservices-Sicherheit

Sind Microservices sicherer?

Größe und Komplexität einer Anwendung bestimmen zwar ihr Risikoprofil, doch häufig ist eine Microservices-Architektur sicherer als eine monolithische Anwendung. Da Microservices voneinander entkoppelt sind, beschränken sich Schwachstellen oft auf eine bestimmte Komponente, statt die gesamte Anwendung zu beeinträchtigen.

Mit einer geeigneten Authentifizierung für die Kommunikation zwischen Services können Microservices-basierte Anwendungen außerdem zusätzliche Sicherheitsprüfungen bieten, die bei monolithischen Anwendungen nicht möglich sind. Wird eine Schwachstelle entdeckt, lässt sich das Problem schließlich deutlich einfacher beheben und der Microservice erneut bereitstellen, um das Sicherheitsrisiko schnell zu minimieren.

Wie sichern Sie Microservices ab?

Die Absicherung von Microservices erfordert von Anfang an ein durchdachtes Anwendungsarchitekturdesign. Die einzelnen Softwarekomponenten werden häufig schnell entwickelt und bereitgestellt. Deshalb ist es entscheidend, Anwendungssicherheit direkt in den Entwicklungsprozess zu integrieren, um sichere Microservice-basierte Anwendungen bereitzustellen. Die Bedrohungslandschaft verändert sich ständig. Daher sollten Sie automatisierte AppSec-Tools einsetzen, um kontinuierlich Schwachstellen zu finden und zu beheben, die eine Anwendung gefährden könnten.

Erfahren Sie, wie Coveo Snyk in seine Microservices-Deployment-Pipeline integriert hat, um DevSecOps-Praktiken im gesamten Unternehmen zu skalieren.