ASCOLTA / NOTIFICA i privilegi


9

Ho un unico database Postgres, con due utenti; Alice e Bob.

Mi piacerebbe essere in grado di fare una cosa NOTIFY alice_channel 'sensitive data'senza che Bob sia in grado di intrufolarsi LISTENsemplicemente indovinando che il nome del canale è 'alice_channel'.

In pratica i nomi dei canali sono molto difficili da indovinare, ma questa è la sicurezza attraverso l'oscurità nella migliore delle ipotesi.

Sono corretto nel ritenere che non vi sia modo di impedire a un utente del database di usare (abusare) LISTENe NOTIFY? cioè non sembra esserci alcun privilegio associato che può essere concesso o revocato.

È un vicolo cieco?


Non conosco un modo per escludere gli utenti dall'ascolto. Ma se scegli un nome per il canale come se scegliessi una password sicura, questo non farebbe il lavoro?
— Erwin Brandstetter,

Sì, è quello che sto facendo in questo momento (usando grandi stringhe casuali), ma sembra sporco ed è piuttosto limitante. Ci sono alcune cose piuttosto interessanti che potrei fare LISTEN/ NOTIFYse potessi bloccarlo un po '. Allo stato attuale, è piuttosto "ficcanaso un client per ripetere il polling per tutti i dati di cui potresti aver bisogno".
— Chris Farmiloe,

Volevo solo sapere se le cose sono cambiate da quando è stata data una risposta. Sei stato in grado di implementare qualcosa?
— Phill Pafford,

Se non ti fidi delle tue app, non dovresti lasciarle entrare. Penso che sia un vicolo cieco nel sistema di produzione. C'è stata una proposta però per i privati ​​correlati. postgresql.org/message-id/51CC98FB.9040700%40agliodbs.com
— Anssi

Risposte:


4

Non ci sono permessi su LISTENe NOTIFY. Non avrebbe avuto senso se non fosse stato introdotto il supporto per i payload di notifica nelle versioni più recenti.

Se si desidera il controllo dell'accesso, creare una tabella con le informazioni desiderate e quindi inviarne una NOTIFYvuota o che non contenga una chiave primaria per quella tabella. SELECTle righe di interesse della tabella, che possono avere il controllo di accesso, per ottenere i dati sensibili. Questo era l'unico modo per utilizzare LISTENe NOTIFYinviare dati specifici prima dell'aggiunta dei payload.


Grazie Craig, ho pensato tanto. Potrei dare un'occhiata alla fonte e vedere quanto sarà difficile da implementare, ma immagino che richiederà un livello di database completamente nuovo AclModee pg_database_aclcheckchiamare da qualche parte, è da un po 'che non guardo: /
— Chris Farmiloe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.