Tengo una sola base de datos postgres, con dos usuarios; Alice y Bob
Me gustaría poder hacer una NOTIFY alice_channel 'sensitive data'sin que Bob pueda entrar a escondidas LISTENcon solo adivinar que el nombre del canal es 'alice_channel'.
En la práctica, los nombres de los canales son muy difíciles de adivinar, pero esto es seguridad a través de la oscuridad en el mejor de los casos.
¿Estoy en lo cierto al creer que no hay forma de evitar que un usuario de la base de datos use (abuse) LISTENy NOTIFY? es decir , no parece haber ningún privilegio asociado que se pueda otorgar o revocar.
¿Es este un callejón sin salida?
postgresql
postgresql-9.2
Chris Farmiloe
fuente
fuente

LISTEN/NOTIFYsi pudiera bloquearlo un poco. Tal como está, se trata de una función de "pinchar a un cliente" para volver a sondear todos los datos que "pueda" necesitar.Respuestas:
No hay permisos en
LISTENyNOTIFY. No habría tenido sentido tener ninguno hasta que se introdujera el soporte para notificar cargas en versiones más recientes.Si desea control de acceso, cree una tabla con la información que desea y luego envíe una
NOTIFYque esté vacía o que no tenga más que una clave principal para esa tabla.SELECTlas filas de interés de la tabla, que pueden tener control de acceso, para obtener los datos confidenciales. Esta solía ser la única forma de usarLISTENyNOTIFYenviar datos específicos antes de agregar las cargas útiles.fuente
AclModeypg_database_aclcheckllamar a alguna parte, ha pasado un tiempo desde que miré: /