Row-level security RLS
Behörighetskontroll per rad, inbyggd i PostgreSQL sedan 9.5. Databasen filtrerar bort rader användaren inte får se, oavsett vilken fråga applikationen ställer.
Man aktiverar det per tabell och skriver sedan policyer med ett USING-uttryck för vad som får läsas och ett WITH CHECK-uttryck för vad som får skrivas. Villkoret vävs in i frågan av planeraren, vilket betyder att en glömd WHERE tenant_id = … någonstans i applikationen inte längre läcker data. Den vanligaste användningen är just flerhyresgästsystem, där policyn jämför radens ägare mot en sessionsvariabel satt vid anslutningen. Tre saker överraskar: tabellägaren kringgår som standard sina egna policyer om inte FORCE anges, policyer kan förstöra planer eftersom de begränsar vad optimeraren får flytta, och funktioner som inte är märkta LEAKPROOF kan i teorin användas för att lista ut dolt innehåll.