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 LISTEN
con 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) LISTEN
y 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
/NOTIFY
si 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
LISTEN
yNOTIFY
. 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
NOTIFY
que esté vacía o que no tenga más que una clave principal para esa tabla.SELECT
las 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 usarLISTEN
yNOTIFY
enviar datos específicos antes de agregar las cargas útiles.fuente
AclMode
ypg_database_aclcheck
llamar a alguna parte, ha pasado un tiempo desde que miré: /