Skip to main content

Best Practices für die Sicherheit von API-Gateways

Artikel von

Kuria Macharia

feature api

7. September 2022

0 Min. Lesezeit

APIs sind aufgrund ihrer Bedeutung für Microservices ein wichtiger Bestandteil der heutigen Entwicklungslandschaft. Moderne Software besteht häufig aus verschiedenen Microservices, sodass bestimmte Funktionen möglicherweise den Umfang einer einzelnen API übersteigen. Mit einem API-Gateway können wir diese Dienste zusammenfassen, sodass sie sich wie eine einzelne API verhalten. Komplexe Antworten aus verschiedenen Microservices lassen sich dann über einen einzigen Aufruf an das API-Gateway abrufen. So können Sie beispielsweise mit einem API-Gateway und GraphQL über ein einziges definiertes Schema bestimmte Datenfelder aus verschiedenen Microservices abfragen und eine einheitliche Antwort erhalten.

Was ist ein API-Gateway?

Ein API-Gateway ist eine Abstraktionsebene, die in der Regel als einzige öffentliche Schnittstelle zwischen Microservices und den aufrufenden Clients fungiert. Als Proxy für die Backend-Microservices verbindet es die clientseitigen API-Endpunkte, leitet Client-Anfragen an die entsprechenden Microservices weiter und fasst die Antwortdaten zusammen, bevor es sie an den anfragenden Client sendet. Es bietet eine einheitliche und konsistente Programmierschnittstelle, die Frontend-Entwicklern die Arbeit erleichtert.

Zu den weiteren Vorteilen von API-Gateways gehören:

Lastverteilung— Wir können ein API-Gateway so konfigurieren, dass es die Last verteilt, indem eingehende Client-Anfragen auf verfügbare Dienstinstanzen verteilt werden.

Vermeidung mehrfacher Roundtrips— Ein Gateway vermeidet unnötige Client-Anfragen, die die Latenz erhöhen und die Performance beeinträchtigen können. Clients können eine einzelne Anfrage an das Gateway senden, das diese an mehrere Dienste weiterleitet und die Antworten zusammenfasst.

Zentrale Nutzungsüberwachung und Analyse— Mit einem API-Gateway können wir Überwachungs- und Analysetools integrieren, um wertvolle Daten zum Nutzer-Traffic, zur Ausführungszeit und zu Fehlern zu erfassen und auszuwerten. Diese Informationen sind entscheidend, wenn wir über die Skalierung und das Debugging einer Anwendung entscheiden.

Der Zugriff von APIs auf Backend-Dienste macht sie zu einem attraktiven Angriffsziel für böswillige Hacker, die auf Backend-Dienste zugreifen oder Daten während der Übertragung abfangen wollen. Ein API-Gateway bildet eine Sicherheitsbarriere zwischen den Endpunkten der Backend-Microservices und den Client-Endpunkten.

In diesem Artikel werfen wir einen Blick auf die Sicherheitsvorteile von API-Gateways und zeigen Best Practices sowie weitere Maßnahmen, mit denen Sie Ihre API-Gateways schützen können.

Wie ein API-Gateway die Sicherheit erhöht

Sicherheit ist ein zentrales Anliegen für Unternehmen, die ihre Dienste als API anbieten. Ein API-Gateway kann die Sicherheitslage von Systemen, die öffentlich zugängliche API-Endpunkte nutzen, auf verschiedene Weise verbessern. Dazu gehören:

Durchsetzung von Richtlinien

Richtlinien sind Regeln, die beim Zugriff auf die zugrunde liegenden Dienste und bei der Steuerung des API-Verhaltens eingehalten werden müssen. Eine Richtlinie umfasst zwei Komponenten: eine oder mehrere zu überprüfende Regeln und die daraus folgende Aktion. Die Durchsetzung der Richtlinien erfolgt innerhalb des API-Gateways. Wir können sie an die Anforderungen verschiedener Aufgaben anpassen, etwa an die Authentifizierung und Autorisierung oder an die Traffic-Verwaltung. Ein gutes Beispiel dafür ist das Marshaling von JSON und andere Formen der Datenserialisierung, die sich an einem zentralen Einstiegspunkt standardisieren lassen.

