Ich habe eine einzelne Postgres-Datenbank mit zwei Benutzern. Alice und Bob.
Ich würde gerne in der Lage sein, dies zu tun, NOTIFY alice_channel 'sensitive data'
ohne dass Bob sich LISTEN
einschleichen kann, indem er einfach vermutet, dass der Kanalname 'alice_channel' ist.
In der Praxis wird die Kanalnamen sind sehr schwer zu erraten, aber das ist Sicherheit durch Unklarheit am besten.
Habe ich Recht, wenn ich glaube, dass es keine Möglichkeit gibt, einen Datenbankbenutzer daran zu hindern, LISTEN
& zu verwenden (zu missbrauchen) NOTIFY
? dh es scheint keine zugehörigen Berechtigungen zu geben, die gewährt oder widerrufen werden können.
Ist das eine Sackgasse?
postgresql
postgresql-9.2
Chris Farmiloe
quelle
quelle
LISTEN
/NOTIFY
wenn ich es ein bisschen abschließen könnte. So wie es aussieht, ist es eine ziemlich körnige Funktion, die einen Client dazu bringt, alle Daten, die Sie möglicherweise benötigen, erneut abzufragen.Antworten:
Es gibt keine Berechtigungen für
LISTEN
undNOTIFY
. Es wäre nicht sinnvoll gewesen, eine zu haben, bis die Unterstützung für Benachrichtigungsnutzdaten in neueren Versionen eingeführt wurde.Wenn Sie die Zugriffssteuerung wünschen, erstellen Sie eine Tabelle mit den gewünschten Informationen und senden Sie dann eine Tabelle
NOTIFY
, die leer ist oder nur einen Primärschlüssel für diese Tabelle enthält.SELECT
die interessierenden Zeilen aus der Tabelle, die über eine Zugriffssteuerung verfügen können, um die vertraulichen Daten abzurufen. Dies war früher die einzige Möglichkeit , bestimmte Daten zu verwendenLISTEN
undNOTIFY
zu senden, bevor Nutzdaten hinzugefügt wurden.quelle
AclMode
undpg_database_aclcheck
irgendwo anrufen. Es ist eine Weile her, seit ich