Skip to content
Innopulse Consulting
SaaS & Engineering

Was ist Row-Level-Security (RLS)?

Kurzdefinition

Row-Level-Security (RLS) ist ein Sicherheitsmechanismus von Datenbanken, der den Zugriff auf einzelne Datenzeilen anhand von Regeln steuert. In SaaS-Anwendungen sorgt RLS dafür, dass jeder Nutzer und jeder Mandant nur die Daten sehen und ändern kann, die ihm gehören — durchgesetzt direkt von der Datenbank.

Row-Level-Security, abgekürzt RLS und auf Deutsch Sicherheit auf Zeilenebene, ist ein Mechanismus moderner Datenbanken, der den Zugriff auf einzelne Datenzeilen anhand definierter Regeln steuert. Während herkömmliche Berechtigungen oft nur auf Tabellenebene wirken — ein Nutzer darf eine Tabelle lesen oder nicht —, geht RLS feiner vor: Es entscheidet pro Zeile, ob ein bestimmter Nutzer sie sehen, ändern oder löschen darf. In SaaS-Anwendungen ist RLS zu einem zentralen Werkzeug der Datensicherheit geworden.

Das Problem, das RLS löst

In einem typischen SaaS teilen sich viele Kunden dieselbe Datenbank. Die Daten verschiedener Mandanten liegen oft in denselben Tabellen, unterschieden nur durch eine Mandantenkennung in jeder Zeile. Die grosse Gefahr besteht darin, dass eine fehlerhafte Abfrage versehentlich Daten des falschen Mandanten zurückgibt. Verlässt man sich allein auf die Anwendungslogik, jede Abfrage korrekt auf den richtigen Mandanten zu beschränken, genügt ein einziger vergessener Filter, um ein Datenleck zu verursachen. RLS löst dieses Problem, indem es die Beschränkung von der Anwendung in die Datenbank verlagert.

Wie RLS funktioniert

Bei aktivierter Row-Level-Security definiert der Entwickler Richtlinien, die festlegen, welche Zeilen ein Nutzer in einer bestimmten Situation sehen oder verändern darf. Diese Richtlinien werden bei jeder Abfrage automatisch von der Datenbank angewendet, unabhängig davon, was die Anwendung anfragt. Fragt eine Anwendung etwa alle Datensätze einer Tabelle ab, gibt die Datenbank dank RLS nur diejenigen zurück, die den Richtlinien für den aktuellen Nutzer entsprechen. Die Sicherheit wird damit auf der untersten Ebene erzwungen — selbst wenn die Anwendung einen Fehler enthält, kann sie die Datenbank nicht dazu bringen, fremde Daten preiszugeben.

RLS in PostgreSQL

PostgreSQL, eine der verbreitetsten Open-Source-Datenbanken, bietet eine ausgereifte Implementierung von Row-Level-Security. Entwickler aktivieren RLS für eine Tabelle und definieren dann Richtlinien, die mithilfe von Bedingungen festlegen, welche Zeilen für welche Rolle zugänglich sind. Diese Bedingungen können auf den aktuellen Nutzer, seine Rolle oder andere Kontextinformationen Bezug nehmen. Die Mächtigkeit dieses Systems erlaubt es, komplexe Zugriffsregeln direkt in der Datenbank abzubilden, was die Anwendung entlastet und die Sicherheit erhöht. PostgreSQL ist damit eine bevorzugte Wahl für SaaS-Anwendungen, die starke Mandantentrennung brauchen.

RLS und Supabase

Supabase, eine populäre Backend-Plattform auf Basis von PostgreSQL, hat Row-Level-Security zu einem zentralen Bestandteil seiner Architektur gemacht. Da Supabase Anwendungen oft erlaubt, direkt aus dem Browser mit der Datenbank zu kommunizieren, ist RLS hier nicht optional, sondern essenziell: Es ist der Mechanismus, der verhindert, dass ein Nutzer durch direkte Datenbankzugriffe an fremde Daten gelangt. Supabase integriert RLS eng mit seinem Authentifizierungssystem, sodass die Identität des angemeldeten Nutzers automatisch in den Richtlinien verfügbar ist. Diese Kombination macht es möglich, sichere Multi-Tenant-Anwendungen mit überschaubarem Aufwand zu bauen.

Die Vorteile gegenüber reiner Anwendungslogik

Der entscheidende Vorteil von RLS gegenüber einer Zugriffskontrolle allein in der Anwendung ist die Robustheit. Anwendungslogik ist fehleranfällig: Mit jedem neuen Programmteil, jeder neuen Abfrage und jedem neuen Entwickler wächst das Risiko, dass ein Filter vergessen wird. RLS dagegen wirkt zentral und automatisch — eine einmal korrekt definierte Richtlinie schützt alle Zugriffe auf eine Tabelle, unabhängig davon, von wo sie kommen. Dieses Prinzip der tief verankerten Sicherheit, bei dem die Schutzmassnahme so nah wie möglich an den Daten sitzt, ist ein Grundsatz guter Sicherheitsarchitektur.

Häufige Fallstricke

