English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

13 Best Practices zum Sichern von Microservices

Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Die Microservices-Architektur bietet Flexibilität, Skalierbarkeit und die Möglichkeit, Softwarekomponenten zu ändern, hinzuzufügen oder zu entfernen, ohne andere Teile der Anwendung zu beeinträchtigen.

Neben kürzeren Softwareentwicklungszyklen, kleineren Teams und flexiblen Programmiersprachenoptionen können Sie bestimmte Funktionen oder Dienste skalieren oder Fehler beheben, ohne die anderen Komponenten zu beeinträchtigen.

Im Allgemeinen ermöglichen die Mikrodienste die Aufteilung großer monogamer Anwendungen in unabhängig voneinander bereitstellbare unterschiedliche Dienste. Diese kleineren unabhängigen Dienste erhöhen jedoch die Anzahl der Komponenten und damit die Komplexität und Schwierigkeit, sie zu sichern.

Monolithic-vs-Microservices-Architektur
Monolithic-vs-Microservices-Architektur Bild Redhat

Normalerweise umfasst eine typische Microservices-Bereitstellung die Ebenen Hardware, Service oder Anwendung, Kommunikation, Cloud, Virtualisierung und Orchestrierung. Jedes dieser Verfahren hat spezifische Sicherheitsanforderungen, Kontrollen und Herausforderungen.

Sicherheitsherausforderungen im Zusammenhang mit Microservices

Microservices sind normalerweise weit verbreitete Systeme mit komplexen Zugriffsregeln, mehr zu überwachendem Datenverkehr und einer größeren Angriffsfläche. Darüber hinaus werden die meisten Microservices-Clouds in Cloud-Umgebungen ausgeführt, die auch unterschiedliche Sicherheitskonfigurationen und -steuerungen aufweisen.

Aufgrund der großen Anzahl von APIs, Ports und Komponenten ausgesetztHerkömmliche Firewalls bieten möglicherweise keine ausreichende Sicherheit. Diese Probleme machen Microservices-Bereitstellungen anfälliger für verschiedene Cyber-Bedrohungen wie Man-in-the-Middle, Injection-Angriffe, Cross-Site-Scripting, DDoSUnd andere.

Die Netzwerksicherheit ist eine weitere Herausforderung bei Microservices. Insbesondere die Identitäts- und Zugriffskontrolle nimmt eine neue Komplexität an. Andere Schwachstellen sind unsicherer Code und Fehler in den Service Discovery-Systemen.

Obwohl die Sicherung von Microservices schwieriger ist als bei monolithischen Anwendungen, können Sie sie effektiv schützen, indem Sie eine gute Strategie festlegen und die Best Practices befolgen.

Idealerweise erfordert die Architektur einen verteilten Ansatz, der alle verschiedenen Komponenten abdecken sollte.

Typische zu adressierende Bereiche sind

  • Schutz von Anwendungen, Microservices und Benutzern
  • Sicherung der Identitäts- und Zugriffsverwaltung
  • Daten schützen
  • Verbessern Sie die Kommunikationssicherheit von Service zu Service
  • Überwachung der Mikrodienste und Sicherheitssysteme

Best Practices für die Sicherung von Microservices

Eine der besten Strategien besteht darin, eine Kombination aus Best Practices, Tools und Kontrollen zu verwenden, um das gesamte Ökosystem zu schützen. Der tatsächliche Ansatz kann je nach Art der Dienste, Anwendungen, Benutzer, Umweltbedingungen und anderen Faktoren unterschiedlich sein.

Wenn Sie sich für die Verwendung von Microservices entscheiden, müssen Sie sicherstellen, dass Sie alle Sicherheitsanforderungen für die Dienste, Verbindungen und Daten erfüllen.

Lassen Sie uns nun einige effektive Sicherheitspraktiken für Microservices betrachten.

# 1. Bauen Sie von Anfang an Sicherheit auf 👮

