Saya memiliki database Postgresql 9.2. Dua pengguna dibuat di database ini. Ketika saya melakukan permintaan berikut sebagai pengguna super, saya bisa melihat semuanya.
select * from pg_stat_activity
Namun, mungkinkah mencapai hasil yang sama tanpa terhubung sebagai superuser?
Hak istimewa / peran apa yang harus saya berikan / ciptakan untuk mendapatkan hasil yang bisa dilihat oleh pengguna super?
postgresql
postgresql-9.2
permissions
role
Stephan
sumber
sumber
Jawaban:
Pada titik ini, tidak ada hak untuk memberikan, itu dikodekan ke superuser. Itu telah dibahas di milis akhir-akhir ini, dan dapat berubah menjadi 9,5 jika seseorang menemukan waktu untuk mengerjakannya.
Sebagai solusinya, Anda bisa membuat
SECURITY DEFINER
fungsi yang dimiliki oleh superuser, dan menjalankan kueri yang Anda inginkan. Ini akan memungkinkan non-pengguna super untuk melihat kontenpg_stat_activity
dengan memanggil fungsi.Misalnya, jalankan sebagai pengguna super:
Perhatikan bahwa akses gratis ke
pg_stat_activity
dibatasi karena suatu alasan. Mungkin untuk mengintip informasi sensitif dari pertanyaan orang lain - bayangkan misalnya jika pengguna lain menggunakan pgcrypto. Daripada memberikan hak kepadapublic
Anda, Anda harus memberikannya hanya kepada pengguna atau peran tertentu yang bertindak sebagai pengguna pengganti untuk pemantauan.sumber
Dimulai dengan PostgreSQL 10 Anda dapat memberikan peran
pg_read_all_stats
untuk mencapai hasil yang diinginkan.sumber