Regole di accesso nell'export

Un export Postgres include le policy di row-level security che riproducono quali righe ciascuno dei tuoi utenti può leggere. Le applichi tu, e coprono solo la lettura.

Cosa riproducono le policy

Il bundle di export include policies.sql, che imposta la row-level security sulle tabelle esportate. Un utente vede una riga quando ne è il proprietario, quando è pubblica, quando gli è stata concessa esplicitamente, o quando dipende da qualcosa che può già vedere. Quest'ultimo caso arriva a un solo livello, tramite un riferimento che porta accesso in lettura. Le concessioni esplicite viaggiano in una tabella propria, che le policy consultano e che gli utenti non possono leggere direttamente.

Dentro Fóir le regole sono applicate nel database, compilate da Demesne su un'unica tabella dei record. L'export ha una tabella per modello, quindi le stesse regole vengono scritte di nuovo per quella forma.

Applicarle

Esegui il file con psql dopo che i dati sono stati caricati. Applicare il bundle tramite il comando di export non lo esegue. Da lì in poi il contratto è una sola impostazione di sessione, request.jwt.claims, che porta l'id dell'utente. Senza claim impostati, il chiamante è anonimo e vede esattamente le righe pubbliche. Testa con authenticated come ruolo: il ruolo che ha ripristinato le tabelle ne è il proprietario, e il proprietario di una tabella aggira la row-level security.

Cosa non si trasferisce

Permessi a livello di campo, gli scope dell'API e le regole di scrittura restano indietro. Un utente che può vedere una riga nel database ripristinato ne vede ogni colonna, quindi nascondere un campo diventa compito della tua applicazione, di un grant sulle colonne o di una vista. Le policy danno ai chiamanti anonimi e autenticati solo accesso in lettura, e l'accesso alla console del tuo team non viene esportato.

Cosa viene testato

La nostra suite di test esporta un progetto con dati di esempio, lo ripristina in un secondo database, applica le policy e richiede gli stessi id di riga per lo stesso utente su entrambi i lati. Questo testa la traduzione, e nulla verifica le policy sul tuo database ripristinato. Non dichiariamo che le regole ripristinate corrispondano per un progetto che usa le organizzazioni.

Leggi il dettaglio

La sezione sulle regole di accesso della guida all'export mostra come applicare le policy, impostare i claim di un utente e testare con il ruolo giusto.