Machen Sie Sicherheit zu einem Teil des Entwicklungszyklus. Im Idealfall, Sicherheit integrieren von Anfang an in die Entwicklung und Bereitstellung von Microservices ein. Die Sicherheit auf diese Weise anzugehen, ist ein einfacher, effektiver und billigerer Ansatz als darauf zu warten, sie hinzuzufügen, wenn die Softwareentwicklung kurz vor dem Abschluss steht.

# 2. Verwenden Sie den Tiefenverteidigungsmechanismus

Die Tiefenverteidigung (Defence in Depth, DiP) ist eine Technik, bei der Sie mehrere Sicherheitsschichten auf Ihre Dienste und Daten anwenden. Die Vorgehensweise erschwert es Angreifern, die verschiedenen Ebenen zu durchdringen, und bietet somit eine hohe Sicherheit für Ihre Dienste und Daten.

Im Gegensatz zu den Perimeter-Sicherheitslösungen wie der Firewallsist das Konzept der Tiefenverteidigung anders. Es basiert auf einer Kombination von Tools wie Antivirus, Firewall, Patch-Management, Anti-Spam-Software und anderen, um mehrere Sicherheitsebenen bereitzustellen, die im gesamten System verteilt sind.

Tiefenverteidigung auf mehreren Ebenen
Tiefenverteidigung auf mehreren Ebenen Bild: Imperva

Bei diesem Ansatz müssen Sie zuerst die vertraulichen Dienste identifizieren und anschließend die entsprechenden Sicherheitsebenen um sie herum anwenden.

# 3. Stellen Sie Sicherheit auf Containerebene bereit

Am häufigsten verlassen sich Microservices auf Container Technologie. Daher ist die interne und externe Sicherung der Container eine Möglichkeit, die Angriffsfläche und die Risiken zu verringern. Im Idealfall ist das Streben nach dem Prinzip der Sicherheit mit den geringsten Privilegien eine gute Praxis und erfordert eine Kombination von Strategien, einschließlich, aber nicht beschränkt auf:

  • Beschränkung der Berechtigung auf das erforderliche Minimum
  • Vermeiden Sie das Ausführen von Diensten und anderen Anwendungen mit sudo oder privilegierte Konten.
  • Beschränken oder kontrollieren Sie den Zugriff und den Verbrauch verfügbarer Ressourcen. Wenn Sie beispielsweise den Zugriff der Container auf die Betriebssystemressourcen einschränken, können Sie Datendiebstahl oder Kompromisse vermeiden.
  • Speichern Sie keine Geheimnisse auf der Containerdiskette.
  • Verwenden Sie geeignete Regeln, um den Zugriff auf die Ressourcen zu isolieren.

Es ist auch wichtig sicherzustellen, dass Container-Images keine Schwachstellen oder Sicherheitsprobleme aufweisen. Ein regelmäßiges Sicherheits- und Schwachstellen-Scannen der Container hilft dabei, Risiken zu identifizieren.

Typische Bildscan-Tools sind: Clair, AnkerUnd vieles mehr.

# 4. Bereitstellen einer Multi-Faktor-Authentifizierung 🔒

Das Aktivieren der Multi-Faktor-Authentifizierung erhöht die Sicherheit des Frontends.

Benutzer, die darauf zugreifen, müssen zusätzlich zu einer anderen Form der Überprüfung, z. B. einem an ihre Telefone gesendeten Code oder einer bestimmten E-Mail-Adresse, ihren Benutzernamen und ihr Kennwort angeben. Die Technik erschwert es Angreifern, die möglicherweise gestohlene oder gehackte Anmeldeinformationen verwenden, auf die Microservices zuzugreifen, da sie keine Möglichkeit haben, die zweite Authentifizierung bereitzustellen.

# 5. Verwenden Sie Benutzeridentitäts- und Zugriffstoken

