Eu tenho um único banco de dados postgres, com dois usuários; Alice e Bob.
Eu gostaria de poder fazer isso NOTIFY alice_channel 'sensitive data'
sem Bob ser capaz de entrar furtivamente LISTEN
apenas supondo que o nome do canal seja 'alice_channel'.
Na prática, os nomes dos canais são muito difíceis de adivinhar, mas isso é segurança através da obscuridade, na melhor das hipóteses.
Estou certo em acreditar que não há como impedir que um usuário do banco de dados use (abusando) LISTEN
& NOTIFY
? ou seja , não parece haver privilégios associados que possam ser concedidos ou revogados.
Isso é um beco sem saída?
postgresql
postgresql-9.2
Chris Farmiloe
fonte
fonte
LISTEN
/NOTIFY
se eu pudesse travar um pouco. Do jeito que está, é um "puxão de mão" para que o cliente refaça a pesquisa de todos os dados de que você 'precisa' precisar.Respostas:
Não há permissões para
LISTEN
eNOTIFY
. Não faria sentido ter até que o suporte para cargas úteis de notificação fosse introduzido em versões mais recentes.Se você deseja controle de acesso, crie uma tabela com as informações desejadas e envie uma
NOTIFY
que esteja vazia ou que não tenha nada além de uma chave primária para essa tabela.SELECT
as linhas de interesse da tabela, que podem ter controle de acesso, para obter os dados confidenciais. Essa costumava ser a única maneira de usarLISTEN
eNOTIFY
enviar dados específicos antes da adição de cargas úteis.fonte
AclMode
e umapg_database_aclcheck
ligação para algum lugar, já faz um tempo desde que eu olhei: /