У меня есть одна база данных postgres с двумя пользователями; Алиса и Боб.
Я хотел бы быть в состоянии обойтись NOTIFY alice_channel 'sensitive data'
без Боба, способного подкрадываться, LISTEN
просто предполагая, что название канала - «alice_channel».
На практике названия каналов являются очень трудно угадать, но это безопасность через неизвестность , в лучшем случае .
Правильно ли я считаю, что нет способа предотвратить использование (злоупотребление) пользователем базы данных LISTEN
& NOTIFY
? то есть не существует никаких связанных привилегий, которые могут быть предоставлены или отозваны.
Это тупик?
postgresql
postgresql-9.2
Крис Фармилое
источник
источник
LISTEN
/NOTIFY
если бы я мог немного их заблокировать. В его нынешнем виде это довольно укоренившееся «напишите клиенту, чтобы он повторно опросил все данные, которые вам могут« понадобиться ».Ответы:
Нет разрешений на
LISTEN
иNOTIFY
. Не было бы смысла иметь их до тех пор, пока в более поздних версиях не будет включена поддержка уведомлений.Если вам нужен контроль доступа, создайте таблицу с нужной вам информацией, а затем отправьте
NOTIFY
пустую или не содержащую ничего, кроме первичного ключа для этой таблицы.SELECT
интересующие строки из таблицы, которые могут иметь контроль доступа, для получения конфиденциальных данных. Раньше это был единственный способ использоватьLISTEN
иNOTIFY
отправлять определенные данные до того, как были добавлены полезные данные.источник
AclMode
иpg_database_aclcheck
вызов куда-нибудь, я давно уже не смотрел: /