Bei der Bereitstellung von Microservices erfordert eine große Anzahl von Anwendungen und Diensten eine sichere Autorisierung und Zugriffskontrolle. Mit einem Autorisierungsframework wie OAuth 2.0 und OpenID können Sie die Token sicher verarbeiten und so Ihre Microservices schützen. Infolgedessen können Anwendungen von Drittanbietern auf andere Dienste oder Daten von Benutzern zugreifen.

In einer typischen Bereitstellung fordert die Hauptanwendung den Benutzer auf, den Dienst eines Drittanbieters zu autorisieren. Wenn dies akzeptiert wird, generiert die Anwendung ein Zugriffstoken für die Sitzung.

Insbesondere ist OAuth eine der effektivsten Strategien für die Benutzeridentität und Zugriffskontrolle. Obwohl es mehrere andere Autorisierungsprotokolle gibt und Sie auch eigene erstellen können, empfiehlt es sich, das zu verwenden OAuth da ist mehr Standard, stabil und weithin akzeptiert.

# 6. Erstellen Sie ein API-Gateway

Im Allgemeinen bestehen die Mikrodienste aus mehreren Komponenten, die über verschiedene Netzwerke verteilt sind und von einer Vielzahl von Systemen und Clients aus zugänglich sind. Das Offenlegen der Microservices erhöht die Sicherheitslücken und Sicherheitsrisiken. Eine Möglichkeit, sie zu schützen, besteht darin, einen einzigen und sicheren Einstiegspunkt zu erstellen, mit dem Sie den gesamten Zugriff von externen Systemen und Clients zentralisieren können.

Stellen Sie dazu ein API-Gateway bereit, um alle eingehenden Anforderungen auf Sicherheitsprobleme zu überprüfen, bevor Sie sie an die entsprechenden Microservices weiterleiten. Das API-Gateway befindet sich zwischen den Clientanwendungen und den Microservices. Anschließend wird die Bereitstellung der Mikrodienste eingeschränkt, während zusätzliche Anforderungsverwaltungsfunktionen wie Authentifizierung, SSL-Beendigung, Protokollübersetzung, Überwachung, Anforderungsrouting, Caching usw. bereitgestellt werden.

Bei diesem Ansatz leitet das API-Gateway alle externen Dienste an die Microservices weiter und unterstützt gleichzeitig das Prinzip der umfassenden Sicherheit.

Microservices API-Gateway-Image Livebuch

Typische API-Gateways sind: NGINX, Kong, Dick, Ambassador, AWS API-GatewayUnd vieles mehr.

Weitere Informationen zur API-Sicherheit finden Sie in unserem Handbuch unter Warum und wie Sie den API-Endpunkt sichern.

# 7. Profil-APIs basierend auf der Bereitstellungszone

Implementieren Sie rollenbasierte Einschränkungen, indem Sie sicherstellen, dass die Benutzer nur Zugriff auf die von ihnen benötigten APIs und Dienste haben. Da die meisten schädlichen Programme einen Dienst häufig mehr Personen aussetzen, werden die Risiken verringert, wenn der Zugriff nur auf autorisierte Benutzer beschränkt wird. Eine Technik zur Reduzierung der Exposition besteht darin, die APIs basierend auf den Benutzern zu kennzeichnen, die Zugriff auf sie haben sollen. Im Allgemeinen können die APIs sein;

  • Ethernet-APIs - Für Dienste, die der Außenwelt außerhalb des Rechenzentrums ausgesetzt sind.
  • Corporate Zone APIs - Diese sind für den internen privaten Verkehr gedacht
  • DMZ-APIs - zur Verarbeitung des Datenverkehrs, der aus dem Internet stammt
  • Hybrid Zone-APIs - für die Bereitstellung von Rechenzentren

# 8. Sichern Sie die Service-to-Service-Kommunikation

Effektive Praktiken umfassen das Authentifizieren und Autorisieren von Anforderungen, wenn zwei Microservices kommunizieren.

