Zum Inhalt springen

Service-Role-Key (Supabase)

Glossar

Der Service-Role-Key (in neuen Projekten: Secret Key, Präfix sb_secret_) ist Supabases Generalschlüssel: Er umgeht jede Row-Level-Security-Regel und darf jede Zeile lesen, ändern und löschen. Er gehört ausschließlich auf den Server. Landet er im Frontend-Code, in einer NEXT_PUBLIC-Variable oder im Browser-Bundle, kann jeder Besucher die komplette Datenbank auslesen und überschreiben — unabhängig davon, wie gut die restliche App gesichert ist.

Supabase gibt euch zwei Arten von Schlüsseln: einen öffentlichen, an RLS gebundenen (früher „anon“, heute „publishable“ mit dem Präfix sb_publishable_) und einen privaten, der RLS umgeht (früher „service_role“, heute „secret“ mit dem Präfix sb_secret_). Der öffentliche Schlüssel darf ins Frontend, er sieht nur, was eure RLS-Policies erlauben. Der geheime darf das nie, weil er alle Regeln aushebelt. Diese Unterscheidung ist der häufigste kritische Fehler in KI- und No-Code-generierten Apps.

Wo ihr die Schlüssel findet: im Supabase-Dashboard unter Settings → API Keys. Dort stehen die neuen publishable und secret keys; die alten anon- und service_role-Schlüssel liegen bei älteren Projekten im Reiter für die Legacy-Schlüssel. Supabase will die alten Schlüssel laut Doku bis Ende 2026 abschalten, ein genaues Datum steht noch aus. Wichtig beim Umstieg: Neue Schlüssel anzulegen widerruft die alten nicht. Die bleiben gültig, bis ihr sie dort ausdrücklich deaktiviert.

Der typische Weg ins Leck: Ein Generator oder ein Tutorial legt den Key in eine Variable mit dem Präfix NEXT_PUBLIC_ (Next.js) oder VITE_ (Vite) — beide werden fest ins ausgelieferte Browser-Bundle kompiliert. Wer die Seite öffnet und in die Developer-Tools schaut, hat den Generalschlüssel. Ab dann ist die Datenbank offen, egal wie stark das Passwort ist.

Prüft es selbst: Der Service-Role-Key darf nur in serverseitigem Code stehen (API-Routen, Server Actions, Edge Functions) und in Umgebungsvariablen ohne NEXT_PUBLIC-/VITE-Präfix. Sucht im gesamten Frontend-Bundle nach „service_role“ und „sb_secret_“. Genau diesen Fund macht der decivo Scan sichtbar, er gehört zu den Befunden, die eine App sofort auf „Stop“ setzen.

Bereit für produktionsreife Software?

Bringt euer Vorhaben ins Erstgespräch — wir ordnen es ehrlich ein und empfehlen den passenden nächsten Schritt.

Erstgespräch vereinbaren

30 Minuten, kostenlos. Ihr sprecht direkt mit uns.