Row-level security: kdo vidí které řádky
Row-level security v PostgreSQL: práva na úrovni řádků přímo v databázi. Jak odděluje data klientů i oddělení — a proč nestačí práva v BI nástroji.
Dva lidé otevřou tutéž tabulku objednávek. Jeden vidí všechno, druhý jen svou pobočku. Žádné dvě kopie dat, žádný filtr schovaný v reportu — databáze sama rozhodla, které řádky komu ukáže. Přesně tohle dělá row-level security, řádková bezpečnost, a je to jedna z nejpodceňovanějších funkcí PostgreSQL. Pohled pod kapotu, jak ji používáme my.
Jak to funguje
Row-level security (zkráceně RLS) je pravidlo připojené přímo k tabulce: „uživatel vidí jen řádky, kde…” Databáze pak to pravidlo uplatní na každý dotaz — je jedno, jestli přišel z dashboardu, z exportu do Excelu, nebo z přímého připojení k databázi. Řádky, na které tazatel nemá právo, prostě nedostane. Ne že by je neviděl v grafu — ony pro něj neexistují.
Rozdíl proti právům nastaveným v BI nástroji je jako rozdíl mezi vrátným a závěsem. Závěs funguje, dokud se všichni chodí dívat oknem, u kterého visí. Vrátný stojí u jediného vchodu — a jiný vchod není.
Kde to používáme
Oddělení klientů a subjektů. U skladu jako služby běží data klientů na naší infrastruktuře — a řádková práva jsou jedna z vrstev, které je drží oddělená: databáze cizí řádky nevydá, i kdyby se o patro výš něco spletlo. Stejný princip řeší síť poboček, franšízu i holding s dceřinými firmami: data žijí vedle sebe, každý subjekt vidí jen svoje.
Práva uvnitř firmy. Stejný mechanismus řídí i jemnější přístupy: finanční čísla vidí finance, marketing vidí kampaně. Typické pravidlo z praxe: tabulka objednávek je jedna společná, ale obchodník v ní vidí jen svoje zákazníky, vedoucí prodeje celý svůj tým a jednatel všechno. Tři pohledy, jedna tabulka, žádné kopie dat — a žádná cesta, jak se k cizím číslům dostat omylem.
Proč ne v BI nástroji
Většina reportingových nástrojů umí „práva na dashboard”. Problém je, že platí jen uvnitř toho nástroje. Export do Excelu je obejde. Připojení jiného nástroje je obejde. Šikovný uživatel s přístupem k databázi je obejde. Práva řešená v prezentační vrstvě chrání prezentaci, ne data.
RLS sedí o patro níž — v databázi, kudy vedou všechny cesty k datům. Proto je to jediné místo, kde má smysl práva vynucovat: pravidlo napíšete jednou a platí pro každý současný i budoucí způsob, jak se k datům někdo dostane.
Co to stojí
Tady přijde příjemné překvapení: nic navíc. RLS je léta standardní součást PostgreSQL — žádný příplatkový modul, žádná enterprise licence. Je to typický příklad toho, o čem píšeme v článku o krabicových a enterprise řešeních: vlastnost, která se jinde prodává jako prémiový „security tier”, je v poctivě postavené open-source databázi zadarmo. Zaplatíte jen práci toho, kdo pravidla navrhne a zapne.
Otázka na vašeho dodavatele
Kupujete-li datový sklad, zeptejte se: „Kde se vynucují přístupová práva — v reportovacím nástroji, nebo v databázi?” Odpověď „v nástroji” znamená závěs. A závěs je pro data o tržbách, maržích a mzdách zbytečné riziko.
Chcete sklad, kde každý vidí přesně to, co má? Ozvěte se — ukážeme vám, jak RLS vypadá v praxi.
Další čtení
Postavím vám datový sklad a reporting na míru. Nezávazně to probereme.
Chci to probrat