Im Allgemeinen gibt es drei Haupttechniken, mit denen Sie die dienstübergreifende Kommunikation sichern können. Dies sind die Vertrauen Sie dem Netzwerk, JSON-Web-Token (JWT), und Sicherheit der gegenseitigen Transportschicht (mTLSor Gegenseitige TLS). 

Sicherung der dienstübergreifenden Kommunikation mit JWT
Sicherung der dienstübergreifenden Kommunikation mit JWT Image Livebuch

Von den dreien ist das mTLS das beliebteste. Bei diesem Ansatz muss jeder Mikrodienst ein öffentliches / privates Schlüsselpaar tragen. Der Client-Mikroservice verwendet dann das Schlüsselpaar, um sich über das mTLS beim empfangenden Mikroservice zu authentifizieren.

Während der Authentifizierung generiert jeder Mikrodienst ein Zertifikat. Anschließend verwendet jeder Mikrodienst das Zertifikat des anderen, um sich zu authentifizieren.

TLS bietet Integrität und Vertraulichkeit für die übertragenen Daten, ermöglicht dem Kunden jedoch auch die Identifizierung eines Mikrodienstes. Der Client-Microservice kennt normalerweise den anderen Microservice. Da es sich bei TLS jedoch um eine Einbahnstraße handelt, kann ein empfangender Mikrodienst den Client-Mikrodienst nicht überprüfen, und Angreifer können diesen Fehler ausnutzen. Andererseits bietet das mTLS ein Mittel, mit dem jeder der Mikrodienste den anderen identifizieren kann.

# 9. Ratenlimit 🚏 Client-Verkehr

Durch die Begrenzung des externen Datenverkehrs werden Probleme wie Denial-of-Service-Angriffe (DoS) sowie Fälle verhindert, in denen einige Clients den größten Teil der Anwendungsbandbreite beanspruchen. Ein Ansatz besteht darin, verschiedene Regeln anzuwenden, mit denen die von einem Client gesendete oder empfangene Verkehrsrate basierend auf IP, Zeit usw. überwacht und gesteuert werden kann.

Konfigurieren Sie Ihre Dienste so, dass sie langsamer werden, wenn sie mehrere fehlgeschlagene Anmeldeversuche an Ihren APIs oder andere verdächtige Aktivitäten erkennen.

Ein langsames System würde die Angreifer entmutigen und wahrscheinlich ihren Versuch aufgeben, auf die Dienste zuzugreifen. Sie können das Limit mithilfe des API-Gateways, des Codes oder einer anderen Technik bewerten. Normalerweise haben die meisten SaaS-Umgebungen eine API-Ratenbegrenzung, um Missbrauch durch Benutzer sowie Angriffe zu minimieren.

# 10. Verwenden Sie Orchestrierungsmanager

Mit den Orchestrierungsmanagern können Sie die Konfigurations-, Koordinierungs- und andere Microservices-Verwaltungsaufgaben automatisieren und die Sicherheit verbessern. Normalerweise können Sie mit den Tools mehrere Container verwalten, den Metadatenzugriff einschränken, Workloads trennen, Protokolle sammeln und vieles mehr.

Einige Orchestrierungstools verfügen über zusätzliche Funktionen, mit denen Entwickler vertrauliche Informationen wie SSL-Zertifikate, Verschlüsselungsschlüssel, Kennwörter und Identitätstoken speichern und gemeinsam nutzen können.

Die beiden häufig verwendeten Methoden für eine effektive Microservice-Orchestrierung sind:

  • Codierung der Orchestrierung als Microservice
  • Verwenden der API-Gateways zum Bereitstellen einer Orchestrierungsschicht

Die Orchestrierung über das API-Gateway wird aufgrund von Herausforderungen nicht empfohlen, wenn Dienste skaliert werden müssen.

