J'ai une seule base de données postgres, avec deux utilisateurs; Alice et Bob.
Je voudrais pouvoir faire un NOTIFY alice_channel 'sensitive data'
sans que Bob puisse LISTEN
se faufiler dedans juste en devinant que le nom du canal est 'alice_channel'.
Dans la pratique, les noms de canaux sont très difficiles à deviner, mais c'est au mieux la sécurité grâce à l'obscurité.
Ai-je raison de croire qu'il n'y a aucun moyen d'empêcher un utilisateur de base de données d'utiliser (abuser) LISTEN
& NOTIFY
? c'est-à-dire qu'il ne semble pas y avoir de privilèges associés pouvant être accordés ou révoqués.
Est-ce une impasse?
postgresql
postgresql-9.2
Chris Farmiloe
la source
la source
LISTEN
/NOTIFY
si je pouvais le verrouiller un peu. Dans l'état actuel des choses, il s'agit plutôt d'une fonction «pousser un client à interroger à nouveau toutes les données dont vous pourriez avoir besoin».Réponses:
Il n'y a aucune autorisation sur
LISTEN
etNOTIFY
. Il n'aurait pas été logique d'en avoir jusqu'à ce que la prise en charge des notifications de charges utiles soit introduite dans des versions plus récentes.Si vous souhaitez contrôler l'accès, créez une table avec les informations souhaitées, puis envoyez-en une
NOTIFY
qui est vide ou qui n'a rien d'autre qu'une clé primaire pour cette table.SELECT
la ou les lignes d'intérêt de la table, qui peuvent avoir un contrôle d'accès, pour obtenir les données sensibles. C'était la seule façon d'utiliserLISTEN
etNOTIFY
d'envoyer des données spécifiques avant d'ajouter des charges utiles.la source
AclMode
etpg_database_aclcheck
appeler quelque part, cela fait un moment que je n'ai pas regardé: /