LISTEN / NOTIFY特権


9

私はpostgresデータベースを1つ持ち、2人のユーザーがいます。アリスとボブ。

NOTIFY alice_channel 'sensitive data'ボブがLISTENチャネル名が「alice_channel」であると推測するだけでこっそりと侵入することなく、できるようにしたいと思います。

実際には、チャネル名を推測すること非常に困難ですが、これはせいぜいあいまいさによるセキュリティです。

データベースユーザーがLISTEN&を使用する(乱用する)のを防ぐ方法はないと私は信じていますNOTIFYか?つまり、付与または取り消すことができる関連する特権はないようです。

これは行き止まりですか?


ユーザーをリッスンから除外する方法がわかりません。しかし、セキュリティで保護されたパスワードを選択するようにチャネルの名前を選択した場合、これでうまくいきませんか?
Erwin Brandstetter 2013年

ええ、それは私が現在(大きなランダムな文字列を使用して)やっていることですが、それは汚いと感じ、かなり制限があります。私ができるかなりクールなことがいくつかありますLISTEN/ NOTIFYそれを少しロックすることができれば。現状では、「クライアントが必要とするすべてのデータを再ポーリングするように要求する」というかなり細かい機能です。
Chris Farmiloe 2013年

これが回答されてから状況が変わったかどうか知りたいだけでした。何か実装できましたか?
Phill Pafford 2014

アプリを信頼できない場合は、許可しないでください。本番システムでは行き止まりだと思います。ただし、関連する公民権についての提案もある。postgresql.org/message-id/51CC98FB.9040700%40agliodbs.com
Anssi

回答:


4

LISTENおよびに対する権限がありませんNOTIFY。より最近のバージョンで通知ペイロードのサポートが導入されるまで、何の意味もありませんでした。

アクセス制御が必要な場合は、必要な情報を使用してテーブルを作成し、NOTIFY空の、またはそのテーブルの主キーのみを含むテーブルを送信します。機密データを取得するために、アクセス制御持つことできるSELECTテーブルからの対象の行。これは、ペイロードが追加される前に特定のデータを使用および送信する唯一の方法でした。LISTENNOTIFY


クレイグに感謝します。私はソースでかいま見を取り、それを実装するだろういかに難しいか見るが、私はそれが完全に新しいデータベース・レベルが必要になります推測しているかもしれないAclModepg_database_aclcheck私は見てきたので、それがしばらくしていると、呼どこかを:/
クリスFarmiloe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.