Sicurezza a livello di riga
Autorizzazione per singola riga integrata in PostgreSQL dalla versione 9.5. Il database filtra le righe che l'utente non può vedere, qualunque query l'applicazione invii.
Si abilita per tabella e si scrivono poi policy con un'espressione USING per ciò che si può leggere e un'espressione WITH CHECK per ciò che si può scrivere. La condizione viene integrata nella query dal planner, quindi un WHERE tenant_id = … dimenticato da qualche parte nell'applicazione non causa più fughe di dati. L'uso più comune è proprio lo scenario multi-tenant, in cui la policy confronta il proprietario della riga con una variabile di sessione impostata alla connessione. Tre cose sorprendono: il proprietario della tabella aggira per impostazione predefinita le proprie policy, a meno che non si specifichi FORCE; le policy possono rovinare i piani di esecuzione perché limitano ciò che l'ottimizzatore può spostare; e le funzioni non marcate LEAKPROOF possono in teoria servire a dedurre il contenuto nascosto.