Schutz vor Traffic-Überlastung

Ein API-Gateway kann die Anzahl der API-Aufrufe innerhalb eines festgelegten Zeitraums begrenzen. So wird sichergestellt, dass die Verarbeitungskapazität des Backends nicht überschritten wird. Dadurch wird das System vor Denial-of-Service-Angriffen (DoS) geschützt, bei denen die Backend-Microservices mit Traffic überflutet werden. Außerdem schützt es die API vor Brute-Force-Angriffen und Angriffen durch Ausprobieren, bei denen zahlreiche Anfragen mit unterschiedlichen Zugangsdaten gesendet werden.

Circuit Breaker

Ein Circuit Breaker verbessert die Sicherheitslage, indem er die Verbindung zu den Backend-Diensten absichert. Er funktioniert, indem er Verbindungen zum Backend für einen festgelegten Zeitraum unterbricht, wenn eine bestimmte Anzahl aufeinanderfolgender Verbindungsfehler erreicht wird. So wird verhindert, dass ein Backend mit Anfragen überlastet wird, die zwangsläufig fehlschlagen. Diese automatische Schutzmaßnahme verhindert, dass Angreifer kaskadierende API-Ausfälle verursachen.

Entkopplung der Backend-Dienste von den Frontend-Anwendungen

Ein API-Gateway erhöht die Sicherheit sensibler Backend-Dienste, indem es den direkten Kontakt zwischen ihnen und den Frontend-Anwendungen verhindert. Dadurch wird auch eingeschränkt, was das Frontend über die Microservices erfahren kann, die seine Anfragen verarbeiten. Das schützt das System vor SQL-Injection-Angriffen, bei denen schädlicher Code an die Backend-Datenbanken übermittelt wird. Wenn weniger über das Backend bekannt ist, wird es schwieriger, SQL-Injection-Angriffe zu starten. Denn Angreifern fehlen Informationen darüber, aus welcher Datenbank die Informationen stammen.

Best Practices für die Sicherheit von API-Gateways

Ein API-Gateway kann das Risiko von Injection-Angriffen verringern, indem es für alle Anfragen eine grundlegende Eingabevalidierung durchführt. So werden Anfragen mit verdächtigen Einträgen verworfen, bevor sie die Backend-Dienste erreichen.

Gateways bieten zwar ausgezeichnete Sicherheitsfunktionen, doch wir sollten auch proaktiv daran arbeiten, unsere API-Endpunkte und Microservices zu schützen. Sehen wir uns einige Best Practices für ein sicheres API-Gateway an.

HTTPS und Verschlüsselung von Anfragen

Um die Sicherheit eines API-Gateways zu verbessern, sollten wir zunächst sicherstellen, dass die Kommunikation mit Clients über HTTPS erfolgt. HTTPS ist ein sicheres Protokoll, das alle übertragenen Daten verschlüsselt und so deren Sicherheit erhöht. Es ist der aktuelle Branchenstandard für öffentlich zugängliche Websites. Das TLS-Protokoll ist besonders wichtig, wenn bei der Ausführung sensible Daten übertragen werden, etwa bei der Anmeldung bei einem E-Mail-Dienst, einem Bankkonto oder einem Unternehmenssystem aus der Ferne. Außerdem können wir damit die Verwaltung von TLS vom Client auf den Cloud-Service-Provider übertragen.

API-Anfragen validieren

Wir sollten ein API-Gateway so konfigurieren, dass es die vom Client empfangene API-Anfrage validiert, bevor es sie an die Backend-Microservices weiterleitet. So können wir ein Gateway beispielsweise so einrichten, dass es prüft, ob ein Anfrageparameter oder Header leer ist oder ob die Payload dem zulässigen JSON-Schema entspricht.

Schlägt die Validierung fehl, verwirft das API-Gateway die Anfrage und sendet eine Fehlermeldung an den Client zurück. Dadurch werden weniger unnötige Anfragen an den Server weitergeleitet und das Risiko von Injection-Angriffen verringert.

Logging einrichten

