Süper kullanıcı olmadan pg_stat_activity'de başka bir oturumun sorgusunu nasıl görüntüleyebilirim?


13

Postgresql 9.2 veritabanım var. Bu veritabanında iki kullanıcı oluşturulur. Süper kullanıcı olarak aşağıdaki sorguyu gerçekleştirdiğimde, her şeyi görebiliyorum.

select * from pg_stat_activity

Ancak, süper kullanıcı olarak bağlanmadan aynı sonucu elde etmek mümkün müdür?

Bir süper kullanıcının görebileceği sonuçları elde etmek için hangi ayrıcalığı / rolü vermeliyim?


Bu noktada, hibe verme hakkı yoktur, süper kullanıcı için kodlanmıştır. Bu, son zamanlarda posta listesinde tartışıldı ve birisi üzerinde çalışmak için zaman bulursa 9.5'te değişebilir.
Craig Ringer

Yanıtlar:


21

Bu noktada, hibe verme hakkı yoktur, süper kullanıcı için kodlanmıştır. Bu, son zamanlarda posta listesinde tartışıldı ve birisi üzerinde çalışmak için zaman bulursa 9.5'te değişebilir.

Geçici bir çözüm olarak, SECURITY DEFINERsüper kullanıcının sahip olduğu ve istediğiniz sorguyu çalıştıran bir işlev oluşturabilirsiniz . Bu, süper kullanıcı olmayanların pg_stat_activityişlevi çağırarak içeriğini görmelerine olanak tanır .

Örneğin, bir süper kullanıcı olarak çalıştırın:

CREATE FUNCTION get_sa() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;

CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa();

GRANT SELECT ON pg_stat_activity_allusers TO public;

Ücretsiz erişimin pg_stat_activitybir nedenle kısıtlandığını unutmayın . Diğer kişilerin sorgularından hassas bilgileri gizlemek mümkündür - örneğin başka bir kullanıcının pgcrypto kullanıp kullanmadığını düşünün. publicSize hak vermek yerine, bunları yalnızca belirli bir kullanıcıya veya izleme için yedek kullanıcı olarak görev yapacak bir role vermelisiniz.


Teşekkürler! SUPERUSER vermeden bir monitör hesabına pg_stat_activity'den okuma izni vermeyi anlamaya çalışıyordum.
epic_fil

3

PostgreSQL 10 ile başlayarak pg_read_all_statsistediğiniz sonuca ulaşmak için rol verebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.