Betrieb

Sicherheit

In den Helm-Chart eingebaute Sicherheitshärtung.

routess wird mit produktionsreifen Kubernetes-Sicherheits-Defaults ausgeliefert.

Network Policies

Eine Default-Deny-Policy blockiert sämtlichen Ingress und Egress im routess-Namespace. Allows sind explizit:

  • Web: Ingress nur aus dem Cloudflare-Tunnel-Namespace
  • API: Ingress aus Cloudflare-Tunnel + innerhalb des Namespace; Egress zu Postgres + DNS + extern (für Google OAuth)
  • Docs / Landing: Ingress nur aus dem Cloudflare-Tunnel

DNS-Egress ist namespace-weit auf UDP/TCP 53 erlaubt.

Pod Security Standards

Jeder Pod läuft:

  • Non-root: web als UID 101 (nginx), api als 1000, docs und landing als 1001
  • Keine Privilege-Escalation: allowPrivilegeEscalation: false
  • Verworfene Capabilities: capabilities.drop: [ALL]
  • Seccomp: RuntimeDefault-Profil
  • Read-only-Root-Dateisystem: nur api (web braucht nginx-Temp-Verzeichnisse)

ServiceAccounts

Jeder Service hat einen dedizierten ServiceAccount mit automountServiceAccountToken: false. Keine der Workloads muss die Kubernetes-API aufrufen.

Secrets

API-Secrets (JWT-Secret, Analytics-Salt, PAT-Pepper, Google-OAuth-Anmeldedaten, DB-Anmeldedaten, Resend-Key) werden in Kubernetes-Secret-Objekten abgelegt und über secretKeyRef als Umgebungsvariablen injiziert. CI zieht die Werte aus 1Password und injiziert sie über helm install --set.

Plane Rotationen: das Rotieren des JWT-Secrets meldet jeden Nutzer ab, das Rotieren des PAT-Peppers invalidiert jedes Personal Access Token, und das Rotieren des Analytics-Salts setzt die Analytics-Pseudonyme zurück.

Resource-Limits

CPU-, Speicher- und Ephemeral-Storage-Limits sind auf jedem Container gesetzt, um Ressourcenerschöpfung zu verhindern.

On this page