Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?

Beitrags-Cover: Was ist Row Security in PostgreSQL und warum ist es für Rails-Entwickler wichtig?
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
PostgreSQL hat eine leistungsstarke, aber oft unterschätzte Funktion - Row Level Security (RLS).
Kurz gesagt, es ist der Datenschutz auf Zeilenebene der Tabelle, das heißt - das System entscheidet, welche Datensätze der Benutzer sehen oder ändern kann, noch bevor die Abfrage in Ihren Rails-Code gelangt.

Wie es funktioniert

In einer normalen Situation wird der Zugriff auf Daten in der Anwendung kontrolliert - zum Beispiel schreiben wir in Rails:
@posts = Post.where(user_id: current_user.id)
Aber RLS ermöglicht es, diese Überprüfung der Datenbank selbst zu überlassen.
Sie aktivieren die Sicherheitsrichtlinie für die Tabelle:
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;

CREATE POLICY user_is_owner
  ON posts
  FOR SELECT USING (user_id = current_setting('app.current_user_id')::int);
Danach, selbst wenn jemand SELECT * FROM posts ausführt,
 setzt PostgreSQL automatisch die Bedingung ein, damit der Benutzer nur seine Zeilen sieht.

Wie man RLS in Rails integriert

In Rails kann man vor der Ausführung der Abfrage current_user.id im Datenbankkontext setzen:
ActiveRecord::Base.connection.execute("SET app.current_user_id = #{current_user.id}")
Und dann geben alle Abfragen (Post.all, Post.find, sogar joins) nur die erlaubten Daten zurück - ohne zusätzliche where im Code.
Das ist praktisch für Mehrbenutzersysteme, SaaS oder APIs, wo die Sicherheit nicht nur vom Anwendungscode abhängen sollte.

Warum das überhaupt

  • Datenbanksicherheit - selbst wenn jemand versehentlich where(user_id: ...) vergisst, werden die Daten nicht durchgesickert.
  • Einfachheit der Abfragen - man kann Model.all schreiben, ohne über Filter nachzudenken.
  • Einheitliche Zugriffskontrolle - die Regeln werden zusammen mit den Daten gespeichert und nicht über Controller und Services verstreut.
RLS ersetzt nicht die Autorisierung in der Anwendung. Es ist eine zusätzliche Schutzebene, die garantiert, dass selbst auf niedriger Ebene niemand "überflüssige" Daten erhält. Row Level Security ist wie where(user_id: current_user.id), aber in die Datenbank selbst eingebaut.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was ist eine HAR-Datei (HTTP-Archiv)?
25. Aug, 18:23 Uhr

Was ist eine HAR-Datei (HTTP-Archiv)?

meme code
meme code@memecode
Was ist Bubble Sort (Erklärung des Algorithmus)?
16. Sep, 18:42 Uhr

Was ist Bubble Sort (Erklärung des Algorithmus)?

meme code
meme code@memecode
Was ist exponentielles Wachstum?
16. Sep, 18:57 Uhr

Was ist exponentielles Wachstum?

meme code
meme code@memecode
Was ist faktoriale Komplexität?
16. Sep, 19:03 Uhr

Was ist faktoriale Komplexität?

meme code
meme code@memecode
Was ist NP-Komplexität?
16. Sep, 19:31 Uhr

Was ist NP-Komplexität?

meme code
meme code@memecode
Offset vs Cursor Pagination in Rails: was wählen und warum
24. Sep, 15:22 Uhr

Offset vs Cursor Pagination in Rails: was wählen und warum

meme code
meme code@memecode
Was ist ivar in Ruby / Rails?
19. Okt, 20:12 Uhr

Was ist ivar in Ruby / Rails?

meme code
meme code@memecode
Hauptmethoden der Authentifizierung in der API
19. Okt, 20:26 Uhr

Hauptmethoden der Authentifizierung in der API

meme code
meme code@memecode
Was unterscheidet OAuth 1 von OAuth 2
19. Okt, 20:34 Uhr

Was unterscheidet OAuth 1 von OAuth 2

meme code
meme code@memecode
Was ist ORM und wozu wird es benötigt?
26. Okt, 14:00 Uhr

Was ist ORM und wozu wird es benötigt?

meme code
meme code@memecode
MCP: das neue Internet, in dem Websites mit KI kommunizieren
04. Nov, 11:43 Uhr

MCP: das neue Internet, in dem Websites mit KI kommunizieren

meme code
meme code@memecode
Warum ist TOON besser als JSON bei der Arbeit mit KI?
14. Nov, 15:14 Uhr

Warum ist TOON besser als JSON bei der Arbeit mit KI?

meme code
meme code@memecode