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.