Privilégios de OUVIR / NOTIFICAR


9

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 LISTENapenas 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?


Não sei como excluir usuários de ouvir. Mas se você escolher um nome para o canal, como escolheria uma senha segura, isso não funcionaria?
Erwin Brandstetter

Sim, é o que estou fazendo no momento (usando grandes seqüências aleatórias), mas parece sujo e é bastante limitador. Existem algumas coisas bem legais com as quais eu poderia fazer LISTEN/ NOTIFYse 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.
22413 Chris Farmiloe

Eu só queria saber se as coisas mudaram desde que isso foi respondido. Você conseguiu implementar alguma coisa?
Phill Pafford

Se você não pode confiar em seus aplicativos, não deve deixá-los entrar. Acho que é um beco sem saída no sistema de produção. Houve uma proposta para privs relacionados. postgresql.org/message-id/51CC98FB.9040700%40agliodbs.com
Anssi

Respostas:


4

Não há permissões para LISTENe NOTIFY. 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 NOTIFYque esteja vazia ou que não tenha nada além de uma chave primária para essa tabela. SELECTas linhas de interesse da tabela, que podem ter controle de acesso, para obter os dados confidenciais. Essa costumava ser a única maneira de usar LISTENe NOTIFYenviar dados específicos antes da adição de cargas úteis.


Obrigado Craig, pensei tanto. Eu posso dar uma olhada na fonte e ver como será difícil implementar, mas acho que exigirá um nível de banco de dados completamente novo AclModee uma pg_database_aclcheckligação para algum lugar, já faz um tempo desde que eu olhei: /
Chris Farmiloe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.