Orchestrierungsschicht von Microservices
Microservice-Orchestrierungsschicht - Bild Globallogik

Typische Orchestrierungsmanagement-Tools sind: Kubernetes, Istio, Azure Kubernetes-Dienst (AKS), usw.

Um mehr zu erfahren, erkunden Sie die Container Orchestration für DeOps.

# 11. Überwachen Sie alle Ihre Systeme und Dienste

Da Microservices auf verteilten Systemen basieren, benötigen Sie eine zuverlässige und effektive Überwachungsstrategie für alle einzelnen Komponenten.

Durch die Bereitstellung einer kontinuierlichen Überwachung können Sie Sicherheitsrisiken rechtzeitig erkennen und beheben. Zu diesem Zweck gibt es eine breite Palette von Überwachungslösungen für Mikrodienste, einschließlich Prometheus, Statistik, InfluxDB, Logstasch, usw.

Grafana prometheus Visualisierung

Überwachung innerhalb der Microservices-Architektur

Verwenden Sie die entsprechenden Tools, um interne Systeme und Dienste zu überwachen. Einige Best Practices umfassen:

  • Aktivieren Sie die Protokollierung auf Anwendungsebene. Sie können Splunk, Grafana, ELK-Stapelund andere Tools, die Protokolle auf Anwendungs-, Container-, Netzwerk- und Infrastrukturebene erfassen.
  • Überwachen Sie die Nutzungsmetriken
  • Verwenden Sie die Trends in Metriken wie CPU, Speicher, Antwortzeiten, Fehler, Benachrichtigungen und andere, um ungewöhnliche Aktivitäten zu erkennen, die auf einen vorhandenen oder potenziellen Angriff hinweisen.
  • Überprüfen Sie die Protokolle in Bereichen wie eingehenden Clientanforderungen, Datenbankeinträgen, Containern und anderen, um Inkonsistenzen oder ungewöhnliche Aktivitäten festzustellen.

# 12. Sicherheitsaktivitäten automatisieren

Automatisieren Sie Sicherheitsprozesse wie das Bereitstellen von Updates, das Scannen von Sicherheitslücken, Überwachung, Durchsetzung von Richtlinien und anderen Aktivitäten. Überprüfen Sie außerdem die Updates, um sicherzustellen, dass sie sicher sind und keine neuen Sicherheitsanfälligkeiten verursachen.

Nach Aktualisierungen sollte die Sicherheitssoftware idealerweise Tests für alle Container und Microservices durchführen, um festzustellen, ob zuvor einige Sicherheitslücken oder Sicherheitsprobleme aufgetreten sind.

# 13. Schützen Sie 🛡️ Daten jederzeit

Schützen Sie Daten während des Transports und in Ruhe. Im Idealfall erzwingen Sie die Verwendung von HTTPS für die gesamte Kommunikation, um die Daten während der Übertragung zu sichern, und für die Verschlüsselung aller vertraulichen Daten in Ruhe. Vermeiden Sie das Übertragen und Speichern von Nur-Text-Passwörtern, Schlüsseln, Anmeldeinformationen und vertraulichen Daten, die sich außerhalb des Codes befinden.

Die beste Strategie besteht darin, Standardtechnologien zu verwenden, um alle sensiblen Daten so früh wie möglich zu verschlüsseln. Entschlüsseln Sie die Daten außerdem so spät wie möglich, um die Exposition zu verringern.

Fazit

Microservices sind auf verteilte Komponenten angewiesen, um Vorteile wie mehr Flexibilität und Bereitstellungsoptionen zu bieten. Bei Verwendung der Microservices müssen Unternehmen jedoch die internen Sicherheitsrichtlinien und -strategien an einen Cloud-nativen und verteilten Ansatz anpassen.

Idealerweise zielen Sie darauf ab, die AngriffsflächeSchutz der Microservices-Umgebung, APIs, Anwendungen und Daten.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder