🎉 Das neue Waldheim Customer Portal ist live – Zentrale Verwaltung für alle unsere Produkte!
Wir stellen vor: Das Customer Portal – Ihre zentrale Plattform zur Verwaltung von Lizenzen, Abonnements und Support für Ecodrive, Socialverse und Silvacore. Mit vollständiger Stripe-Integration, Multi-User-System und 2FA-Sicherheit. 

Sichere API-Gateways für Go-Microservices: Eine praktische Anleitung


Dieser Beitrag zeigt, wie ich ein sicheres API-Gateway konfiguriere, um eine Microservice-Architektur nach außen abzusichern.

Sichere API-Gateways für Go-Microservices: Ihr zentraler Schutzwall

In einer Microservice-Architektur besteht eine Anwendung aus vielen kleinen, unabhängigen Diensten. Diese lose Kopplung bietet enorme Vorteile bei Skalierbarkeit und Wartbarkeit. Sie schafft aber auch eine neue Herausforderung: Wie können externe Clients (z.B. eine Angular-Frontend-Anwendung oder mobile Apps) sicher und effizient mit diesem verteilten System kommunizieren? Die Antwort ist ein API-Gateway.

Das API-Gateway agiert als zentraler Eingangspunkt (“Single Point of Entry”) für alle externen Anfragen. Es ist jedoch weit mehr als nur ein einfacher Reverse-Proxy. Ein gut konfiguriertes Gateway ist der zentrale Schutzwall Ihrer gesamten Microservice-Landschaft. In diesem Beitrag zeige ich Ihnen als Go-Entwickler und DevSecOps-Praktiker, wie ich ein sicheres API-Gateway konfiguriere und welche sicherheitskritischen Aufgaben ich ihm übertrage, um meine Go-basierten Microservices zu schützen.

Warum ein API-Gateway unverzichtbar für die Sicherheit ist

Ohne ein Gateway müsste jeder einzelne Microservice sicherheitskritische Aufgaben selbst implementieren und direkt dem Internet ausgesetzt sein. Das ist ineffizient und fehleranfällig. Ein Gateway zentralisiert diese Aufgaben:

  • Authentifizierung & Autorisierung: Überprüft die Identität des Anfragenden und seine Berechtigungen.
  • Rate Limiting & Throttling: Schützt vor Brute-Force-Angriffen und Überlastung.
  • TLS-Terminierung: Entschlüsselt eingehende HTTPS-Anfragen und leitet sie unverschlüsselt (aber in einem sicheren internen Netzwerk) an die Services weiter.
  • Request-Validierung: Prüft, ob Anfragen dem erwarteten Schema entsprechen.
  • Zentrales Logging & Monitoring: Erfasst alle eingehenden Anfragen an einem Ort.

Meine Wahl: Open-Source-Gateways und ihre Konfiguration

Anstatt das Rad neu zu erfinden, setze ich auf bewährte Open-Source-API-Gateways. Meine Favoriten sind oft Traefik, Kong oder Caddy, da sie modern, performant und gut konfigurierbar sind. Die Prinzipien sind jedoch auf die meisten Gateways übertragbar.

1. Authentifizierung mit JWT (JSON Web Tokens)

Die erste und wichtigste Aufgabe des Gateways ist die Überprüfung der Identität.

  • Der Workflow:
    1. Ein Client authentifiziert sich bei einem dedizierten auth-service (ein Go-Microservice) mit Benutzername und Passwort.
    2. Der auth-service validiert die Anmeldedaten und stellt ein signiertes JWT aus. Dieses Token enthält Informationen über den Benutzer (z.B. User-ID, Rollen).
    3. Der Client sendet dieses JWT bei jeder nachfolgenden Anfrage im Authorization-Header an das API-Gateway.
  • Meine Gateway-Konfiguration:
    • Ich konfiguriere das Gateway so, dass es ein JWT-Validierungs-Plugin oder eine Middleware verwendet.
    • Das Gateway prüft bei jeder eingehenden Anfrage:
      • Ist das Token vorhanden und korrekt formatiert?
      • Ist die Signatur des Tokens gültig (mit einem öffentlichen Schlüssel, den das Gateway kennt)?
      • Ist das Token nicht abgelaufen?
    • Nur wenn alle Prüfungen erfolgreich sind, wird die Anfrage an den entsprechenden Upstream-Microservice weitergeleitet. Ansonsten wird sofort eine 401 Unauthorized-Antwort gesendet. Der Microservice selbst muss sich nicht mehr um die JWT-Validierung kümmern.

2. Rate Limiting zum Schutz vor Missbrauch

Rate Limiting verhindert, dass ein einzelner Client (oder Angreifer) die API mit zu vielen Anfragen in kurzer Zeit überlastet.

  • Das Risiko: Brute-Force-Angriffe auf Login-Endpunkte, Denial-of-Service (DoS)-Angriffe.
  • Meine Gateway-Konfiguration:
    • Ich konfiguriere Rate-Limiting-Regeln basierend auf der Client-IP-Adresse oder, falls authentifiziert, auf der User-ID aus dem JWT.
    • Beispiel-Regel: Erlaube maximal 100 Anfragen pro Minute pro IP-Adresse. Für den /login-Endpunkt erlaube nur 5 Anfragen pro Minute.
    • Wenn ein Client das Limit überschreitet, antwortet das Gateway mit 429 Too Many Requests, ohne den dahinterliegenden Go-Service überhaupt zu belasten. Für die Implementierung des Zählers im Hintergrund nutze ich oft eine performante In-Memory-Datenbank wie Redis.

3. TLS-Terminierung und interne Kommunikation

Das Gateway ist der einzige Punkt, der über HTTPS aus dem Internet erreichbar sein sollte.

  • Meine Konfiguration:
    • Ich konfiguriere das Gateway so, dass es den gesamten eingehenden HTTPS-Verkehr mit einem gültigen TLS-Zertifikat (oft von Let’s Encrypt automatisch verwaltet) terminiert.
    • Die Kommunikation vom Gateway zu den internen Go-Microservices findet in einem privaten, isolierten Netzwerk statt. Diese Kommunikation kann unverschlüsselt (HTTP) sein, um den Overhead zu reduzieren, oder – für noch höhere Sicherheit (Zero-Trust) – mit internen TLS-Zertifikaten (mTLS) abgesichert werden.

4. Request- und Response-Transformation

Manchmal müssen Anfragen modifiziert werden, bevor sie den Microservice erreichen.

  • Meine Praxis:
    • Header hinzufügen: Das Gateway kann nach erfolgreicher Authentifizierung Header zur Anfrage hinzufügen, denen die internen Services vertrauen können, z.B. X-User-ID oder X-User-Roles.
    • Pfade umschreiben: Das Gateway mappt öffentliche URL-Pfade (z.B. /api/users) auf interne Service-Adressen (z.B. http://user-service:8080/).
    • Antworten bereinigen: Das Gateway kann sicherheitsrelevante Header (z.B. X-Powered-By) aus den Antworten der Microservices entfernen, bevor sie an den Client gesendet werden.

Fazit: Komplexität managen, Sicherheit zentralisieren

Ein API-Gateway ist ein unverzichtbarer Baustein für den Aufbau einer sicheren und robusten Microservice-Architektur. Es reduziert die Komplexität für die einzelnen Go-Services, indem es sicherheitskritische, übergreifende Aufgaben an einem zentralen Punkt bündelt. Durch die Zentralisierung von Authentifizierung, Rate Limiting und TLS-Terminierung schaffe ich einen starken, konsistenten und leicht zu verwaltenden Schutzwall, der meine gesamte Anwendungsinfrastruktur absichert.


Stehen Sie vor der Herausforderung, Ihre wachsende Microservice-Landschaft sicher und effizient nach außen verfügbar zu machen? Ich unterstütze Sie bei der Konzeption, Auswahl und Konfiguration des richtigen API-Gateways für Ihre Go-basierten Microservices. Lassen Sie uns gemeinsam eine sichere und skalierbare Architektur für Ihre APIs entwerfen. Kontaktieren Sie mich für ein Architektur-Review.