So mächtig RLS ist, es will sorgfältig eingesetzt werden. Ein häufiger Fehler ist, RLS für eine Tabelle zu aktivieren, aber keine oder falsche Richtlinien zu definieren, sodass entweder niemand oder jeder Zugriff erhält. Ein anderer Fehler ist, administrative Zugänge zu übersehen, die RLS umgehen, und dadurch unbeabsichtigt Schlupflöcher zu schaffen. Auch die Leistung will bedacht sein, denn komplexe RLS-Richtlinien können Abfragen verlangsamen, wenn sie nicht durch passende Indizes unterstützt werden. Eine sorgfältige Definition, gründliches Testen jeder Richtlinie und die Überprüfung administrativer Zugriffe sind daher unverzichtbar.

RLS im Sicherheitskonzept eines SaaS

Row-Level-Security ist ein wichtiger, aber nicht der einzige Baustein eines Sicherheitskonzepts. Sie ergänzt andere Massnahmen wie eine sichere Authentifizierung, Verschlüsselung der Daten in Ruhe und Transport, sorgfältiges Geheimnismanagement und Überwachung. Im Zusammenspiel dieser Massnahmen sorgt RLS speziell dafür, dass die Datentrennung zwischen Mandanten und Nutzern auf der Ebene erzwungen wird, auf der sie am wenigsten umgehbar ist. Innopulse setzt Row-Level-Security in jedem SaaS-Produkt als Standard ein, weil sie die Mandantentrennung — das Fundament jeder vertrauenswürdigen SaaS-Anwendung — auf der robustesten verfügbaren Ebene absichert.

Fazit

Ein konkretes Beispiel

Ein anschauliches Beispiel verdeutlicht den Wert von Row-Level-Security. Stellt man sich eine Tabelle mit Projekten vor, in der jedes Projekt zu einem bestimmten Mandanten gehört, so sorgt eine RLS-Richtlinie dafür, dass ein Nutzer nur die Projekte seines eigenen Mandanten sieht. Fragt seine Anwendung versehentlich alle Projekte ab — etwa wegen eines Programmierfehlers —, gibt die Datenbank dennoch nur die Projekte seines Mandanten zurück, weil die Richtlinie automatisch greift. Ohne RLS hätte derselbe Fehler dazu geführt, dass der Nutzer die Projekte aller Mandanten gesehen hätte: ein schwerwiegendes Datenleck. Dieses Beispiel zeigt, warum RLS als Sicherheitsnetz so wertvoll ist — es fängt genau die Fehler ab, die in der Anwendungslogik unweigerlich irgendwann passieren.

RLS und Performance

Ein Aspekt, der bei Row-Level-Security Beachtung verdient, ist die Leistung. Da die Datenbank bei jeder Abfrage die definierten Richtlinien prüft, können komplexe Richtlinien Abfragen verlangsamen, wenn sie nicht durch passende Indizes unterstützt werden. In der Praxis ist dieser Effekt bei gut gestalteten Richtlinien und korrekt gesetzten Indizes meist gering, doch bei sehr grossen Datenmengen sollte man die Leistung im Auge behalten. Die Lösung liegt darin, die Richtlinien einfach und effizient zu halten und die Spalten, auf die sie sich beziehen, zu indizieren. Mit dieser Sorgfalt lässt sich die hohe Sicherheit von RLS erreichen, ohne spürbare Einbussen bei der Geschwindigkeit. Die Investition in saubere Indizes zahlt sich doppelt aus, weil sie auch die übrige Abfrageleistung verbessert.

RLS testen und absichern

So wirksam Row-Level-Security ist, sie entfaltet ihren Schutz nur, wenn die Richtlinien korrekt definiert und gründlich getestet sind. Jede Richtlinie sollte mit verschiedenen Nutzern und Mandanten geprüft werden, um sicherzustellen, dass sie genau das erlaubt, was sie soll, und nichts darüber hinaus. Besondere Aufmerksamkeit verdienen administrative Zugänge und Dienstkonten, die RLS unter Umständen umgehen können und daher sorgfältig kontrolliert werden müssen. Automatisierte Tests, die typische Zugriffsszenarien durchspielen, sind eine wertvolle Absicherung gegen versehentliche Lücken. Innopulse testet RLS-Richtlinien als festen Bestandteil der Qualitätssicherung jedes Produkts, weil eine falsch konfigurierte Richtlinie die Mandantentrennung — das Fundament der Sicherheit — unbemerkt aushebeln könnte.

Row-Level-Security ist eines der wirksamsten Werkzeuge, um die Datentrennung in Multi-Tenant-SaaS-Anwendungen zuverlässig durchzusetzen. Indem sie die Zugriffskontrolle von der fehleranfälligen Anwendungslogik in die Datenbank verlagert, schützt sie auch dann, wenn anderswo ein Fehler passiert. Wer ein SaaS auf einer Datenbank wie PostgreSQL oder einer Plattform wie Supabase aufbaut, sollte RLS von Anfang an einsetzen und seine Richtlinien sorgfältig definieren und testen. Richtig eingesetzt, ist RLS eine der besten Investitionen in die Sicherheit eines SaaS-Produkts.

SaaS & Engineering ist unser Fachgebiet

Innopulse erklärt nicht nur Begriffe — wir setzen sie für DACH-Unternehmen in die Praxis um.