PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Perché la sicurezza a livello di riga non è abilitata per le visualizzazioni Postgres?

Fondamentalmente perché non era possibile modificare retroattivamente il funzionamento delle visualizzazioni. Vorrei poter supportare SECURITY INVOKER (o equivalente) per le visualizzazioni ma, per quanto ne so, al momento non esiste tale funzionalità.

Puoi filtrare normalmente l'accesso alla visualizzazione con sicurezza di riga.

Alle tabelle a cui accede la vista verranno applicate anche le regole di sicurezza delle righe. Tuttavia, vedranno il current_user come creatore di visualizzazioni perché visualizza le tabelle di accesso (e altre viste) con i diritti dell'utente che ha creato/proprietario della vista.

Forse varrebbe la pena sollevare questo problema su pgsql-hacker se sei disposto a intervenire e aiutare con lo sviluppo della funzionalità di cui hai bisogno, o altrimenti su pgsql-general?

Detto questo, mentre visualizza le tabelle di accesso come l'utente che crea e cambia current_user di conseguenza, non ti impediscono di utilizzare GUC personalizzate, il session_user o altre informazioni contestuali nelle politiche di sicurezza di riga. Puoi utilizzare la sicurezza delle righe con le viste, ma non (utile) per filtrare in base a current_user .