监听/通知权限


9

我有一个单一的postgres数据库,有两个用户。爱丽丝和鲍勃。

我希望能够在NOTIFY alice_channel 'sensitive data'不让Bob偷偷摸摸的情况下进行操作LISTEN,只需猜测频道名称为“ alice_channel”即可。

在实践中,频道名称很难猜测,但是这是安全通过朦胧的最好的。

我是否认为没有办法阻止数据库用户使用(滥用)LISTEN&是正确的NOTIFY吗?似乎没有可以授予或撤销的任何关联特权。

这是死胡同吗?


我不知道一种排除用户收听的方法。但是,如果您像选择安全密码一样为频道选择一个名称,这是否可行?
Erwin Brandstetter

是的,这就是我目前正在做的事情(使用较大的随机字符串),但是感觉很脏而且很有限。有一些很酷的事情我可以做LISTEN/ NOTIFY我是否可以锁定下来一点。从目前的角度来看,这是一个相当粗略的过程:“请客户端重新轮询您可能需要的所有数据”功能。
克里斯·法米洛

我只是想知道自从回答以来情况是否发生了变化。你有能力实施一些东西吗?
Phill Pafford

如果您不信任自己的应用程序,则不应让它们进入。我认为它在生产系统中已走到尽头。虽然有人建议相关的私人。postgresql.org/message-id/51CC98FB.9040700%40agliodbs.com
Anssi,

Answers:


4

LISTEN和没有权限NOTIFY。直到在较新的版本中引入了对通知有效负载的支持之后,才有意义。

如果要使用访问控制,请使用所需的信息创建一个表,然后发送一个NOTIFY为空或仅包含该表主键的表。SELECT表中感兴趣的行(可以具有访问控制)来获取敏感数据。在添加有效负载之前,这曾经是使用LISTENNOTIFY发送特定数据的唯一方法。


谢谢克雷格,我也这么想。我可能会看一下源代码,看看实现起来会有多困难,但是我猜想它将需要一个全新的数据库级别AclModepg_database_aclcheck调用某个地方,
距离
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.