Saya memiliki database postgres tunggal, dengan dua pengguna; Alice dan Bob.
Saya ingin dapat melakukan NOTIFY alice_channel 'sensitive data'
tanpa Bob dapat secara diam-diam LISTEN
hanya dengan menebak bahwa nama salurannya adalah 'alice_channel'.
Dalam prakteknya nama-nama channel yang sangat sulit ditebak, tapi ini adalah keamanan melalui ketidakjelasan di terbaik.
Apakah saya benar karena meyakini bahwa tidak ada cara untuk mencegah pengguna basis data menggunakan (menyalahgunakan) LISTEN
& NOTIFY
? yaitu tidak ada hak istimewa terkait yang dapat diberikan atau dicabut.
Apakah ini jalan buntu?
postgresql
postgresql-9.2
Chris Farmiloe
sumber
sumber
LISTEN
/NOTIFY
jika saya bisa menguncinya sedikit. Seperti yang sudah ada, itu agak berbelit-belit "menyodok klien untuk melakukan polling ulang untuk semua data yang Anda 'butuhkan' fitur".Jawaban:
Tidak ada izin pada
LISTEN
danNOTIFY
. Tidak masuk akal untuk memilikinya sampai dukungan untuk pemberitahuan muatan diperkenalkan dalam versi yang lebih baru.Jika Anda ingin kontrol akses, buat tabel dengan informasi yang Anda inginkan dan kemudian kirim
NOTIFY
yang kosong atau tidak memiliki apa-apa selain kunci utama untuk tabel di dalamnya.SELECT
baris yang menarik dari tabel, yang dapat memiliki kontrol akses, untuk mendapatkan data sensitif. Ini dulunya satu-satunya cara untuk menggunakanLISTEN
danNOTIFY
mengirim data tertentu sebelum muatan ditambahkan.sumber
AclMode
danpg_database_aclcheck
menelepon ke suatu tempat, sudah lama sejak saya melihat: /