Wir sollten das Logging in einem API-Gateway aktivieren, um Probleme beim Client-Zugriff und bei der Verarbeitung von Anfragen beheben zu können. Ein API-Gateway erstellt zwei Arten von Logs: Ausführungs- und Zugriffs-Logs.

Ausführungs-Logs enthalten Details zu jedem Schritt, den ein API-Gateway bei der Verarbeitung einer Anfrage durchläuft. Die protokollierten Daten umfassen Ausführungs-Traces, Validierungsschritte und Fehler. Zugriffs-Logs enthalten Details zu jedem Zugriff auf das API-Gateway. Für jede Anfrage wird ein Eintrag erstellt, der festhält, wer auf das API-Gateway zugreift und wie der Zugriff erfolgt.

Rate Limiting implementieren

In einem API-Gateway sollten wir Rate Limiting implementieren, um:

  • Denial-of-Service-Angriffe (DoS) zu verhindern

  • Die Auswirkungen kaskadierender Ausfälle zu begrenzen

  • Die Ressourcennutzung zu begrenzen.

Durch Rate Limiting am API-Gateway sind unsere Microservices vor bösartigem Traffic und vor legitimen Traffic-Spitzen geschützt, die einen Systemausfall verursachen können. Eine Throttling-Richtlinie mildert die Nachteile eines strikten Rate Limitings ab, indem Anfragen, die das Limit überschreiten, zur Verarbeitung im nächsten Kontingent vorgemerkt werden. Rate-Limiting- und Throttling-Richtlinien lassen sich auf eine bestimmte Ressource oder auf alle Anfragen anwenden.

Web Application Firewall (WAF) aktivieren

Wir können unser API-Gateway mit einer Web Application Firewall (WAF) schützen, die den API-Zugriff anhand festgelegter Bedingungen und Regeln einschränkt. Sie schützt das API-Gateway vor häufigen Bedrohungen wie Cross-Site-Scripting- und Injection-Angriffen.

So können wir beispielsweise mit einer WAF den Zugriff auf Anfragen aus bestimmten CIDR-Blöcken, IP-Adressbereichen oder Ländern verweigern oder erlauben. Sie kann auch Anfragen mit schädlichen Skripten oder SQL-Code erkennen und verwerfen. Mit einer WAF rückt die Sicherheitsbarriere näher an die Client-Seite, und das API-Gateway wird von unnötigen Aufgaben entlastet.

Eine WAF filtert Inhalte effektiv auf HTTP-Ebene. Die US CISA empfiehlt sie sogar als eine der Maßnahmen, um Angriffe aufgrund der Log4j-Schwachstelle zu verhindern. Sie zählt auch zu den Best Practices von Snyk zur Behebung von Log4Shell.

API-Gateways gezielt einsetzen

Wir sollten für unterschiedliche Anwendungsfälle separate API-Gateways erstellen, um die Angriffsfläche zu verringern und unnötig exponierte API-Endpunkte zu vermeiden. Ein gezielter Einsatz von API-Gateways hilft außerdem, die Auswirkungen eines Gateway-Ausfalls oder von Throttling zu begrenzen.

Wird beispielsweise ein Gateway angegriffen, sind nicht gleich alle Dienste des Systems betroffen. Da die Angriffsfläche deutlich kleiner ist, lässt sich das System außerdem leichter debuggen.

Das Beste aus Ihrem API-Gateway herausholen

Der wichtigste Schritt zum Schutz unserer API ist die Einführung eines API-Gateways.

Es entkoppelt die Microservices-Architektur von der öffentlich zugänglichen API und ermöglicht es uns, dazwischen verschiedene Sicherheitsbarrieren einzurichten. Diese Barrieren – darunter Rate Limits, WAF, HTTPS und Anfragevalidierung – verringern das Risiko häufiger API-Angriffe wie SQL-Injection, Cross-Site-Scripting und Denial-of-Service-Angriffe.

Mit Best Practices wie HTTPS-Kommunikation, Anfragevalidierung, Logging, Rate Limiting, WAF und gezielt eingesetzten API-Gateways verringern wir das Risiko erfolgreicher Angriffe auf Endpunkte und Daten während der Übertragung. Erfahren Sie hier mehr über API-Sicherheit.

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.